Documentation

Integration guide

Everything below is the whole API surface. If a thing is not here, it is not required.

Create a pull zone

A zone binds a hostname to an origin. Create one, and the hostname is live as soon as DNS propagates.

curl -X POST https://api.vimovox.com/v1/zones \
  -H "Authorization: Bearer $VIMOVOX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"media","origin":"https://origin.example.com","cache_ttl":86400}'

The response carries the node hostname to point at:

{
  "id": "zn_8f21c4",
  "name": "media",
  "hostname": "media.lax1.vimovox.com",
  "origin": "https://origin.example.com",
  "cache_ttl": 86400,
  "state": "active"
}

Point your own domain

Add a CNAME from your hostname to the node hostname. Keep the record proxied only if your DNS provider passes through range requests; video seeking depends on them.

cdn.example.com.   300   IN   CNAME   media.lax1.vimovox.com.

TLS and certificates

Certificates are issued per hostname and renewed thirty days before expiry. Upload your own if you need a specific chain:

curl -X PUT https://api.vimovox.com/v1/zones/zn_8f21c4/certificate \
  -H "Authorization: Bearer $VIMOVOX_TOKEN" \
  --data-binary @fullchain.pem

TLS 1.2 and 1.3 only. HTTP requests are redirected, never served.

Cache control

Origin headers win. Cache-Control and Expires are honoured as sent; the zone TTL applies only when the origin says nothing. Purge by prefix:

curl -X POST https://api.vimovox.com/v1/zones/zn_8f21c4/purge \
  -H "Authorization: Bearer $VIMOVOX_TOKEN" \
  -d '{"prefix":"/releases/2026-09/"}'

Usage

Hourly bandwidth and request counts per hostname, up to 400 days back. These are the same numbers the invoice is built from.

GET /v1/zones/zn_8f21c4/usage?from=2026-09-01&granularity=hour

Limits

  • Single object: 50 GB
  • Range requests: supported, required for video seeking
  • Purge: 200 prefixes per minute per zone
  • API: 60 requests per minute per token