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 /brands/{id} returns a bare brand 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 /brands/{id} needs no cap — it returns one brand or 404.
What you’re never charged for
A request that fails validation, authentication, or the credit check costs nothing. Specifically, every400, 401, 402, 403, 404, 405, 413 and
429 is free. Only work that ran is billed.
The one-row minimum
Three calls run a language model before they touch the database:POST /brands/{id}/media— both modesPOST /brands/searchwithmode: "smart"
"count": 0, but one row was charged.
mode: "ids" and mode: "brand_name" don’t run a model, and cost nothing when
they match nothing.
Running out
When the team’s monthly credits are exhausted, metered calls return402 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 /brands/index and GET /brands/{id}/index-status stay available and
are never charged.
Insights costs more than it looks
maxDaysBack narrows the weekly bucket series, but not totals — and
totals is what you’re charged for. It always covers the brand’s full
clustering run. Use limit to bound the charge; maxDaysBack only changes the
shape of the time series.