CasePrimus.aiby Attestr
Documentation menu
API guide

API rate limits and error codes

How your requests are counted, what the API returns when something goes wrong, and which errors are worth retrying.

Rate limits

Your plan allows a number of API requests per minute: 300 unless your plan says otherwise, counted per account across all of your API keys.

Kind of callCounts as
Most calls1 request
Actions that fetch live court data: case lookup, order download, summarization, discovery, refresh, export10 requests
Bulk imports50 requests

Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Over the limit you get 429 with a Retry-After header in seconds. Wait that long and retry. The Historical Search API has its own limit, described on its endpoints.

Error format

Errors use the HTTP status code and a JSON body. The code is a stable number you can branch on in your own code; the message is for people and may be reworded.

Error response
{
  "httpStatusCode": 400,
  "code": 60001,
  "message": "Malformed data or missing required parameter values",
  "appError": true
}

A plan that does not include the product

Calling a product your plan does not include returns 403 with the code 61470 (PRODUCT_NOT_IN_PLAN). Nothing is charged. Contact CasePrimus.ai to add the product.

Error codes

These are the errors documented across the API, with the endpoints where each can occur.

StatusCodeMessage and where it occurs
40060001

Malformed data or missing required parameter values

Add entity to watchlist, Search discovered case candidates for an entity

40060400

Watchlist entity does not exist

Get a watchlist entity, Update a watchlist entity, Stop monitoring an entity and 1 more

40060401

Watchlist case does not exist

Get a watchlist case, Update a watchlist case, Stop monitoring a case

40060405

Real-time court search is only available for company entities - add cases for a person entity manually

Start a historical search

40060411

This candidate has not been approved yet

Add a candidate to the watchlist

40060412

This candidate has already been added to the watchlist

Add a candidate to the watchlist

40060415

You've already made a decision on this candidate

Decline a candidate

40060435

This case summary request does not exist

Poll an on-demand case summary

40060436

This search record does not exist

Download Case Order, Read back a previously looked-up case

40061453

The page token is not valid for this search

Next page of a search

40061454

The search filters are not valid

Start a historical search

40261455

Your plan's search allowance has been used up

Start a historical search, Next page of a search

40361456

No data source is enabled for this account

Start a historical search

40361465

Asynchronous collection is not available on your plan. Page through the results with a normal search instead

Start a historical search

40460434

No matching order was found for the number and date provided

Download Case Order

40461449

This search was not found

Status of a search, Delete a search now, Next page of a search and 1 more

40461468

There is no download for this search: only a completed asynchronous search has one

Download a completed asynchronous search

40961451

Another request on this search is still running. Wait for it to finish, then retry

Next page of a search

40961467

This search is still being collected. Its results can be read once its status is COMPLETE

Next page of a search, Download a completed asynchronous search

41061450

This search is older than its retention period and its results have been deleted. Start a new search

Next page of a search

42260433

Could not download this order right now, please try again shortly

Download Case Order

42961457

Too many requests - slow down and retry after the indicated time

Start a historical search

42961466

Too many of your searches are still being collected. Wait for one to finish, then start another

Start a historical search

50060406

Could not look up this case right now, please try again shortly

Look up a case by its identifier

50361452

This page could not be assembled in time. Nothing was delivered or charged - retry with the same page token

Start a historical search, Next page of a search

50361469

This order is still being downloaded from the court. Send the same request again in a few seconds - nothing is charged until it is delivered

Download Case Order

Frequently asked questions

What is the CasePrimus.ai API rate limit?

By default your plan allows 300 API requests per minute, counted per account across all of your API keys, unless your plan says otherwise. Most calls count as 1 request. Actions that fetch live court data count as 10, and bulk imports count as 50.

What happens when I go over the limit?

The API returns 429 with a Retry-After header giving the number of seconds to wait. Wait that long and retry. Every response also carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers so you can slow down before you hit the limit.

Which errors are safe to retry?

429, and 503 or 500 responses whose message says to try again shortly. Retry the same request after a short wait. A 400, 403, 404 or 422 will not succeed unchanged, so fix the request first.

Am I charged for a failed request?

Calls to a product your plan does not include are refused with 403 PRODUCT_NOT_IN_PLAN and nothing is charged. Where an error message says nothing was delivered or charged, as on some 503 responses, that applies as written.

Last updated 14 October 2026