| name | algolia-common-errors |
| description | Diagnose and fix the top Algolia API errors: 400, 403, 404, 429, ApiError,
RetryError, and indexing failures.
Trigger: "algolia error", "fix algolia", "algolia not working",
"debug algolia", "algolia 429", "algolia 403".
|
| allowed-tools | Read, Grep, Bash(curl:*), Bash(npm:*) |
| version | 1.6.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","search","algolia"] |
| compatibility | Designed for Claude Code |
Algolia Common Errors
Overview
Quick reference for the most common Algolia errors, their root causes, and fixes. All examples use algoliasearch v5 client error types.
Error Reference
1. Invalid Application-ID or API key (403)
ApiError: Invalid Application-ID or API key
Cause: App ID or API key is wrong, expired, or deleted.
Fix:
echo "APP_ID: $ALGOLIA_APP_ID"
echo "KEY set: ${ALGOLIA_ADMIN_KEY:+yes}"
curl -s "https://${ALGOLIA_APP_ID}-dsn.algolia.net/1/indexes" \
-H "X-Algolia-Application-Id: ${ALGOLIA_APP_ID}" \
-H "X-Algolia-API-Key: ${ALGOLIA_ADMIN_KEY}" | head -c 200
Get fresh keys: dashboard.algolia.com > Settings > API Keys.
2. Method not allowed with this API key (403)
ApiError: Method not allowed with this API key
Cause: Using a Search-Only key for a write operation (saveObjects, setSettings, etc.).
Fix: Use the Admin API key for write operations. Search-Only keys only permit search ACL.
const client = algoliasearch(appId, searchOnlyKey);
await client.saveObjects({ ... });
const client = algoliasearch(appId, adminKey);
await client.saveObjects({ ... });
3. Index does not exist (404)
ApiError: Index products_staging does not exist
Cause: Searching an index that hasn't been created yet. Algolia creates indices lazily on first saveObjects.
Fix: Index some data first, or check the index name for typos:
curl -s "https://${ALGOLIA_APP_ID}-dsn.algolia.net/1/indexes" \
-H "X-Algolia-Application-Id: ${ALGOLIA_APP_ID}" \
-H "X-Algolia-API-Key: ${ALGOLIA_ADMIN_KEY}" | jq '.items[].name'
4. Rate limit exceeded (429)
ApiError: Too Many Requests
Cause: API key's maxQueriesPerIPPerHour exceeded, or server-side indexing rate limit hit.
Fix:
const BATCH_SIZE = 500;
for (const batch of chunks) {
await client.saveObjects({ indexName: 'products', objects: batch });
await new Promise(r => setTimeout(r, 200));
}
5. Record is too big (400)
ApiError: Record at the position 0 is too big size=15234 bytes. Contact us if you need a higher quota.
Cause: Single record exceeds 10KB (free/Build plan) or 100KB (paid plans).
Fix:
function trimForAlgolia(record: any) {
const { full_html, raw_content, internal_notes, ...searchable } = record;
return searchable;
}
function truncateDescription(record: any, maxChars = 5000) {
return {
...record,
description: record.description?.substring(0, maxChars),
};
}
6. Attribute not valid for filtering (400)
ApiError: Attribute "price" is not in attributesForFaceting
Cause: Using filters or facetFilters on an attribute not configured for faceting.
Fix:
await client.setSettings({
indexName: 'products',
indexSettings: {
attributesForFaceting: ['category', 'brand', 'filterOnly(price)', 'filterOnly(in_stock)'],
},
});
7. RetryError: Unreachable hosts
RetryError: Unreachable hosts - yourass might not be connected to the internet
Cause: Network/DNS issue. Can't reach *.algolia.net or *.algolianet.com.
Fix:
nslookup ${ALGOLIA_APP_ID}-dsn.algolia.net
curl -v "https://${ALGOLIA_APP_ID}-dsn.algolia.net/1/indexes" 2>&1 | grep "Connected to"
8. Invalid filter syntax (400)
ApiError: Invalid syntax for filter: 'price > AND < 100'
Fix: Algolia filter syntax reference:
# Correct syntax
price > 50 AND price < 100 # Numeric range
category:shoes # String equality
NOT category:sandals # Negation
(brand:Nike OR brand:Adidas) # Grouped OR
in_stock = true # Boolean (stored as 0/1)
_tags:featured # Tag filter
Quick Diagnostic Script
#!/bin/bash
echo "=== Algolia Diagnostics ==="
echo "App ID: ${ALGOLIA_APP_ID:-NOT SET}"
echo "Admin key: ${ALGOLIA_ADMIN_KEY:+SET (${#ALGOLIA_ADMIN_KEY} chars)}"
echo ""
echo "=== Connectivity ==="
curl -s -o /dev/null -w "HTTP %{http_code} in %{time_total}s" \
"https://${ALGOLIA_APP_ID}-dsn.algolia.net/1/indexes" \
-H "X-Algolia-Application-Id: ${ALGOLIA_APP_ID}" \
-H "X-Algolia-API-Key: ${ALGOLIA_ADMIN_KEY}"
echo ""
echo "=== SDK Version ==="
npm list algoliasearch 2>/dev/null || echo "Not installed"
echo "=== Algolia Status ==="
curl -s https://status.algolia.com/api/v2/status.json | jq -r '.status.description' 2>/dev/null
Escalation Path
- Check status.algolia.com first
- Collect debug info with
algolia-debug-bundle skill
- Search Algolia Support articles
- Open support ticket with request ID from error response
Resources
Next Steps
For comprehensive debugging, see algolia-debug-bundle.