Skip to navigation

Quotas, limits and errors

How Pixalate counts your API usage, how to check what's left, and what each HTTP status code means.

Most Pixalate APIs draw on a usage quota. Your plan or contract sets the size of each quota, so this page explains how usage is counted rather than listing numbers. To see your own numbers, call the free metadata endpoint for the API (see Check your quota).

How quota works

One pool per product

Your usage is counted in separate pools:

  • one for each Enrichment API supply type: mobile apps, CTV apps and domains
  • one for the Analytics Reports API
  • one for the Fraud API

The pools are independent. Using one never draws down another, so an empty mobile apps pool doesn’t affect your domains lookups. When a pool runs out, every request that draws on it is blocked, whatever widgets you ask for, until the pool refreshes or your plan changes.

Enrichment API: input items and output items

Enrichment API usage is counted the same way as in the Media Ratings Terminal:

  • Each input item, an app or domain you submit in a single lookup or a batch, uses one quota unit when it’s submitted.
  • Each output item, a result returned or made available for that input item, uses one more unit. A result is one app or domain for one combination of store, region and device.

So one input item can use several units: one for the item itself, plus one for each result returned. Usage is shared across everyone on your account.

Region and device control how many results come back. A lookup with no filters returns a result for every region and device combination. Add region=GLOBAL&device=GLOBAL to get one result per store, which covers most needs.

For example, to look up one app with the fewest results:

curl "https://api.pixalate.com/api/v2/mrt/apps/com.example.mobileapp?region=GLOBAL&device=GLOBAL" \
-H "x-api-key: $PIXALATE_API_KEY"

The same filters work on the mobile apps batch endpoint, which is where they save the most: a batch multiplies records by region and device for every app you submit. See the Enrichment API guide.

Fraud API

The Fraud API’s quota status reports usage as a count of requests in the current quota period. See Check your quota in the Fraud API guide.

Other APIs

For the SCO Validation & Verification API, the OpenEPG preview and Pixalate’s MCP connectors, ask your Pixalate account manager about the limits on your plan. The MCP connectors’ limits are described in Access and limits.

Check your quota

Each of these calls returns your current quota status.

APIRequest
Enrichment API: Mobile AppsGET https://api.pixalate.com/api/v2/mrt/apps
Enrichment API: CTV AppsGET https://api.pixalate.com/api/v2/mrt/ctv
Enrichment API: DomainsGET https://api.pixalate.com/api/v2/mrt/domains
Analytics Reports APIGET https://api.pixalate.com/api/v2/analytics/reports
Fraud API v3GET https://fraud-api.pixalate.com/api/v3/fraud with no ip, deviceId or userAgent
curl "https://api.pixalate.com/api/v2/mrt/apps?pretty=true" \
-H "x-api-key: $PIXALATE_API_KEY"

The Enrichment API and Analytics Reports API return a quota object alongside the date the data was last updated:

{
"database": {
"lastUpdated": "2022-04-30"
},
"quota": {
"available": 480,
"used": 520,
"expiry": "2022-05-01T12:45:23.234Z",
"limit": 1000,
"interval": 1000,
"timeUnit": "month"
}
}

The values above are illustrations from the API reference, not real allowances.

FieldWhat it tells you
availableHow much quota you have left.
usedHow much quota you’ve used.
expiryWhen the quota refreshes back to limit, in YYYY-MM-DDTHH:MM:SS.SSSZ format.
limitHow much quota you get each time it refreshes.
intervalThe number of time units used to calculate the refresh time.
timeUnitThe time unit used to calculate the refresh time: minute, hour, day, week or month.

Each Enrichment API supply type reports its own pool, so check the endpoint for the supply type you’re about to use. Check available before you start a large batch.

Rate limits

The OpenEPG preview declares a rate limit: when you exceed it, you get 429 with a Retry-After header that says when to try again. For rate limits on the other APIs, contact support@pixalate.com.

HTTP status codes

These are the status codes each API’s specification declares.

StatusFraud APIEnrichment APIAnalytics Reports APISCO V&V APIOpenEPG (preview)
200 OK✓✓✓✓✓
400 Bad Request✓✓✓✓✓
401 Unauthorized✓✓✓✓✓
403 Forbidden✓✓✓✓
413 Payload Too Large✓
429 Too Many Requests✓
503 Service Unavailable✓
5xx Server Error✓✓✓

What each status means and what to do

StatusMeaningWhat to do
400The request has invalid parameters.Check parameter names and values against the API reference. URL-encode values such as user agents and queries.
401The API key is missing or invalid.Check that you’re sending your key in the x-api-key header. See Authentication and API keys.
403Your key isn’t allowed to make this request. For example, your subscription or rate plan has expired, needs an upgrade, or doesn’t include this product.Check your quota status, then contact your Pixalate account manager about your plan.
413OpenEPG only: the request body is too large.Send a smaller body, or fewer items in a batch.
429OpenEPG only: you’ve exceeded the rate limit.Wait for the number of seconds in the Retry-After header, then retry.
503OpenEPG only: the service is degraded. It fails closed rather than returning a false miss.Retry after the delay in the Retry-After header.
5xxThe API had an internal error.Retry once. If it keeps happening, contact support@pixalate.com with the request you sent (without your API key) and the time.

Check parameter values against the allowed values in the API reference before you retry a failed call. An unrecognized value, such as an unsupported device, may come back as a server error rather than a 400.

Batch endpoints (Enrichment API batch lookups, Analytics exports with isAsync) report some results through a URL you poll afterwards, with their own status codes. See the Enrichment API and Analytics Reports API guides.