Billing
API calls draw on the same monthly credits as the rest of Spyglass. There’s no separate API plan and no per-call fee — you’re charged per row returned.
Rates
The count field in a collection response is what you were charged for. If
count is 12, you paid for 12 rows. Two things don’t follow that rule:
GET /account/{id} returns a bare account with no count, because a successful
lookup is always exactly one row; and the one-row minimum below, where a count
of 0 still costs one row.
Bounding a call
Every endpoint takes a cap, and the defaults are not the maximums:
GET /account/{id} needs no cap — it returns one account or 404.
A media call at limit: 2000 costs $1.00. The cap is high on purpose so
bulk exports are possible — set limit deliberately rather than leaving it to
chance.
What you’re never charged for
A request that fails validation, authentication, or the credit check costs
nothing. Specifically, every 400, 401, 402, 403, 404, 405, 413 and
429 is free. Only work that ran is billed.
The one-row minimum
Two kinds of call are billed a minimum of one row:
POST /mediaPOST /brandsorPOST /creatorssearching byquery(this runs a language model)
These bill a minimum of one row even when nothing matches, because the model
ran either way. A query search returning zero brands still costs $0.0010 — the
response says "count": 0, but one row was charged.
Searches by ids, igUsername, tiktokUsername or names don’t run
a model and cost nothing when they match nothing.
Running out
When the team’s monthly credits are exhausted, metered calls return 402 out_of_credits and stop doing work. Nothing is queued or partially charged —
add credits or wait for the renewal, and the same request will succeed.
POST /account/index, GET /account/{id}/index-status, GET /taxonomies,
and GET /team/credit-usage stay available and are never charged.