Skip to main content

Quick fixes

This list can grow: some statuses come straight from LinkedIn. A 401 or 403 can also be LinkedIn’s answer, in which case error mentions LinkedIn.

A send failed

After an error on a send, the message or invitation may already be gone. Never retry automatically.
If linkedin/messages or linkedin/invitations answers a 5xx, a 429, or no answer at all (a network error, or a timeout in your tool):
  1. Wait a few minutes. Groovin’s copy of your inbox can lag behind LinkedIn.
  2. Check. Read the conversation with linkedin/chat-messages. If you sent by profile and have no conversation_id, find it in the conversation list. For an invitation, check the pending invitations.
  3. Only if it is still not there, try again, once.
In a browser, a gateway timeout can show up as a network error rather than a 504. Treat it the same way.

What an error looks like

Every failure answers with an HTTP status and one field:
There are no error codes, and the text can change. In your code, decide what to do from the HTTP status. Show the text to a person, or give it to your AI assistant.
On a 429 or a 5xx, the text ends with advice on what to do next. On a send, that advice is to check before re-sending.
That advice can say “Re-sending is safe” when it is not. On a connections import, a domain lookup or a profile read, follow the page of that route instead.

An HTTP 200 can hold failures

Routes that handle several items answer 200 even when some items failed. Always check each item:
This applies to crm/contacts, crm/contacts/sync-toggle, crm/contacts/find-linkedin-url and crm/companies/find-domains.

When is it safe to retry?

Each page says what repeating that call does, and What each call really does lists them all. There are no idempotency keys: Groovin cannot recognize a repeated request on your behalf.

On the MCP

Your AI assistant gets these same messages, but as a tool result rather than an HTTP status. See MCP errors.