Reference
HTTP API
Base URL https://api.master-c1.cdnmedia.download/v3 — bearer tokens, JSON in and out, and idempotency keys on every mutation.
$ curl -s https://api.master-c1.cdnmedia.download/v3/zones -H "Authorization: Bearer $T"
{"zones":[{"id":"z_8f21","hostname":"dl.example.com",
"shield":"eu-central","state":"active",
"egress_30d_bytes":4182903847112}],"cursor":null}
200 OK · 41 ms
Endpoints
GET/v3/zonesList zones with usage counters
POST/v3/zonesCreate a zone
GET/v3/zones/{id}Fetch one zone including its effective config
PATCH/v3/zones/{id}Update origin, shield or cache policy
DELETE/v3/zones/{id}Delete a zone; purges on the way out
POST/v3/zones/{id}/purgePurge by path, tag or prefix
POST/v3/zones/{id}/prefetchWarm objects before an announcement
GET/v3/zones/{id}/rulesList edge rules in evaluation order
PUT/v3/zones/{id}/rulesReplace the whole rule set atomically
GET/v3/zones/{id}/analyticsTime series for egress, hits and status codes
POST/v3/certificatesUpload a certificate and private key
GET/v3/certificatesList certificates and their expiry
POST/v3/logs/destinationsRegister an S3, GCS or syslog sink
GET/v3/logs/destinationsList sinks with delivery lag
GET/v3/statusComponent health, no authentication required
Authentication
Every request carries a bearer token. Tokens are scoped to an organisation and optionally to a zone, and they can be restricted to a source prefix.
bash
curl https://api.master-c1.cdnmedia.download/v3/zones \
-H "Authorization: Bearer mrd_live_8f21c0…" \
-H 'Idempotency-Key: 4f2a-91bd-77c0'Rules
A rule set is an ordered list. Evaluation stops at the first terminal action; everything else accumulates.
rules.json
{
"rules": [
{
"match": "path glob '/releases/*' and method == 'GET'",
"actions": [
{"set_cache_ttl": "30d"},
{"add_header": {"Cache-Tag": "release-2026.8"}}
]
},
{
"match": "geo.country in ['RU','BY'] ",
"actions": [{"respond": {"status": 451}}]
}
]
}Log fields
42 fields per line, newline-delimited JSON, delivered in gzip batches of up to 512 MB.
| Field | Type | Notes |
|---|---|---|
ts | int64 | microseconds since epoch |
edge | string | PoP code, e.g. fra3 |
status | int | final response status |
bytes_out | int64 | billed bytes |
cache | string | HIT, MISS, EXPIRED, BYPASS |
slice | string | byte range served, if sliced |
ttfb_ms | float | time to first byte, edge side |
asn | int | client autonomous system |
Errors
Problem+JSON, always with a trace_id you can quote to support.
json
{
"type": "https://master-c1.cdnmedia.download/errors/quota",
"title": "Purge rate limit exceeded",
"status": 429,
"retry_after": 12,
"trace_id": "01J8F2A9C0K3"
}