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

PatternTTLBehaviour
*.m3u8, *.mpd2sManifests revalidate every window; stale-while-revalidate 1s.
*.ts, *.m4s1ySegments are content-addressed and served immutable.
*.vtt, *.srt1hSubtitle tracks, revalidated against origin ETag.
poster.jpg, *.webp30dArtwork, 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

ScopeGrants
readFetch assets through the edge. Implicit for public prefixes.
purgeInvalidate cached prefixes across all edge nodes.
uploadPush to origin. Not accepted here — use the ingest endpoint.

Edge locations

CodeLocationState
sto1Stockholm, SEhealthy
hel1Helsinki, FIhealthy
fra1Frankfurt, DEhealthy
ams1Amsterdam, NLhealthy
waw1Warsaw, PLhealthy
lon1London, UKdegraded — reduced capacity

Limits

Max object10 GiB
Included egress5 TB / month
Burst10 Gbps per account
Purge rate60 requests / minute