协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
intercom-common-errors【开发与工程】Diagnose and fix Intercom API errors by HTTP status code and error type. Use when encountering Intercom errors, debugging failed API requests, or troubleshooting integration issues. Trigger with phrases like "intercom error", "fix intercom", "intercom not working", "debug intercom", "intercom 401", "intercom 429".
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
name: intercom-common-errors description: 'Diagnose and fix Intercom API errors by HTTP status code and error type.
Use when encountering Intercom errors, debugging failed API requests,
or troubleshooting integration issues.
Trigger with phrases like "intercom error", "fix intercom",
"intercom not working", "debug intercom", "intercom 401", "intercom 429".
' allowed-tools: Read, Grep, Bash(curl:*) version: 1.6.0 license: MIT author: Jeremy Longshore jeremy@intentsolutions.io tags:
Quick reference for diagnosing and fixing Intercom REST API errors by HTTP
status code. Every Intercom error returns the same envelope, so triage is
fast: read the errors[].code, match it to the table below, apply the fix.
All Intercom errors share this shape:
{
"type": "error.list",
"request_id": "req_abc123",
"errors": [{ "code": "unauthorized", "message": "Access Token Invalid" }]
}
The full per-code catalog (causes + copy-paste fixes) lives in references/error-reference.md.
INTERCOM_ACCESS_TOKEN (Developer Hub > Your App > Authentication).curl and jq for the diagnostic commands.intercom-client SDK (npm install intercom-client).errors[].code in the Error Handling table below.Fast auth check:
curl -s https://api.intercom.io/me \
-H "Authorization: Bearer $INTERCOM_ACCESS_TOKEN" \
-H "Accept: application/json" | jq '.type'
# Returns "admin" when the token is valid
You resolve the request into one of three outcomes:
X-RateLimit-Reset and exponential backoff.request_id to hand to Intercom support along with the status-page state.| Error Code | HTTP | Retryable | Action |
|---|---|---|---|
unauthorized | 401 | No | Regenerate token |
forbidden | 403 | No | Add OAuth scope |
not_found | 404 | No | Verify resource ID |
conflict | 409 | No | Search before create |
parameter_invalid | 422 | No | Fix input data |
rate_limit_exceeded | 429 | Yes | Backoff and retry |
server_error | 500+ | Yes | Retry, check status page |
Limits: 10,000 req/min per app, 25,000 req/min per workspace. On 429,
read X-RateLimit-Reset and wait until that epoch before retrying.
401 — invalid token. The auth check returns nothing instead of "admin". Regenerate the token in Developer Hub and update the app's env. Full walkthrough: references/error-reference.md.
409 — duplicate contact. create fails because the email/external_id already exists. Search first, then create:
const existing = await client.contacts.search({
query: { field: "email", operator: "=", value: email },
});
return existing.data.length > 0
? existing.data[0]
: client.contacts.create({ role: "user", email, externalId });
429 — rate limited. Wrap the call in exponential backoff that honors
X-RateLimit-Reset. Full retry helper: references/error-reference.md.
For a full triage sweep (auth + rate limit + Intercom status in one command), run the script in references/diagnostics.md.
For deeper, end-to-end debugging of an Intercom integration — capturing request/response pairs, replaying failing calls, and correlating request_ids across a session — see the intercom-debug-bundle skill in this pack.