Tessera
Resources

Errors & rate limits

Predictable, typed errors and generous limits so your integration fails loudly and recovers gracefully.

Error shape

Every API and SDK error follows the same structure:

json
{
  "error": {
    "code": "insufficient_trust",
    "message": "Agent score 612 is below the required 820.",
    "status": 403
  }
}

Error codes

FieldTypeDescription
unauthorized401Missing or invalid API key.
insufficient_trust403Agent failed the supplied policy.
agent_not_found404No identity exists for the given handle.
attestation_unsigned409Attestation is not yet co-signed.
rate_limited429Too many requests — back off and retry.
internal500Unexpected error. Safe to retry idempotent reads.

Rate limits

FieldTypeDescription
Reads (no key)60 / minPer IP. Best-effort, cached.
Reads (with key)1,000 / minPer project key.
Writes120 / minAttestations and stake operations.
WebhooksNo limit; deliveries are queued.

Handling 429s

Responses include Retry-After and X-RateLimit-Remaining headers. The SDK retries 429 and 5xx automatically with jittered backoff.

typescript
const tessera = new Tessera({
  cluster: "mainnet-beta",
  maxRetries: 4,          // default 3
  retryBaseMs: 250,
});
Need higher limits? They scale with your project tier — reach out and we lift them in minutes.