Curated data sources
10 data sources, one REST base, one API key, one credit balance. You never open an account with an upstream provider, never hold a second key, and never reconcile a second invoice. Requests are validated before they leave the platform, and a failed call costs you nothing.
What a curated data source is
A curated source is one the platform holds the upstream relationship for. We contract with the upstream providers and pay them; you pay in platform credits, per call, on the same balance every other source draws from. That is the whole difference from a connection, where you bring your own vendor credential and the vendor bills you.
Sources are addressed by a public slug, and the slug is the only identifier that appears anywhere: in the URL, in the MCP tool name, in your usage rows, in the pricing catalog. Which upstream provider backs a slug is an implementation detail we reserve the right to change without touching your code.
| Slug | Source | Endpoints | Base path |
|---|---|---|---|
agnt | Lead APIs | 12 | /v1/data/agnt/* |
facebook | 35 | /v1/data/facebook/* | |
instagram | 22 | /v1/data/instagram/* | |
linkedin | 52 | /v1/data/linkedin/* | |
reddit | 29 | /v1/data/reddit/* | |
seo | SEO | 16 | /v1/data/seo/* |
tiktok | TikTok | 12 | /v1/data/tiktok/* |
web | Web | 3 | /v1/data/web/* |
x | X (Twitter) | 52 | /v1/data/x/* |
youtube | YouTube | 24 | /v1/data/youtube/* |
Making a call
Every method is forwarded. /v1/data/:source/* passes the HTTP verb, the query string (including repeated parameters, which arrive upstream as a repeated key) and the JSON body straight through to the operation the path resolves to.
Authenticate with Authorization: Bearer <key>. Mint a key in the dashboard at app.superagnt.com.
curl "https://api.superagnt.com/v1/data/<source>/<endpoint>?limit=25" \
-H "Authorization: Bearer $AGNTDATA_API_KEY"bad requests are free
VALIDATION_ERROR with HTTP 400 and a details array naming each offending field, and nothing is charged.What you pay
Every successful response carries its own price. meta.costCents is the amount actually charged for that call, after any discount on your account, and the two remaining balances sit beside it. You never need a second round trip to find out what a call cost or what is left.
{
"success": true,
"data": { "...": "the upstream payload, normalized" },
"meta": {
"costCents": 1,
"purchasedBalanceCents": 4820,
"subscriptionRemainingCents": 1500,
"cached": false,
"latencyMs": 412
}
}Pricing is set per slug, with optional per-endpoint overrides where one operation is materially more expensive than the rest of its source. Some sources are variable-cost by nature: the web and seo sources price a call by what the request actually did, so the platform bills the real upstream-reported cost rather than the pre-call estimate. The estimate is only the balance gate.
Failed calls cost nothing. A 4xx, a 5xx, an upstream timeout, and an upstream that returns HTTP 200 with a failure body inside it are all billed at zero and logged as errors.
do not hardcode prices
GET /v1/platforms (unauthenticated) or GET /v1/platforms/:slug for per-endpoint figures, or browse them in the API reference. Copying a number into your own docs or UI is how a stale price ends up in front of a customer.Pagination
Curated sources keep each upstream's own pagination convention. Most commonly that is a dedicated continuation operation: you call the list endpoint, take the continuation token out of the response, and feed it to the matching …_continuation operation. Others page by number or by offset.
There is no single platform-wide cursor on this surface, so check the endpoint you are calling in the reference rather than assuming. Cursors on this platform exist only on the two webhook delivery lists; the workspace database and /v1/usage use limit and offset.
From an agent
Over MCP the same operations appear as tools named data_<slug>_<operationId>, for example data_reddit_search_posts. Same validation, same pricing, same credit balance as REST.
claude mcp add --scope user --transport http superagnt https://mcp.superagnt.com/mcp
claude mcp login superagntCurated sources are opt-in, so a fresh server does not list hundreds of tools you did not ask for. Find a source with agnt_tools_search, then turn it on with agnt_tools_enable and the family id data:<slug>, for example { "families": ["data:x"] }. The first-party agnt source is the exception: it is served on the base connection and needs no enable.
after enabling
Errors specific to this surface
| Code | HTTP | What it means |
|---|---|---|
PROVIDER_NOT_FOUND | 404 | The slug in the path is not a data source. The response lists every valid slug, so you can correct it without leaving the error. |
ENDPOINT_NOT_FOUND | 404 | The slug is real but no operation on it matches that method and path. Check the source hub in the reference. |
PROVIDER_UNAVAILABLE | 503 | No upstream credential is configured for that source on our side. Nothing you can fix in your request; contact support if it persists. |
VALIDATION_ERROR | 400 | The request did not match the source's spec. The details array names each field. Not charged. |
Upstream calls time out at 30 seconds. Transient upstream failures are retried on your behalf before the error reaches you, and a retried call that succeeds is billed exactly once.
Migrating off the pre-/v1/data path
removed 2026-10-01
/v1/<slug>/* returns HTTP 410 ENDPOINT_MIGRATED with a Link header naming its successor. Change the base path from /v1/ to /v1/data/; your key and parameters are unchanged. The path stops answering entirely on 2026-10-01.The full reference
Every source, every endpoint, parameter schemas, response shapes and per-call pricing live in the API reference, one page per endpoint.
API reference
All 10 sources with parameters, response schemas and live pricing.
People and company enrichment
The orchestrated agnt endpoints, their two pricing models, and how to cap what a call can cost.
OpenAPI spec
The merged OpenAPI document for every public source, for codegen and client generators.