Skip to content
Back to skills

Algolia Common Errors

ASecurity

'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\". '

  • 3 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 12, 2026
ai-agentstypescriptgobashdebugginggitapibackendsecurity

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumUses curl or wget to download content

Pro shows the line behind each finding and how to fix it

Scanned September 12, 2026

npx -y skills add thedixitjain/the-mega-skill-library --skill algolia-common-errors --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Algolia Common Errors?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Algolia Common Errors
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thedixitjain-algolia-common-errors/badge)](https://www.skillsdirectory.com/skills/thedixitjain-algolia-common-errors)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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:*)"
category: backend-and-data
source_repo: jeremylongshore/claude-code-plugins-plus-skills
source_path: "plugins/saas-packs/algolia-pack/skills/algolia-common-errors/SKILL.md"
source_url: https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/HEAD/plugins/saas-packs/algolia-pack/skills/algolia-common-errors/SKILL.md
---

# 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:**

```bash
# Verify your env vars are set
echo "APP_ID: $ALGOLIA_APP_ID"
echo "KEY set: ${ALGOLIA_ADMIN_KEY:+yes}"

# Test with curl
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.

```typescript
// Wrong: search-only key for indexing
const client = algoliasearch(appId, searchOnlyKey);
await client.saveObjects({ ... }); // 403

// Right: admin key for indexing
const client = algoliasearch(appId, adminKey);
await client.saveObjects({ ... }); // Works
```

---

### 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:

```bash
# List all indices in your app
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:**

```typescript
// Algolia's built-in retry handles transient 429s.
// For sustained rate limits:

// 1. Reduce batch frequency
const BATCH_SIZE = 500;  // Down from 1000

// 2. Add delay between batches
for (const batch of chunks) {
  await client.saveObjects({ indexName: 'products', objects: batch });
  await new Promise(r => setTimeout(r, 200)); // 200ms pause between batches
}

// 3. Check/increase key rate limit
// Dashboard > Settings > API Keys > Edit key > Rate limit
```

---

### 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:**

```typescript
// Strip unnecessary fields before indexing
function trimForAlgolia(record: any) {
  const { full_html, raw_content, internal_notes, ...searchable } = record;
  return searchable;
}

// Or split long text into chunks
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:**

```typescript
await client.setSettings({
  indexName: 'products',
  indexSettings: {
    attributesForFaceting: ['category', 'brand', 'filterOnly(price)', 'filterOnly(in_stock)'],
  },
});
// Wait for settings to propagate
```

---

### 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:**

```bash
# Test DNS resolution
nslookup ${ALGOLIA_APP_ID}-dsn.algolia.net

# Test HTTPS connectivity
curl -v "https://${ALGOLIA_APP_ID}-dsn.algolia.net/1/indexes" 2>&1 | grep "Connected to"

# Check firewall — Algolia needs outbound HTTPS (443) to:
# ${APP_ID}.algolia.net
# ${APP_ID}-1.algolianet.com
# ${APP_ID}-2.algolianet.com
# ${APP_ID}-3.algolianet.com
```

---

### 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

```bash
#!/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

1. Check [status.algolia.com](https://status.algolia.com) first
2. Collect debug info with `algolia-debug-bundle` skill
3. Search [Algolia Support](https://support.algolia.com) articles
4. Open support ticket with request ID from error response

## Resources

- [Algolia Status Page](https://status.algolia.com)
- [API Key Restrictions](https://www.algolia.com/doc/guides/security/api-keys/in-depth/api-key-restrictions/)
- [Troubleshooting FAQ](https://support.algolia.com/hc/en-us/categories/4406981828753)

## Next Steps

For comprehensive debugging, see `algolia-debug-bundle`.

---

**Source:** [`jeremylongshore/claude-code-plugins-plus-skills`](https://github.com/jeremylongshore/claude-code-plugins-plus-skills) → `plugins/saas-packs/algolia-pack/skills/algolia-common-errors/SKILL.md`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.