GuidesErrors, usage & limits

Errors, usage and limits

Interpret API problems and retry without repeating updates.

Error format

Errors return their HTTP status and an application/problem+json body. Inspect code for the cause and retain requestId for troubleshooting. Unexpected server failures use INTERNAL_ERROR and do not expose internals. An optional errorId helps correlate server errors.

{
  "type":"https://api.inrepli.com/problems/etag_mismatch",
  "title":"Request failed",
  "status":412,
  "detail":"The resource has changed. Fetch it and retry.",
  "code":"ETAG_MISMATCH",
  "requestId":"example-request-id"
}
StatusTypical causeAction
400Invalid query, unknown field, missing idempotency key, invalid custom valueCorrect the request
401Missing/invalid/revoked/expired keyUse a valid key
403Missing scope, API access or custom-field plan eligibilityReview access and permissions
404Missing resource or removed endpointCheck the ID, workspace and route
409Reused idempotency key or conflicting updateInspect the error code; resolve the conflict
412Stale ETagRead, reconcile and submit a new logical update
422Invalid field/reference, or read-only contact email/mobile (CONTACT_IDENTITY_READ_ONLY)Correct the value; omit primary email/mobile from PATCH
428Missing If-MatchSupply a current ETag
429Rate, concurrency or RU quota limitHonor Retry-After when present; quota exhaustion requires available quota
500 / 503Server error or temporary unavailabilityRetry cautiously; PATCH retries retain the original idempotency key and request

Errors may include retryable: true. Concurrency errors include limitScope (credential_concurrency or tenant_concurrency). Repeated non-retryable errors require correcting the cause, not increasing retries.

RU and quota

RequestRecorded RU on success
GET, including each list page1
PATCH, including successful idempotent replay2
Failed request0

Effective Growth/Scale plan API access consumes available quota. Included monthly API RU is 10,000 for Growth and 50,000 for Scale; purchased quota may add capacity. Console-only manual API access records request usage without plan quota charging. If an effective eligible plan is present, its quota rules take precedence over the manual flag.

The policy does not make custom-field editing free of its existing plan restriction. API access and field-editing eligibility are separate checks.

Rate and concurrency

The current concurrency ceilings are 10 requests per API key and 25 per tenant. Rate limits can depend on configured access; do not assume a fixed requests-per-minute value across tenants. Concurrency rejection currently supplies Retry-After: 1; rate rejection supplies Retry-After: 60. Follow the returned header and use bounded exponential backoff with jitter.

Lists allow 1–100 records per page, default 50; at most 10 predicates, 3 custom predicates and 2 explicit sort fields. Review the query guide before building large exports. Cursor paging does not replace a synchronization feed.