CDN
Your organization’s CDN delivers your uploaded videos from its own domain. The StreamOS team sets it up; these endpoints let you read its state and the traffic it served.
Read-only. Setting up the CDN, its domain, SSL, and turning it off or on are done by the StreamOS team. Videos you upload are sent with your CDN domain automatically while the CDN is active — there is nothing to pass yourself. Live streams do not go through the CDN.
Get your CDN
GET
/api/public/v1/cdn/Needs the view_video permission. cdn is null when your organization has no CDN yet.
curl
curl https://api.streamos.in/api/public/v1/cdn/ \ -H 'Authorization: Bearer sk_live_…'
Response — data.cdn
| Key | Type | Sample | Description |
|---|---|---|---|
| cdn_idoptional | string | acme-cdn-1 | Your CDN’s name. |
| statusoptional | string | active | pending, provisioning, awaiting_domain, active or failed. Only active serves traffic. |
| domainoptional | string | null | acme.streamos.media | The domain your videos are delivered from, once active. |
| revokedoptional | boolean | false | true while the CDN is turned off — for example when the plan has lapsed unpaid. It turns back on once the plan is paid. |
| revoked_byoptional | string | null | plan_lapsed | Why it is off: admin or plan_lapsed. Null while on. |
| ssloptional | boolean | true | Whether SSL (HTTPS) is attached to the domain. |
| ssl_statusoptional | string | null | …/certificates/streamos-media-wildcard-cert | The certificate in use, once SSL is attached. |
| ipv4, ipv6optional | string | null | 34.153.10.98 | The CDN’s addresses, once provisioned. |
| erroroptional | string | null | null | Set when setup failed. Contact StreamOS support if you see it. |
Get CDN usage
GET
/api/public/v1/cdn/usage/Needs the view_invoice permission — the same as the rest of your usage. One entry per UTC day.
Query
| Key | Type | Sample | Description |
|---|---|---|---|
| fromoptional | string | 2026-10-01 | First day, YYYY-MM-DD. Defaults to 29 days before to. |
| tooptional | string | 2026-10-31 | Last day, inclusive. Defaults to today. At most 366 days. |
curl
curl 'https://api.streamos.in/api/public/v1/cdn/usage/?from=2026-10-01&to=2026-10-31' \ -H 'Authorization: Bearer sk_live_…'
Response — data.usage.days[]
| Key | Type | Sample | Description |
|---|---|---|---|
| dayoptional | string | 2026-10-05 | The UTC day. |
| bandwidth_bytesoptional | string | "29573125533" | Bytes delivered, as a decimal string. |
| requestsoptional | string | "221184" | Requests served, as a decimal string. |
| cache_breakdownoptional | object | {"HIT": 161668, "MISS": 14819} | Requests by cache result. |
| requests_by_regionoptional | object | {"India": 151193} | Requests by region. |
| requests_by_continentoptional | object | {"Asia": 161453} | Requests by continent. |
Usage is collected once a night, so a day appears the following night. A missing day means it has not been collected yet — not that there was no traffic.