Go to Rilla

Errors & troubleshooting

HTTP errors, request debugging, and retry behavior.

HTTP status codes

StatusMeaningNext step
400Invalid requestCheck required fields, date formats, types, and valid JSON. attendee_emails must be an array of non-empty strings; a non-empty list cannot be combined with media_url.
401Data Export authentication failedSend the raw key in Authorization, without Bearer.
403CRM gateway rejected the keyCheck x-api-key and confirm the key is valid.
404Missing route or recordVerify method, path, identifier, and access scope.
409Appointment is linked to a recordingDo not repeatedly retry the delete request.
422CRM request cannot be processedRead the response body; confirm the rep, organization, event, or recording. Appointment creation/updates require at least one supplied attendee to resolve in the key's organization. With a non-empty attendee_emails list, removed and hidden users are skipped.
429Too many requestsBack off before retrying.
5xxServer errorRetry transient failures with bounded exponential backoff.

Invalid JSON in request body

This Data Export error means the body could not be parsed, before date or email validation runs. Use straight double quotes, remove trailing commas, and ensure the JSON is an object. A smart quote at the end of an email is not a closing JSON quote.

Check a body locally
python3 -m json.tool request.json

Every POST endpoint page has a browser-only JSON checker. It does not upload your body or call the API. A syntactically valid body can still fail field validation.

Data Export error body
{
  "message": "Invalid JSON in request body"
}

For Validation failed, read errors[].path and errors[].message. Dates must end in Z, users must contain emails, and page/limit must be numbers.

Custom API Debugger

Admins can inspect CRM ingestion in Settings → Developer → API debugger. Enter your API key, find the appointment by rep, client, or title, and open its details to inspect the stored payload and timestamps.

If the event is missing, check the original HTTP response and request timestamps.

Debugger walkthrough

Retries and limits

For 429 and transient 5xx responses, use bounded exponential backoff with jitter. Respect Retry-After if the response includes it. Fix invalid request data and authentication before retrying 4xx errors.

Contact your account manager before high-volume ingestion or bulk exports to confirm applicable limits. Don’t assume the same rate limit applies to both APIs.

On this page