APRESLY API V1
Troubleshooting
Find the cause of an error, inspect warnings and request history, and fix issues with keys, links and offer deadlines.
Verified against the production API: October 9, 2026
On this page
Find the request ID
Open Request history in API settings. Filter by key and outcome. By default, the panel shows the last 7 days, including method, HTTP status, error code and duration. It does not display payloads, emails or secrets.
The error’s requestId corresponds to the X-Request-Id header. A missing history entry does not prove that a call never ran: requests without a recognized key may not be recorded, and audit-storage outages can leave gaps.
Error codes
| HTTP | Code | What to do |
|---|---|---|
| 400 | INVALID_JSON |
Fix JSON syntax. Use a serializer instead of string concatenation. |
| 400 | INVALID_CURSOR |
Restart pagination and use the returned nextAfterId. |
| 401 | UNAUTHORIZED |
Check the Bearer header, secret and whether the key was revoked. |
| 403 | ACCOUNT_SUSPENDED |
Check your account’s service status or contact support. |
| 404 | CAMPAIGN_NOT_FOUND |
Check the ID and key’s account; list campaigns to confirm. |
| 404 | LEAD_NOT_FOUND |
No registration for this email in this campaign. Check spelling, case and aliases. |
| 404 | NOT_FOUND |
Check the endpoint path and HTTP method. |
| 409 | CAMPAIGN_NOT_PUBLISHED |
Publish the campaign before registration. |
| 413 | PAYLOAD_TOO_LARGE |
Reduce the JSON body to at most 16 KiB. |
| 415 | UNSUPPORTED_MEDIA_TYPE |
Set Content-Type: application/json. |
| 422 | VALIDATION_ERROR |
Check email, language, IDs, limits and extra fields or parameters. |
| 429 | RATE_LIMITED |
Wait Retry-After seconds. Keys share the account’s limit. |
| 500 | INTERNAL_ERROR |
Try later. If it persists, send the requestId to support. |
| 503 | SERVICE_UNAVAILABLE |
Retry with increasing backoff and a bounded number of attempts. |
Warnings in a successful response
Registration can succeed without links, a deadline or a timer. Warnings are not HTTP errors: inspect warnings even after 200 and 201.
| Warning | Meaning and next step |
|---|---|
CAMPAIGN_NOT_PUBLISHED |
Lookup found a historical lead in a draft. Publish the campaign to obtain links and a timer. |
COUNTDOWN_TOOLS_UNAVAILABLE |
Countdown tools are currently unavailable on the account. Check plan entitlements. API access remains available, but links and the timer are empty. |
NO_OFFER_PAGES |
No eligible offer pages in the campaign. Configure pages, then use lookup. |
NO_MAIL_TIMER |
No email countdown configured. Configure one if you want an image in the email. |
NO_DEADLINE |
The campaign mechanism did not determine a deadline. Check campaign type, activation rules and countdown settings. |
The deadline is null or expired
Lookup reads the current state without renewing an offer, so it can return an old deadline. Before a reminder, compare the UTC date to the current time. timeZone describes campaign configuration; it does not change the UTC date format in deadline.
Do not invent a deadline when it is null. Check NO_DEADLINE and campaign rules. Sending a deadline field in registration is rejected.
Registration did not send an email
That is expected: the API returns offer data. Your email platform or automation must send the message. Map offerLinks[].url to the button and optional mailTimerUrl to an image. The Apresly widget is still required to enforce expiration on your website.
A lost response or duplicate email
A timeout does not roll back the transaction. The first registration may have succeeded. Reconcile through lookup, and deduplicate delivery by source event in your system. created: false can follow a successful first registration, while created: true does not replace email delivery confirmation.
Rotate a key and contact support
To rotate a key, create a replacement, update and verify your integration, then revoke the old key. Other keys continue to work. Previously issued offer links remain subject to campaign rules.
Email [email protected] with the method, endpoint, HTTP status, error code, time and requestId. Do not send secrets or customer data. Remove them from screenshots as well.