Meridian Edgeanycast

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.

FieldTypeNotes
tsint64microseconds since epoch
edgestringPoP code, e.g. fra3
statusintfinal response status
bytes_outint64billed bytes
cachestringHIT, MISS, EXPIRED, BYPASS
slicestringbyte range served, if sliced
ttfb_msfloattime to first byte, edge side
asnintclient 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"
}