> ## Documentation Index
> Fetch the complete documentation index at: https://docs.groovin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Known issues and troubleshooting

> Common problems and how to fix them, and what the API deliberately does not do.

## Troubleshooting

### My AI assistant keeps asking me to sign in

The browser sign-in did not finish. If your tool lets you set headers (Cursor, Claude Code), switch to an [API key](https://docs.groovin.ai/reference/mcp/connect.md), which does not expire.

### It worked before, and now everything fails

Your connection probably expired, which happens with browser sign-in. Reconnect the Groovin connector in your AI tool, or switch to an API key. This is not a Groovin outage, nor a LinkedIn restriction.

### "Couldn't register with Groovin's sign-in service"

The automatic setup of the connector failed. See [Sign-in fails](https://docs.groovin.ai/reference/mcp/oauth.md#sign-in-fails).

### The tools do not show up

Check that the address is exactly `https://api.groovin.ai/functions/v1/mcp-server`, that your config file is valid, and that your plan allows custom connectors. Then fully restart the app.

### I get a 429

LinkedIn or your CRM is slowing you down. Stop, wait at least 5 minutes, and space your calls out. See [Limits and quotas](https://docs.groovin.ai/reference/limits.md).

### The assistant says someone has not read my message, but they have

LinkedIn read receipts are only a hint, and a missing one does not mean unread.

* LinkedIn shows none when either of you turned off **Delivery and typing indicators**.
* InMails, and messages to people you are not connected with, often get none.
* The receipt goes on the latest message someone saw, so older messages usually show as not seen even when they were read.
* A receipt can take a while to appear.

A reply after your message does mean they read it, and so does `seen: true` on that message or on a later one you sent. In a group chat, `seen` only means at least one member did.

### A contact was not created

An item failed when its `crm_contact_id` is `null`, even in an HTTP 200 answer. Read its `outcome` and `error`. `multiple_*_matches` and `uniqueness_conflict` mean the person probably already exists in your CRM: review the records in `matched_crm_contact_ids`.

### My webhook stopped

Groovin turns a webhook off after 3 days of failures. You get an email when it happens. See [Delivery and retries](https://docs.groovin.ai/reference/webhooks/delivery.md).

### I do not see the Webhooks card

Webhooks are being rolled out by organization. Contact support if you need them.

## Known limitations

These are how things work today. Plan around them.

**No test mode.** Everything acts on your real LinkedIn account and CRM. Only the [connections import](https://docs.groovin.ai/reference/api/start-connections-import.md) has a preview, and even a preview reads your CRM, saves matches in Groovin and emails you.

**No undo.** A sent message or invitation cannot be taken back. Stopping an import does not remove what it created.

**No protection against repeats.** There are no idempotency keys. After a failed send, you must check by hand. See [A send failed](https://docs.groovin.ai/reference/errors.md#a-send-failed).

**No daily counter for LinkedIn.** Groovin does not count your messages, invitations or profile views against LinkedIn's limits. See [Limits and quotas](https://docs.groovin.ai/reference/limits.md).

**No rate-limit headers.** Answers do not say how much allowance you have left. Some routes report what they used, through `linkedin_requests`.

**No error codes.** Use the HTTP status. See [Errors](https://docs.groovin.ai/reference/errors.md).

**Reads use `POST`.** Every route uses `POST`, including those that only read.

**Most lists have no next page.** See [Long lists](https://docs.groovin.ai/reference/pagination.md).

**Field names vary between routes.** See [Data models](https://docs.groovin.ai/reference/data-models.md).

**Unknown fields are ignored.** On most routes, a misspelled optional field is ignored without an error, so check your field names.

**Invalid JSON is not refused.** A body that is not valid JSON is read as `{}`, with no error. On `linkedin/relations`, that reads your whole network: check your JSON before sending.

**Name matches can link a namesake.** When creating contacts, a single same-name contact with no LinkedIn URL is linked and gets this URL. Check who already exists first.

**Blocked people.** `crm/contacts` does not enforce your per-person creation blocklist. Check `is_crm_contact_creation_blocked` yourself.

**Webhooks are managed in the extension only.** There is no route to set them up.

**Affinity has fewer features.** Creating contacts and importing connections work with Attio and HubSpot only, and Affinity has no live CRM search.

## Still stuck?

Write to [support@groovin.ai](mailto:support@groovin.ai) with the tool you use and the exact error message. Never send your API key.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.