Odynlabs CDN — Edge
stream.odynlabs.xyz · public delivery endpoint
Nodesto1-e04 · Stockholm, SE
Statushealthy
Origin shieldsto1 → fra1
Authanonymous — read scope only
Uptime61d 04h
Edge metrics
2.4 Gbpsegress, 5 min avg
1.8krequests / sec
12 msp50 TTFB
94.2%cache hit, 24h
Cache policy
| Pattern | TTL | Behaviour |
| *.m3u8, *.mpd | 2s | Manifests revalidate every window; stale-while-revalidate 1s. |
| *.ts, *.m4s | 1y | Segments are content-addressed and served immutable. |
| *.vtt, *.srt | 1h | Subtitle tracks, revalidated against origin ETag. |
| poster.jpg, *.webp | 30d | Artwork, purged explicitly when an asset is replaced. |
Response
$ curl -I https://stream.odynlabs.xyz/a/7f3c91e0d2/seg-00412.m4s
HTTP/2 200
content-type: video/iso.segment
content-length: 1483920
cache-control: public, max-age=31536000, immutable
etag: "9c4f1b02e7a3"
x-cache: HIT
x-cache-node: sto1-e04
x-request-id: 8f0c1a44b9d27e01
age: 41207
Asset prefixes are opaque and rotate on every upload. Playback manifests
are signed and short-lived, so a copied link stops resolving once its window closes.
Purge
$ curl -X POST https://stream.odynlabs.xyz/v1/purge \
-H "Authorization: Bearer $ODYNLABS_TOKEN" \
--json {"prefix":"/a/7f3c91e0d2/"}
202 Accepted
{"queued":184,"propagation_eta_s":15}
Requires a token carrying the purge scope. Propagation is eventual
across edges — manifests clear first, segments follow.
Token scopes
| Scope | Grants |
| read | Fetch assets through the edge. Implicit for public prefixes. |
| purge | Invalidate cached prefixes across all edge nodes. |
| upload | Push to origin. Not accepted here — use the ingest endpoint. |
Edge locations
| Code | Location | State |
| sto1 | Stockholm, SE | healthy |
| hel1 | Helsinki, FI | healthy |
| fra1 | Frankfurt, DE | healthy |
| ams1 | Amsterdam, NL | healthy |
| waw1 | Warsaw, PL | healthy |
| lon1 | London, UK | degraded — reduced capacity |
Limits
Max object10 GiB
Included egress5 TB / month
Burst10 Gbps per account
Purge rate60 requests / minute