30 years of publishing experience · A network of 300+ owned media websites
Home · Developers · REST API
Developers

REST API

Base URL https://mediakit.uk/api/v1/agent-commerce. JSON in and out. The OpenAPI 3.1 document lists every endpoint with its schema and scope.

Discovery (public)

  • GET /publishers — filters: country, language, category, service, niche, min_price, max_price, q, sort, page, per_page
  • GET /publishers/{domain}
  • GET /services · /packages · /countries · /languages · /categories
  • GET /availability?publishers=a.com,b.com&niche=
  • GET /pricing · /capabilities · /openapi.json

Commerce (bearer credential)

  • POST /quotes · GET /quotes/{id}
  • POST /orders · GET /orders · GET /orders/{id} · /status · /publications · /report?format=csv · POST /orders/{id}/cancel
  • POST /content/validate · POST /content/submissions · GET /content/submissions/{id}
  • GET /payments/options · POST /payments/intents · GET /payments/{order} · POST /payments/{order}/confirm (re-reads the verified status only)
  • GET /account · /account/limits · POST /account/spending-authorization · GET /approvals/{id}
  • GET/POST /webhooks · POST /webhooks/{id}/rotate · /delete · GET /webhooks/{id}/deliveries · GET /events?after=

Order states

AWAITING_APPROVAL (owner asked) → AWAITING_PAYMENT → PAYMENT_PROCESSING → AWAITING_CONTENT (guest post article missing) → REQUIRES_REVIEW (editor) → PUBLISHING_QUEUED → PUBLISHING → PARTIALLY_PUBLISHED → COMPLETED; or FAILED, CANCELLED, REFUNDED. Each publication has its own status, attempts, live URL, failure reason and replacement or credit.

Errors

{"error":{"code":"quote_stale","message":"Prices or availability changed since the quote. Ask for a new quote."}}
# 400 invalid · 401 authentication_required / invalid_token · 402 insufficient_balance · 403 insufficient_scope / not_allowed / outside_agent_scope
# 404 not found · 409 quote_stale / idempotency_conflict · 410 quote expired · 422 validation · 429 rate_limited · 503 paused

Idempotency and limits

Send Idempotency-Key on POST /quotes, /orders and /payments/intents: the same key with the same body returns the first response; with a different body it returns 409. Keys are per agent.

Rate limits: 120/min per IP anonymous, 300/min per agent; 429 with Retry-After.