# Call every platform from your code

Everything the MCP tools can do, from your own code. 26 platforms, 122 operations, one request shape and one response envelope. Every answer says what was measured, when, what was left out and why, and what it cost. Connecting an assistant or editor instead? [MCP](https://zomler.com/docs/mcp).

## Quickstart

1.  **Create a key** in the dashboard under [API keys](https://app.zomler.com/api-keys). It is shown once; store it as a secret.
2.  **Pick a platform and an op**from the rail. Each page lists the op's fields and a request you can copy.
3.  **Send it** to `POST https://api.zomler.com/api/v1/platforms/{platform}` with the key in an `X-API-Key` header.

```bash
curl -X POST https://api.zomler.com/api/v1/platforms/instagram \
  -H "X-API-Key: zk_live_…" \
  -H "Content-Type: application/json" \
  -d '{
  "request": {
    "op": "profiles",
    "subjects": [
      "example"
    ]
  },
  "estimateOnly": false
}'
```

Add `"estimateOnly": true` to any call to get the exact cost and coverage without spending anything. The quote and the real call run the same plan, so the number cannot lie.

## How it fits together

A request names one **platform** (the URL) and one **op** (the body). Ops are independent — send several in parallel rather than one big one. The things an op is about are its `subjects`: handles, ids or URLs, one to ten per call, batched inside the op.

Anything already held is served **free**, for everyone, and every fresh fetch is measured and stored. A `history` op on every platform reads that stored series and never bills.

Fields that mean the same thing are spelled the same way on every platform — `subjects`, `limit`, `sort`, `postedWithin`, `since`. Learn one platform and the rest read the same. See [Making a request](https://zomler.com/docs/api/requests).

## Base URL and versions

All endpoints live under `https://api.zomler.com/api/v1`. The response envelope carries a `contextVersion` — the contract version — and an `engineVersion`. The contract number changes only when the envelope's shape changes; fields are only ever added within a version.

`GET https://api.zomler.com/api/v1/platforms`needs no key and returns what is served right now: every platform's ops, freshness windows, starting prices and availability. It is the same data these pages show.

---

Source: https://zomler.com/docs/api
