For the complete documentation index, see llms.txt. This page is also available as Markdown.

GuidesErrors

Errors

API errors use application/problem+json. Branch on code: it is stable, while detail is written for people and can change.

JSON
{
  "type": "https://peoplescourt.ai/problems/acceptance_required",
  "title": "Acceptance Required",
  "status": 409,
  "code": "acceptance_required",
  "detail": "The claimant must accept the prepared filing packet before the case can open.",
  "requestId": "req_9fe76389-b3c1-47cb-81a3-832478d2b8e9",
  "details": {
    "termsDigest": "fdf857fb83cd64c0535a8da6b4b5073fb0ce6839e99cd40dd95972937c635107"
  }
}
FieldDescription
codeStable machine-readable error code
statusThe HTTP status, repeated in the body
detailHuman-readable explanation
requestIdAlso sent as the x-request-id header. Include it when you contact support.
detailsOptional structured data for the specific error

Log requestId. Never log bearer credentials, invitation links, party capabilities, wallet signatures, or evidence bytes.

Status codes

StatusMeaningWhat to do
400Malformed request or missing required headerFix the request
401Missing or invalid credential or proofReauthenticate
403The credential lacks the role, side, membership, or authorityDo not retry unchanged
404Not found, or hidden from this tenantCheck the tenant and identifier
409State, digest, revision, idempotency, or phase conflictRead the current state first
413Request or evidence payload too largeReduce the payload
422Well-formed request that violates the contractFix the reported fields
429Rate limit reachedWait for Retry-After, then retry
503Feature or dependency unavailableRetry later with backoff

Common codes

CodeStatusMeaning
acceptance_required409The claimant has not accepted this filing packet. details.termsDigest identifies it. An authorized claimant caller can also receive details.reviewPacket and, when a new link is issued, a show-once details.hostedAcceptanceUrl that replaces the previous link. Keep its fragment private.
filing_packet_changed409The packet changed after acceptance. Prepare a new packet and obtain acceptance again.
case_revision_conflict409The case changed while a settlement binding was being registered. Read the case, then retry with a new idempotency key.
settlement_binding_registration_closed409Settlement bindings can be registered only in awaiting_submissions or awaiting_validation and before an Award exists.
fast_track_record_limit422The filing would take the filing party past its Rule 4.12 allowance in an AI-only fast case: 16,000 characters of text, two text exhibits, ten extracted exhibit pages, or text only. Each party has its own allowance. detail names the limit and the party. Shorten the filing or keep only the best evidence.
fast_track_counterclaim_not_available422A fast case decides only the claimant's claim. Answer without requested relief, and file a separate case to claim against the claimant.
message_channel_required422The message channel query parameter is missing or invalid. Partner credentials send channel=partner_notice.
rate_limited429A request budget is exhausted. See Rate limits.
message_rate_limit_exceeded429One credential sent 20 messages to one case within a rolling hour.

Replaying the original successful request with the same Idempotency-Key and body returns the stored response, even if the case has since moved on.

Account OAuth errors

Account operations can instead return the OAuth envelope, with error and error_description. Handle it separately from code. A missing account session returns login_required. When consent has lapsed, send the person through authorization again. A canonical route that is disabled on a deployment returns an empty 404, so check the status and Content-Type before parsing JSON.

Retry an uncertain request

After a timeout or a retryable server error, resend the original body with the original Idempotency-Key. A new key would create a second, distinct operation.

For 409, read the resource, resolve the conflict, and send the changed request with a new key. For 429, wait for Retry-After when present; otherwise use bounded exponential backoff with jitter.