> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/hi/self-hosted/enterprise/deployment-manager.md).

# Deployment Manager

## के बारे में

Roboflow Deployment Manager आपको edge devices पर computer vision models को आसानी से set up, deploy, और manage करने देता है। अपने model को train करने और एक workflow बनाने के बाद, यह deployments को scale करने के लिए एक all-in-one solution प्रदान करता है।

आप Deployment Manager का उपयोग निम्न के लिए कर सकते हैं:

1. नए devices को सेट अप करें, जिनमें [Roboflow Inference सर्वर](/deployment/hi/self-hosted/self-hosted.md).
2. डिप्लॉयमेंट में उपयोग के लिए camera streams कॉन्फ़िगर करें।
3. तैनात करें [वर्कफ़्लोज़](https://docs.roboflow.com/workflows) edge पर।
4. तैनात किए गए edge devices के लिए logs, stream status, और telemetry मॉनिटर करें।

{% hint style="warning" %}
Deployment Manager विशेष रूप से Enterprise ग्राहकों के लिए उपलब्ध है। [Roboflow बिक्री टीम से संपर्क करें](https://roboflow.com/sales) इस feature के बारे में और यह आपके deployments को scale पर manage करने में कैसे उपयोग किया जा सकता है, यह जानने के लिए।
{% endhint %}

<figure><img src="/files/b1d0a6c2b060e2125a9ef57ddaa1e3fe8af0b251" alt=""><figcaption></figcaption></figure>

### मुख्य आवश्यकताएँ:

Deployment Manager Roboflow-supported hardware के लिए बनाया गया है:

* समर्थित: Roboflow के माध्यम से खरीदा गया hardware
* असमर्थित (अपने जोखिम पर उपयोग करें): NVIDIA Jetson, Debian-based Linux चलाने वाली x86 मशीनें जिनमें NVIDIA GPUs हों
* अभी समर्थित नहीं: Mac या Windows-आधारित systems

सेटअप और निरंतर संचालन के लिए devices को इंटरनेट से जुड़ा होना चाहिए, साथ ही remote management और monitoring के लिए Roboflow तक लगातार पहुँच होनी चाहिए।

## गाइड्स

### सेटअप

इसे फॉलो करें [सेटअप](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up.md) गाइड्स ताकि एक device को online किया जा सके और Workflows चलाए जा सकें।

| गाइड                                                                                                                          | विवरण                                                                    |
| ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| [हार्डवेयर आवश्यकताएँ](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up/hardware-requirements.md)          | समर्थित hardware, cameras, network, और outbound traffic की आवश्यकताएँ।   |
| [डिवाइस जोड़ें](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up/add-a-device.md)                          | एक नया edge device provision करें और उसे अपने account में register करें। |
| [स्ट्रीम जोड़ें](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up/add-a-stream.md)                         | एक camera stream कॉन्फ़िगर करें जो एक Workflow चलाती है।                 |
| [डिवाइस अलर्ट सेट अप करें](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up/set-up-device-alerts.md)       | connectivity, disk, और FPS issues के लिए email alerts सक्षम करें।        |
| [Setup Maintenance Windows](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up/setup-maintenance-windows.md) | यह schedule करें कि deploy-affecting changes कब प्रभावी हों।             |

### परिवर्तन करना

यह [परिवर्तन करना](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes.md) गाइड्स setup के बाद devices और streams को अपडेट करने, reconfigure करने, और हटाने को कवर करती हैं।

| गाइड                                                                                                                                               | विवरण                                                                              |
| -------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| [Device Configuration अपडेट करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/update-device-configuration.md)          | device settings, service versions, और अतिरिक्त services का प्रबंधन करें।           |
| [डिवाइस नेटवर्क कॉन्फ़िगर करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/configure-device-network.md)               | क्लाउड से IP addressing, gateway, DNS, और hostname सेट करें।                       |
| [AI1 Camera Settings कॉन्फ़िगर करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/configure-ai1-camera-settings.md)     | exposure, gain, focus, और अन्य AI1 camera settings को live tune करें।              |
| [एक Camera के लिए Static IP सेट करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/set-camera-static-ip.md)             | एक GigE Basler या Lucid camera को persistent static IP असाइन करें।                 |
| [PoE Port का Soft Reset करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/soft-reset-poe-port.md)                      | अटकी हुई camera links को पुनर्प्राप्त करने के लिए एक PoE port का power-cycle करें। |
| [एक Stream को Pause और Resume करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/stop-a-stream.md)                      | चल रही stream को अस्थायी रूप से pause करें और बाद में resume करें।                 |
| [Stream Trigger करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/trigger-a-stream.md)                                 | Triggered stream के विरुद्ध मांग पर एक Workflow चलाएँ।                             |
| [Stream Terminate करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/delete-a-stream.md)                                | एक stream और उसके configuration को स्थायी रूप से हटाएँ।                            |
| [Deployment Manager को फिर से deploy करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/redeploy-deployment-manager.md) | विफलता के बाद किसी device की configuration को पुनर्प्राप्त करें।                   |
| [एक Device हटाएँ](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/delete-a-device.md)                                      | जिस device का आप अब उपयोग नहीं करते, उसे स्थायी रूप से हटाएँ।                      |
| [Deployment Manager के लिए API Keys](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/api-keys-for-device-manager.md)       | device API keys कैसे generate, scope, और revoke की जाती हैं।                       |

### Monitoring

यह [Monitoring](/deployment/hi/self-hosted/enterprise/deployment-manager/monitoring.md) गाइड्स दिखाती हैं कि stream status, logs, resources, और Event Store health कैसे जाँचें।

| गाइड                                                                                                                       | विवरण                                                            |
| -------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| [एक Stream देखें](/deployment/hi/self-hosted/enterprise/deployment-manager/monitoring/view-a-stream.md)                    | एक stream की status, latest frame, और Workflow details देखें।    |
| [Device Logs देखें](/deployment/hi/self-hosted/enterprise/deployment-manager/monitoring/view-device-logs.md)               | Roboflow services से logs खोजें, filter करें, और download करें।  |
| [Resource Monitor देखें](/deployment/hi/self-hosted/enterprise/deployment-manager/monitoring/view-the-resource-monitor.md) | disk, memory, CPU, GPU, और service container health मॉनिटर करें। |
| [Event Store Status देखें](/deployment/hi/self-hosted/enterprise/deployment-manager/monitoring/view-event-store-status.md) | Event Store usage, backup progress, और history मॉनिटर करें।      |

## HTTP API

Deployment Manager API आपको अपने Roboflow Deployment Manager (RFDM) devices को programmatically monitor और manage करने देता है।

सभी endpoints इस के अंतर्गत mounted हैं `/:workspace/devices/v2` public API host पर (`https://api.roboflow.com`). Read endpoints के लिए एक [scoped API key](https://docs.roboflow.com/reference/authentication/authentication/scoped-api-keys) की आवश्यकता होती है `device:read` scope; create endpoint को आवश्यक है `device:update`. जिन Workspace API keys की कोई explicit scopes सूची नहीं है, उन्हें implicitly सभी scopes दिए जाते हैं (legacy behavior); जिन keys में एक explicit `scopes` array शामिल है उसमें संबंधित scope होना चाहिए।

Deployment Manager API के साथ, आप यह कर सकते हैं:

* [Devices की सूची बनाएं और प्राप्त करें](#list-and-get-devices)
* [एक Device बनाएँ](#create-a-device)
* [Device Config](#device-config)
* [Device Streams](#device-streams)
* [Device Logs और Telemetry](#device-logs-and-telemetry)
* [Device Events](#device-events)

### प्रमाणीकरण

सभी endpoints किसी workspace API key को इनमें से किसी एक के माध्यम से स्वीकार करते हैं:

* Query string: `?api_key=YOUR_API_KEY`
* Header: `Authorization: Bearer YOUR_API_KEY`

#### Device-scoped API keys

किसी विशिष्ट device के लिए minted की गई API keys (उदाहरण के लिए, install के दौरान RFDM द्वारा) केवल उसी device तक सीमित होती हैं। वे केवल उन routes को call कर सकती हैं जिनके `:deviceId` path parameter key के bound device के बराबर हो। उन्हें **403** workspace-व्यापी list और create endpoints पर, और किसी भी `:deviceId` path पर जो मेल नहीं खाता,

### Cross-workspace isolation

एक workspace API key केवल उन devices को read या modify कर सकती है जो उसके workspace से संबंधित हैं। किसी अलग workspace के स्वामित्व वाले device id के लिए requests **404**404 लौटाती हैं, भले ही id अन्यथा valid हो।

### त्रुटियाँ

| स्थिति | अर्थ                                                                                                                                                                                                                                                                            |
| ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 400    | अमान्य query parameter (अज्ञात `time_period`, गलत प्रारूप वाला cursor या date, अमान्य `direction`, आदि) या अमान्य request body।                                                                                                                                                 |
| 401    | गुम या अमान्य API key।                                                                                                                                                                                                                                                          |
| 403    | Device-scoped API key जो किसी अन्य device को target कर रही हो, workspace-व्यापी list/create routes, duplication के दौरान किसी अन्य workspace से source device, या feature-gated request अस्वीकृत (उदाहरण के लिए, AI1 creation या `offline_mode` workspace के लिए enabled नहीं). |
| 404    | Device, stream, config, या source device नहीं मिला। किसी अन्य workspace के स्वामित्व वाले device ids के लिए read requests भी 404 लौटाती हैं।                                                                                                                                    |
| 429    | Rate limit पार हो गई। Logs प्रति IP प्रति minute 5 requests और वैश्विक रूप से प्रति minute 50 requests तक सीमित हैं; telemetry reads प्रति device प्रति minute 60 requests तक सीमित हैं, 10 seconds में 10-request burst के साथ।                                                |

Error responses दो में से एक shape का उपयोग करती हैं:

* Handler-level errors (आमतौर पर handlers से आने वाले 400, 403, 404, और 429) लौटाती हैं `{ "error": "<message>" }`.
* Authentication और workspace-validation failures (आमतौर पर 401) एक structured `त्रुटि` object लौटाते हैं: `{ "error": { "message": "...", "status": 401, "type": "OAuthException", "hint": "..." } }`.

logs rate limiter इसके अतिरिक्त trigger होने पर एक plain string body (JSON नहीं) भी लौटाता है **429**.

### Devices की सूची बनाएं और प्राप्त करें

#### Devices की सूची बनाएं

workspace में पंजीकृत हर device की सूची बनाएं। Device-scoped API keys इस endpoint को call नहीं कर सकतीं और प्राप्त करती हैं **403**.

**आवश्यक स्कोप:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2" method="get" %}
[deployment-manager.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-0f39f7ff406338249e5d84d81b74fd17121abe81%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**उदाहरण अनुरोध**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2?api_key=$ROBOFLOW_API_KEY"
```

**उदाहरण प्रतिक्रिया**

```json
{
  "data": [
    {
      "id": "abc123",
      "name": "factory-floor-cam-1",
      "status": "online",
      "last_heartbeat": "2026-04-28T12:00:00.000Z",
      "platform": "Linux",
      "platform_release": "5.10.104-tegra",
      "platform_version": "#1 SMP PREEMPT ...",
      "architecture": "aarch64",
      "hostname": "jetson-01",
      "rfdm_version": "1.2.3",
      "type": "jetson",
      "hardware": {
        "processor": "aarch64",
        "gpu": null,
        "total_memory_mb": null,
        "total_disk_space_mb": 124426534912
      },
      "tags": ["production", "line-3"],
      "created_at": "2026-01-15T08:30:00.000Z"
    }
  ]
}
```

यह `स्थिति` फ़ील्ड है `ऑनलाइन` यदि पिछले 5 मिनटों के भीतर heartbeat प्राप्त हुआ हो, `ऑफ़लाइन` यदि वह इससे पुराना हो, या `अज्ञात` यदि कभी कोई heartbeat दर्ज नहीं किया गया हो। नए provision किए गए devices अपनी पहली heartbeat से पहले सूची में दिखाई देते हैं; तब तक `स्थिति` है `अज्ञात` और monitoring से प्राप्त अधिकांश fields `null`.

{% hint style="warning" %}
`hardware.total_disk_space_mb` device द्वारा report किया गया एक raw value है। बावजूद `_mb` suffix के, RFDM-reported devices वर्तमान में यह value bytes में लौटाते हैं (उदाहरण के लिए `124426534912` लगभग 124 GB की disk के लिए)। unit को device-defined मानें।
{% endhint %}

#### Device प्राप्त करें

id द्वारा एक single device retrieve करें। लौटाता है **404** यदि device मौजूद नहीं है या किसी अलग workspace का है।

**आवश्यक स्कोप:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}" method="get" %}
[deployment-manager.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-0f39f7ff406338249e5d84d81b74fd17121abe81%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**उदाहरण अनुरोध**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}?api_key=$ROBOFLOW_API_KEY"
```

response body list endpoint के एक single item से मेल खाती है (किसी `data` array में लिपटी नहीं होती).

### एक Device बनाएँ

अपने workspace में एक नया device बनाएं और उसे install करने के लिए आवश्यक identifiers लौटाएं। Device-scoped API keys इस endpoint को call नहीं कर सकतीं और प्राप्त करती हैं **403**.

**आवश्यक स्कोप:** `device:update`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2" method="post" %}
[deployment-manager.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-0f39f7ff406338249e5d84d81b74fd17121abe81%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**उदाहरण अनुरोध**

```bash
curl -X POST "https://api.roboflow.com/{workspace}/devices/v2?api_key=$ROBOFLOW_API_KEY" \\
  -H "Content-Type: application/json" \
  -d '{"device_name": "factory-floor-cam-2", "device_type": "edge"}'
```

**उदाहरण प्रतिक्रिया**

```json
{
  "deviceId": "abc456",
  "installId": "inst_xyz789"
}
```

लौटाए गए `installId` का उपयोग करके device को Roboflow Deployment Manager installer के साथ bootstrap करें।

#### AI1 devices पर नोट्स

* सेटिंग `device_type` को `"ai1"` के लिए workspace में `deviceAio` feature enabled होना आवश्यक है, अन्यथा request लौटाती है **403**.
* `offline_mode` केवल AI1 devices के लिए मान्य है, उन workspaces पर जिनमें `roboflowLiteMode`। अन्य combinations लौटाते हैं **400** या **403**.
* उन AI1 devices के लिए जो किसी मौजूदा device की duplication नहीं कर रहे हैं और कोई `workflow_id`नहीं निर्दिष्ट करते हैं, slugified `device_name` में कम से कम एक alphanumeric character होना चाहिए, अन्यथा request लौटाती है **400**.
* जब AI1 + offline mode लागू होता है, तो response में एक `offlineProvisioningQrPayload` field भी शामिल होता है जो offline provisioning के QR payload को encode करता है।

#### Duplication पर नोट्स

जब `sourceDeviceId` दिया गया हो, तो नया device source device के config की एक copy से बनाया जाता है। source device को request के समान workspace से संबंधित होना चाहिए, अन्यथा request लौटाती है **403**. एक non-existent `sourceDeviceId` लौटाता है **404**.

### Device Config

#### Workspace Default Config प्राप्त करें

workspace-level default device configuration लौटाता है। यह base default config है जिसमें workspace का config patch (यदि कोई हो) मिला हुआ है। इसे एक नए device को provision करते समय template के रूप में उपयोग करें, इससे पहले कि आप `POST /:workspace/devices/v2`.

**आवश्यक स्कोप:** `device:read`

{% hint style="info" %}
यह एक workspace-व्यापी endpoint है। Device-scoped API keys प्राप्त करेंगी **403** क्योंकि path में कोई `:deviceId` नहीं है।
{% endhint %}

**उदाहरण अनुरोध**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/default-config?api_key=$ROBOFLOW_API_KEY"
```

**उदाहरण प्रतिक्रिया**

```json
{
  "config": {
    "version": "1.0.0",
    "config": {
      "inference": { "confidence": 0.7, "threshold": 0.3 },
      "device_type": "edge"
    },
    "services": {}
  },
  "patch": {
    "config": {
      "inference": { "confidence": 0.7 }
    }
  }
}
```

* `कॉन्फ़िग` -- सम्मिलित परिणाम (base default + workspace patch).
* `पैच` -- workspace का संग्रहीत patch. खाली object `{}` यदि workspace में कोई custom patch नहीं है।

#### Config प्राप्त करें

device का वर्तमान runtime configuration लौटाता है। response shape Roboflow Deployment Manager (RFDM) config spec से मेल खाती है।

**आवश्यक स्कोप:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/config" method="get" %}
[deployment-manager.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-0f39f7ff406338249e5d84d81b74fd17121abe81%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**उदाहरण अनुरोध**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/config?api_key=$ROBOFLOW_API_KEY"
```

response पूर्ण configuration document है और इसमें (लेकिन सीमित नहीं) निम्न top-level fields शामिल हैं:

* `device_id`, `device_name`
* `workspace_id`
* `version`, `last_updated`, `last_updated_at`, `created_at`
* `कॉन्फ़िग` (device का runtime config tree, जिसमें `device_type`, `stream`और `offline_mode`)
* `services` (per-service container definitions जिनमें `छवि`, `volumes`और `environment_variables`)
* `environment_variables` (top-level environment variables, के अतिरिक्त per-service ones जो `services`)
* `production_mode`, `last_automatic_update`, `updated`, `updated_by`, `$schema`, `id`

RFDM द्वारा लिखे गए अतिरिक्त fields भी दिखाई दे सकते हैं। response shape को open-ended मानें और केवल उन fields पर निर्भर करें जिनकी आपको आवश्यकता है।

लौटाता है **404** यदि device मौजूद नहीं है या आपके workspace से संबंधित नहीं है, या यदि उसके लिए कोई configuration संग्रहीत नहीं है।

{% hint style="warning" %}
response में पूरी configuration as authored शामिल है। Per-service `environment_variables` और config में embedded किसी भी integration credentials बिना redaction के लौटाए जाते हैं। response body को sensitive मानें और इसे plaintext में log न करें।
{% endhint %}

#### Config History

किसी device के लिए पिछली configuration revisions की सूची बनाएं, newest first।

**आवश्यक स्कोप:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/config/history" method="get" %}
[deployment-manager.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-0f39f7ff406338249e5d84d81b74fd17121abe81%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**उदाहरण अनुरोध**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/config/history?api_key=$ROBOFLOW_API_KEY&limit=10"
```

**उदाहरण प्रतिक्रिया**

```json
{
  "data": [
    {
      "revision_id": "rev_abc",
      "created_at": "2026-04-20T14:30:00.000Z",
      "created_by": "user_123"
    }
  ],
  "pagination": {
    "next_cursor": "...",
    "has_more": true,
    "limit": 10
  }
}
```

एक गलत प्रारूप वाला `cursor` लौटाता है **400** के साथ `{"error": "Invalid cursor format"}`.

### Device Streams

#### Streams की सूची बनाएं

किसी device पर configured हर stream की सूची बनाएं।

**आवश्यक स्कोप:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/streams" method="get" %}
[deployment-manager.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-0f39f7ff406338249e5d84d81b74fd17121abe81%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**उदाहरण अनुरोध**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/streams?api_key=$ROBOFLOW_API_KEY"
```

**उदाहरण प्रतिक्रिया**

```json
{
  "data": [
    {
      "id": "stream_abc",
      "name": "entrance-cam",
      "status": "running",
      "pipeline_id": "pipe_123",
      "workflow_id": "wf_456",
      "source": "rtsp://192.168.1.100:554/live",
      "started_at": "2026-04-28T10:00:00.000Z",
      "last_event_at": "2026-04-28T12:30:00.000Z",
      "camera_fps": 29.97,
      "inference_fps": 12.4,
      "sharpness": 0.82,
      "error": null
    }
  ]
}
```

**Source sanitization**

यह `स्रोत` फ़ील्ड को हमेशा लौटाए जाने से पहले एक sanitizer से गुज़ारा जाता है:

* यदि source एक URL है, तो कोई भी `userinfo` (`scheme://user:pass@host/...`) हटा दिया जाता है। उदाहरण के लिए, `rtsp://admin:password@192.168.1.100:554/live` बन जाता है `rtsp://192.168.1.100:554/live`.
* यदि source एक object है, तो जिन keys का lowercase नाम है `password`, `passwd`, `secret`, `api_key`, `apikey`, `auth`, `authorization`, `token`या `access_token` response से हटा दिए जाते हैं। अन्य सभी keys बरकरार रखी जाती हैं।
* Arrays और nested objects को recursively sanitize किया जाता है।

#### Stream प्राप्त करें

एक single stream retrieve करें। लौटाता है **404** यदि stream device पर मौजूद नहीं है, या यदि device मौजूद नहीं है या आपके workspace से संबंधित नहीं है।

**आवश्यक स्कोप:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/streams/{streamId}" method="get" %}
[deployment-manager.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-0f39f7ff406338249e5d84d81b74fd17121abe81%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**उदाहरण अनुरोध**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/streams/{streamId}?api_key=$ROBOFLOW_API_KEY"
```

response body list endpoint के एक single item से मेल खाती है (किसी `data` array में लिपटी नहीं होती).

### Device Logs और Telemetry

#### Logs

paginaged device logs लौटाता है।

**आवश्यक स्कोप:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/logs" method="get" %}
[deployment-manager.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-0f39f7ff406338249e5d84d81b74fd17121abe81%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**उदाहरण अनुरोध**

**Rate limit:** प्रति workspace प्रति minute 120 requests। Log reads और log ingest अलग rate-limit buckets का उपयोग करते हैं, इसलिए logs के लिए polling आपके ingest quota के विरुद्ध नहीं गिना जाएगा (और इसके विपरीत).

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/logs?api_key=$ROBOFLOW_API_KEY&limit=50"
```

**उदाहरण प्रतिक्रिया**

```json
{
  "data": [
    {
      "timestamp": "2026-04-28T12:01:00.000Z",
      "service": "inference",
      "severity": "INFO",
      "message": "Model loaded successfully"
    }
  ],
  "pagination": {
    "next_cursor": "2026-04-28T12:01:00.000Z",
    "has_more": true,
    "limit": 50
  }
}
```

**रेट सीमाएँ**

यह एंडपॉइंट दर-सीमित है **प्रति IP पता प्रति मिनट 5 अनुरोध** और **वैश्विक रूप से प्रति मिनट 50 अनुरोध**। अतिरिक्त अनुरोध लौटाते हैं **429**.

#### टेलीमेट्री

एक डिवाइस के लिए संकलित हार्डवेयर मेट्रिक्स (CPU, मेमोरी, डिस्क, GPU) और प्रति-स्ट्रीम FPS लौटाता है, जिन्हें एक निश्चित समय विंडो में समूहीकृत किया गया है।

**आवश्यक स्कोप:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/telemetry" method="get" %}
[deployment-manager.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-0f39f7ff406338249e5d84d81b74fd17121abe81%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**उदाहरण अनुरोध**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/telemetry?api_key=$ROBOFLOW_API_KEY&time_period=24h"
```

बकेट आकार प्रति समय अवधि के लिए निश्चित है:

| `time_period` | `bucket_interval` | `fill_interval_seconds` |
| ------------- | ----------------- | ----------------------- |
| `1h`          | `2 मिनट`          | 120                     |
| `24h`         | `30 मिनट`         | 1800                    |
| `7d`          | `4 घंटे`          | 14400                   |
| `14d`         | `8 घंटे`          | 28800                   |

**उदाहरण प्रतिक्रिया**

```json
{
  "time_period": "24h",
  "bucket_interval": "30 मिनट",
  "fill_interval_seconds": 1800,
  "buckets": [
    {
      "bucket_start": "2026-04-28T00:00:00.000Z",
      "cpu_pct": 42.5,
      "used_memory_mb": 3200,
      "total_memory_mb": 7860,
      "used_disk_space_mb": 15000,
      "total_disk_space_mb": 29000,
      "gpu_pct": 78.2
    }
  ]
}
```

जिस अनुरोधित विंडो में कोई टेलीमेट्री नहीं मिली, वे बकेट फिर भी लौटाए जाते हैं, और प्रत्येक मेट्रिक फ़ील्ड को `null`.

**रेट सीमाएँ**

यह एंडपॉइंट प्रति डिवाइस दर-सीमित है **प्रति मिनट 60 अनुरोध** के अतिरिक्त **10 सेकंड में 10 अनुरोध** बर्स्ट लिमिटर। अतिरिक्त अनुरोध लौटाते हैं **429**। वही प्रति-डिवाइस टेलीमेट्री कोटा डिवाइस के टेलीमेट्री ingest path के साथ साझा किया जाता है, इसलिए दुरुपयोगपूर्ण रीड्स उसी डिवाइस के ingest को प्रभावित कर सकती हैं।

### Device Events

डिवाइस और स्ट्रीम जीवनचक्र घटनाएँ लौटाता है (उदाहरण के लिए डिवाइस बूट, स्ट्रीम शुरू और बंद होना, त्रुटियाँ, कॉन्फ़िगरेशन परिवर्तन)।

**आवश्यक स्कोप:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/events" method="get" %}
[deployment-manager.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-0f39f7ff406338249e5d84d81b74fd17121abe81%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**उदाहरण अनुरोध**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/events?api_key=$ROBOFLOW_API_KEY&limit=50"
```

**उदाहरण प्रतिक्रिया**

```json
{
  "data": [
    {
      "id": "evt_abc123",
      "event": "device.boot",
      "entity_type": "device",
      "entity_id": "abc123",
      "event_description": "डिवाइस चालू हुआ",
      "error_code": null,
      "metadata": { "source": "boot-loop" },
      "device_timestamp": "2026-04-28 10:00:00",
      "server_timestamp": "2026-04-28 10:00:01",
      "event_end_timestamp": null
    }
  ],
  "pagination": {
    "next_cursor": "...",
    "prev_cursor": "...",
    "has_more": true,
    "limit": 50
  }
}
```

यह `device_timestamp`, `server_timestamp`और `event_end_timestamp` फ़ील्ड इस प्रकार स्वरूपित हैं `YYYY-MM-DD HH:MM:SS[.SSS]` UTC में। इस API के अन्य टाइमस्टैम्प की तरह इन्हें ISO-8601 में सामान्यीकृत नहीं किया जाता।

`event_end_timestamp` इन्हें epoch-zero string के रूप में भी लौटाया जा सकता है `"1970-01-01 00:00:00.000"` (के बजाय `null`) जब घटना के पास दर्ज अंत टाइमस्टैम्प नहीं होता।
