Errors

One error body everywhere, the codes, and what to retry.

Every error has the same body:

{
  "status": 429,
  "type": "errors/too_many_requests",
  "code": "safety-floor",
  "title": "Daily safety limit reached for invite.",
  "detail": "Daily safety limit reached for invite.",
  "retry_after_ms": 43200000
}
  • status and type are the contract: branch on them.
  • code is Swarmhit's finer reason, stable, for logs and support.
  • title and detail are one sentence a person can read, safe to show.
  • Some errors add a field: retry_after_ms (on a 429: wait at least this long), replied_at (recipient-replied), ends_at (whatsapp-new-chats-blocked).

Retry rule of thumb: retry 429 (after retry_after_ms), 502 and 503; never retry 400, 401, 403, 404, 409 or 422 unchanged.

The errors

HTTPtypecodeWhen
400errors/invalid_parametersbad-requestA body or query fails its schema, a required field is missing, the JSON does not parse.
401errors/unauthorizedunauthorizedMissing, wrong, revoked or expired API key.
401errors/invalid_credentialsbad-credentialsLinkedIn refused the email and password (or the TOTP secret), or a mailbox refused its login on a connect.
401errors/invalid_checkpoint_solutioncode-rejectedLinkedIn did not accept the code. The sign-in still waits: send the right code, or ask for a new one.
401errors/disconnected_accountno-session, session-expiredThe account has no working session (never signed in, LinkedIn signed it out, a WhatsApp number no longer linked). Reconnect it.
402errors/payment_requiredpayment-method-required, payment-failedNo valid card on file for live keys, or the charge for a new account was declined (see Authentication).
403errors/forbiddenforbiddenThe key was not made for this channel.
403errors/account_restrictedrestrictedLinkedIn restricted the account. A person must look before any retry.
403errors/account_restrictedwhatsapp-new-chats-blockedWhatsApp blocks this number from starting chats until ends_at; existing chats still work.
403errors/client_suspendedclient-suspendedYour company's access is suspended.
403errors/insufficient_permissionswhatsapp-refusedWhatsApp refused the action (not a group admin, not your message).
404errors/resource_not_foundnot-found, account-not-found, profile-not-foundNo such route, account, chat, message, invitation or profile (or not yours).
408errors/request_timeoutsign-in-timeout, connect-timeoutThe sign-in, or LinkedIn's answer to a cookie connect, took too long. Try again.
408errors/checkpoint_expiredno-attemptNo sign-in is waiting for a code or a live view any more. Start the connect again.
409errors/sign_in_in_progresssign-in-in-progressAnother sign-in for this account is running.
409errors/account_pausedpausedThe account is paused. Resume it first.
409errors/identity_mismatchidentity-mismatchThe session belongs to another LinkedIn member than this account's.
409errors/recipient_repliedrecipient-repliedunless_replied_since was set and the recipient wrote after it: nothing was sent. replied_at says when.
413errors/content_too_largebad-requestThe body is over the size limit.
422errors/not_supportednot-supportedSwarmhit does not offer this (a passthrough write, a hosted connection link, a feature switched off, some Sales Navigator InMail actions).
422errors/unsupportednot-supportedA Sales Navigator search URL or filter Swarmhit cannot run.
422errors/no_browsernot-supportedThe action needs a browser and this account (connected by cookie) has none.
422errors/feature_not_subscribedsales-seat-requiredThe member has no Premium or Sales Navigator seat (InMail).
422errors/insufficient_creditslinkedin-errorNo InMail credits left.
422errors/cannot_resend_yetinvite-limit, already-invitedLinkedIn's invitation limit is reached, or it will not let you invite this person again yet. Cool the account down; do not retry.
422errors/already_invited_recentlyalready-invitedAn invitation to this person is already pending. Treat it as sent.
422errors/too_many_charactersbad-requestAn invitation note over 300 characters (or over LinkedIn's limit for this member).
422errors/invalid_recipientinvalid-recipient, not-on-whatsapp, not-supportedThis person cannot be messaged from this account, or the number is not on WhatsApp.
422errors/limit_exceededwhatsapp-quota-reachedWhatsApp's new-chat quota for this number is spent for its cycle.
422errors/proxy_errorno-ip-in-countryNo IP is available in the account's country. Pick a nearby country.
429errors/too_many_requestsrate-limitedLinkedIn is limiting the account (its 429 or 999): nothing reaches LinkedIn until retry_after_ms has passed.
429errors/too_many_requestssafety-floorA daily safety cap is reached (see Write safety).
429errors/too_many_requestsaccount-busyAnother write, a sign-in, the minimum gap between writes, or a send with the same client_id in progress.
429errors/too_many_requestssign-in-throttledToo many sign-ins for this account lately.
500errors/unexpected_errorinternalA bug on our side, reported automatically.
502errors/unexpected_errorlinkedin-error, linkedin-endpoint-changed, sign-in-failedLinkedIn could not be reached or answered oddly, or the sign-in broke. Retry later.
502errors/attachment_upload_failedlinkedin-errorAn attachment could not be uploaded to LinkedIn; nothing was sent.
502errors/provider_unavailablebrowser-errorThe account's browser could not start.
502errors/provider_errorwhatsapp-errorWhatsApp failed the call. Retry later.
503errors/proxy_errorproxy-drift, proxy-downThe account's exit IP left its country or does not answer. The account is held until it is back; do not reconnect it for this.
503errors/no_client_sessionwhatsapp-connectingThe number is between two connections. Retry in a moment.
503errors/provider_unavailableproxy-provider-unavailableA service Swarmhit depends on is down or asked us to slow down.
503errors/service_unavailablebrowser-busy, linkedin-errorEvery sign-in browser is busy, the Sales Navigator session is being renewed, or an upload took too long. Retry shortly.
LinkedIn'serrors/unexpected_errorlinkedin-errorLinkedIn answered an error Swarmhit has no better row for: passed through with LinkedIn's own status.

Email

HTTPtypeWhen
400errors/invalid_headersA custom_headers entry that is not allowed, or a line break in one.
401errors/disconnected_accountThe mailbox refused Swarmhit's login: reconnect it.
422errors/cant_send_messageThe mail server refused the message.
422errors/send_as_deniedfrom is not the mailbox's own address.
422errors/parent_mail_not_foundreply_to names no mail of this mailbox.
422errors/not_supported_by_providerThe mailbox does not support this (for example the address book).
429errors/too_many_requestsConnects and login checks are over 120 per 10 minutes, or the mail provider asked to slow down.
502errors/provider_errorThe mail service failed the call. Retry later.
503errors/provider_unavailableThe mail service is unavailable for a moment. Retry shortly.

The API reference lists, on each endpoint, the errors it can answer. Every 429 is answered before anything reaches LinkedIn or WhatsApp, so retrying it can never send twice.

On this page