Skip to content
Meridian Data

API v1 · REST + JSON

Meridian Data API reference

Commodity prices as JSON over HTTPS. Every response is a flat, typed object with an as-of timestamp and a request id. No SDK, no streaming protocol, no XML.

Quickstart

Issue a key on the signup page, put it in an environment variable, and make one request. That is the whole setup.

export MERIDIAN_API_KEY="mc_live_…"
export MERIDIAN_BASE="https://api.meridian-data.example/v1"

curl -s "$MERIDIAN_BASE/commodities/XAU" \
  -H "Authorization: Bearer $MERIDIAN_API_KEY" \
  -H "Accept: application/json"

The response:

{
  "data": {
    "symbol": "XAU",
    "name": "Gold",
    "category": "Metals",
    "unit": "USD/oz",
    "price": 2412.35,
    "change": 18.4,
    "changePct": 0.77
  },
  "meta": {
    "request_id": "req_8f2c41d0a7b94e13",
    "as_of": "2026-10-29T09:14:02Z",
    "count": 1,
    "api_version": "v1"
  }
}

Try the live demo endpoint without a key: GET /api/v1/commodities

Authentication

Pass your key as a bearer token in the Authorization header. Keys are prefixed mc_live_ and are scoped to your account, not to a region.

Authorization: Bearer mc_live_9f3c…
  • · Never put the key in a query string — it will be logged by proxies.
  • · Rotate keys from the dashboard; old keys keep a 24-hour grace period.
  • · Missing keys return 401 missing_api_key; suspended keys return 403 key_disabled.

Rate limits

Limits are enforced per key with a token bucket. Responses include the standard headers on every request, including the ones that succeed.

Plan Sustained Burst Monthly quota
Free 5 req/s 20 10,000
Pro 50 req/s 200 2,000,000
Enterprise 250 req/s+ 1,000+ Contract
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 49
X-RateLimit-Reset: 1761734100

# When exceeded
HTTP/1.1 429 Too Many Requests
Retry-After: 1

Endpoints

All endpoints are HTTPS-only GETs. Responses are cacheable for the duration of the as-of window.

Method Path Description Parameters
GET /v1/commodities List every covered instrument with last, change and session statistics.

Auth: API key

symbol, category, limit, cursor
GET /v1/commodities/:symbol One instrument by symbol, including unit, category and session range.

Auth: API key

symbol (path), as_of
GET /v1/prices Alias of the list endpoint, kept for compatibility with the public board.

Auth: API key

category, limit, cursor
GET /v1/research Research-note metadata and standfirsts. Full text on the website.

Auth: API key

category, limit, cursor

The demo server also exposes unauthenticated /api/prices and /api/v1/* endpoints with the same response shape, so you can inspect the contract before signing up.

Pagination

List endpoints return up to 100 records and a cursor. Pass the cursor back unchanged; do not construct or modify it. An empty next_cursor means you have the last page.

GET /v1/commodities?category=Energy&limit=2
GET /v1/commodities?category=Energy&limit=2&cursor=eyJvIjoyfQ…

{
  "data": [ … ],
  "meta": {
    "request_id": "req_…",
    "count": 2,
    "next_cursor": "eyJvIjo0fQ…"
  }
}

Errors

Errors use conventional HTTP status codes and a stable machine-readable code. Branch on the code, never on the message.

Status Code Meaning
400 bad_request A query parameter is malformed or out of range.
401 missing_api_key No Authorization header was supplied.
403 key_disabled The key is valid but suspended or out of plan.
404 unknown_symbol No instrument matches the requested symbol.
429 rate_limited Burst or monthly quota exceeded. Retry after Retry-After.
503 upstream_unavailable A regional ingest node is unavailable. Retry with jitter.
{
  "error": {
    "type": "invalid_request_error",
    "code": "unknown_symbol",
    "message": "No instrument matches \"XYZ\"."
  },
  "meta": { "request_id": "req_…", "api_version": "v1" }
}

Versioning & support

The version is part of the path (/v1). Additive fields may appear at any time — ignore unknown keys. Breaking changes ship under a new version with at least twelve months' notice.

Support

hello@meridian-data.example

Response within one business day on Pro.

Status

All systems operational

99.98% 90-day uptime · 99.9% SLA

Indicative data & privacy notice. This site sets no advertising or analytics cookies and loads nothing from third parties. It stores a single preference in your browser only if you dismiss this notice. Prices are fictional snapshots, not executable quotes, and nothing here is investment advice. Privacy · Terms