Two minutes, and worth doing before anything else: almost every integration problem later turns out to be one of the two things this proves.
1. Mint a key
Create key on the dashboard. You see the whole key once. Put it somewhere your code reads from the environment rather than from a file in the repository.
2. Ask what you have
curl "https://makehybrid.com/linkedin/connect/accounts" \ -H "X-API-KEY: $MAKEHYBRID_KEY"
An answer means the key is valid and the plan is active, and the list it returns is every LinkedIn account your organisation has connected. Two things proved and the one piece of input every other call needs — the account id — in a single request that touches LinkedIn not at all.
3. Learn the error shape now
{"type":"errors/payment_required","status":402,"detail":"..."}
- 401 — the key is missing, wrong or revoked.
- 402 — the plan is not paid for, or the trial is over.
- 404 — not there, or not yours. Deliberately the same answer.
- 429 — too many requests, or LinkedIn throttling the account.
- 503 — the hop in front of LinkedIn did not answer; the body carries the bare status it saw.
Write one handler against that shape and every route in the catalog is covered. The detail field is written to be shown to a person, so showing it is usually the right thing to do.
Questions people ask
Can I make the first call from a chat instead?
Yes. Connect your assistant and ask which accounts are connected; it makes the same kind of call and reads the answer back. Doing it once by hand is still worth it, because the error shape you see here is the one an AI agent will be reading too.
Does a project room need this key?
Not to open a room or ask a built-in AI agent. Only an agent of yours that acts on LinkedIn needs a key, and the room makes that one for itself.