Troubleshoot API integrations
Use the JSON error.code and request_id. Do not diagnose by repeatedly
sending the same failing request or by exposing the credential.
Authentication or scope failure
Section titled “Authentication or scope failure”- Send a small
GET /schoolrequest. - On
401 invalid_api_key, verify the secret source, expiration, and revocation; rotate if uncertain. - On
403 insufficient_scope, compareerror.details.required_scopewith the key inventory. - Check separate read/write rollout, feature, suspension, policy, and source-network conditions.
- Never solve a missing scope by reusing a broader unrelated key.
Query or cursor failure
Section titled “Query or cursor failure”- Use only documented filter names and enum values.
- Send valid UUID and RFC 3339 UTC values.
- Do not combine
created_afterandupdated_after. - Keep a cursor on the same endpoint, path identifier, and normalized filters.
- On an invalid or expired traversal, restart from a new first request; never edit the cursor.
Write failure
Section titled “Write failure”415: sendapplication/json.413: keep the body at or below 1 MiB.422: correct the exact schema or business rule.409 idempotency_key_conflict: the value was used for a different request; do not mutate the old request to fit it.409 idempotency_request_in_progress: wait forRetry-Afterand send the identical request and key.- API Learning Plans are read-only in v1.
Quota or availability failure
Section titled “Quota or availability failure”For 429, respect Retry-After and the rate-limit reset. Reduce polling,
increase page size within the limit, and use incremental synchronization.
For 503, use bounded backoff; a required policy, quota, or API dependency can
be temporarily unavailable.
Safe support evidence
Section titled “Safe support evidence”Provide:
- UTC timestamp;
- HTTP method and endpoint template, without sensitive query values;
- status,
error.code, andrequest_id; - key name or safe identifier, not the credential;
- whether the failure is read or write and whether it is repeatable.
Never send an authorization header, raw key, raw idempotency value, full personal-data body, or unredacted logs. See errors and quotas and endpoint reference.