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.

NEED A HAND?

Let’s work through your integration.

Tell us what you’re connecting. For a failed request, include the requestId and error code, without your API key or customer data.

Contact support