From cohere-pack
Diagnoses and fixes Cohere API v2 errors like missing model fields, invalid tokens, rate limits, and embed input issues. Provides TypeScript SDK corrections and curl tests.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin cohere-packThis skill is limited to using the following tools:
Quick reference for real Cohere API v2 errors with exact messages, causes, and fixes.
Executes Cohere API incident runbook: triages outages with curl endpoint tests and status checks, mitigates via kubectl, handles postmortems for integration failures.
Diagnoses and fixes Anthropic Claude API errors by HTTP status code, covering invalid requests, authentication, permissions, rate limits, and overloads.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Share bugs, ideas, or general feedback.
Quick reference for real Cohere API v2 errors with exact messages, causes, and fixes.
cohere-ai SDK installedCO_API_KEY configuredCohereError: model is required
Cause: API v2 requires model for all endpoints (Chat, Embed, Rerank, Classify).
Fix:
// Wrong (v1 style)
await cohere.chat({ messages: [...] });
// Correct (v2)
await cohere.chat({ model: 'command-a-03-2025', messages: [...] });
CohereError: embedding_types is required for embed models v3 and higher
Fix:
await cohere.embed({
model: 'embed-v4.0',
texts: ['hello'],
inputType: 'search_document',
embeddingTypes: ['float'], // Required for v3+
});
CohereError: input_type is required for embed models v3 and higher
Fix: Use one of: search_document, search_query, classification, clustering, image.
CohereError: invalid api token
Cause: CO_API_KEY is missing, wrong, or revoked.
Fix:
# Verify key is set
echo $CO_API_KEY
# Test directly
curl -H "Authorization: Bearer $CO_API_KEY" \
https://api.cohere.com/v2/chat \
-H "Content-Type: application/json" \
-d '{"model":"command-r7b-12-2024","messages":[{"role":"user","content":"hi"}]}'
CohereError: You are using a Trial key, which is limited to N calls/minute
Rate limits by key type:
| Key Type | Chat | Embed | Rerank | Other |
|---|---|---|---|---|
| Trial | 20/min | 5/min | 5/min | 1000/month |
| Production | 1000/min | 1000/min | 1000/min | Unlimited |
Fix:
import { CohereError } from 'cohere-ai';
try {
await cohere.chat({ model: 'command-a-03-2025', messages: [...] });
} catch (err) {
if (err instanceof CohereError && err.statusCode === 429) {
// Back off and retry
await new Promise(r => setTimeout(r, 60_000)); // wait 60s for trial keys
// retry...
}
}
CohereError: each unique label requires at least 2 examples
Fix:
await cohere.classify({
model: 'embed-english-v3.0',
inputs: ['This product is amazing'],
examples: [
// Need at least 2 examples PER label
{ text: 'I love it', label: 'positive' },
{ text: 'Great product', label: 'positive' },
{ text: 'Terrible', label: 'negative' },
{ text: 'Worst ever', label: 'negative' },
],
});
CohereError: too many documents, max is 1000
Fix: Batch your documents:
async function batchRerank(query: string, docs: string[], topN = 10) {
const BATCH = 1000;
let allResults: any[] = [];
for (let i = 0; i < docs.length; i += BATCH) {
const batch = docs.slice(i, i + BATCH);
const resp = await cohere.rerank({
model: 'rerank-v3.5',
query,
documents: batch,
topN,
});
allResults.push(
...resp.results.map(r => ({ ...r, index: r.index + i }))
);
}
return allResults.sort((a, b) => b.relevanceScore - a.relevanceScore).slice(0, topN);
}
CohereError: response_format is not supported with documents or tools
Cause: response_format: { type: 'json_object' } cannot be combined with documents or tools.
Fix: Use either JSON mode OR document/tool mode, not both. For structured RAG output, parse the text response yourself.
CohereError: internal server error
Fix: Retry with exponential backoff. If persistent, check status.cohere.com.
CohereTimeoutError: Request timed out
Fix: The SDK has a default timeout. Increase it or reduce payload:
const cohere = new CohereClientV2({
token: process.env.CO_API_KEY,
timeoutInSeconds: 120, // default is lower
});
# Check Cohere service status
curl -s https://status.cohere.com/api/v2/status.json | jq '.status'
# Verify API key works
curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $CO_API_KEY" \
https://api.cohere.com/v2/chat \
-H "Content-Type: application/json" \
-d '{"model":"command-r7b-12-2024","messages":[{"role":"user","content":"ping"}]}'
# Check installed SDK version
npm list cohere-ai 2>/dev/null || pip show cohere 2>/dev/null
import { CohereError, CohereTimeoutError } from 'cohere-ai';
function diagnoseCohereError(err: unknown): string {
if (err instanceof CohereTimeoutError) {
return 'TIMEOUT: Increase timeoutInSeconds or reduce input size';
}
if (err instanceof CohereError) {
switch (err.statusCode) {
case 400: return `BAD_REQUEST: ${err.message}`;
case 401: return 'AUTH: Check CO_API_KEY';
case 429: return 'RATE_LIMIT: Back off or upgrade key';
case 500: return 'SERVER: Retry later, check status.cohere.com';
default: return `UNKNOWN (${err.statusCode}): ${err.message}`;
}
}
return `UNEXPECTED: ${String(err)}`;
}
For comprehensive debugging, see cohere-debug-bundle.