200
body is the object itself, and any 4xx or 5xx body is an error object.
string
The broad class. Branch on this — it is stable.
string
The specific reason. New codes can be added within an existing
type, so treat an unrecognized
code as its type.string | null
The offending field as a dot-path, matching your request body exactly.
string
Also returned as the
X-Request-Id header on every response. Log it on both success and
failure — it is the only thing that lets support trace a specific call.message is written for a human reading a log. It is not stable across releases — never parse
it or match on its text. Branch on type and code.Types
Common codes
parameter_invalid
parameter_invalid
A parameter has the wrong type or an impossible value.
param names it.The usual cause is a rate passed as a percentage. revenue_growth_rate is a ratio — 0.5 is
+50%. Passing 50 is a request for +5,000% growth, and it is accepted as valid, so it returns
an empty list rather than an error.parameter_missing
parameter_missing
A required parameter is absent. Most often
market on a search, which cannot be inferred.invalid_api_key
invalid_api_key
The key is missing, malformed or revoked. Check the
Authorization header is present and
formatted Bearer unif_sk_….field_not_filterable
field_not_filterable
You filtered on a field that is not filterable for this channel and market. Unif rejects the
query rather than returning a silently biased result set. Check
GET /coverage.channel_not_enabled
channel_not_enabled
The channel or market is not enabled for your workspace. An entitlement problem — see
GET /channels.period_out_of_range
period_out_of_range
The requested period starts before the market’s
earliest_period, or ends in the future.insufficient_credits
insufficient_credits
No credits left in this billing period. See Credits.
idempotency_key_reused
idempotency_key_reused
The same
Idempotency-Key was sent with a different body. Keys are bound to the request
that created them. See Idempotency.Retrying well
Retry429 and 5xx. Never retry a 4xx other than 429 — the request will fail identically
every time.
- Honor
Retry-Afteron a 429. Backing off on your own schedule keeps you rate limited longer. - Add jitter. Without it, every worker that hit the limit together retries together.
When you need support
Include therequest_id. It identifies the exact call, its parameters and what happened
internally, and it is the difference between a same-day answer and a long conversation.