Algolia Search API
Core indexing and search API for adding, updating and deleting records and querying them with typo-tolerant, faceted, geo-aware and rule-driven search served from globally distributed search nodes. The largest surface in the estate at 78 operations, and the one carrying the retry strategy, asynchronous-task and API-key ACL semantics the rest of the platform inherits.
Operations 78
Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay
Ask an LLM
“Can I call a Search API endpoint the client library doesn't wrap yet with a raw GET?”
“Is there a generic way to read from an arbitrary Search API path?”
Tell an agent
Send a raw GET request to the Search API path {path}.
Call GET on Search endpoint {path} with query parameters {parameters}.
Ask an LLM
“What's the way to POST to a new Search API endpoint before the SDK supports it?”
“Can I make a raw POST call to any Search path?”
Tell an agent
Send a raw POST request to the Search API path {path}.
POST to Search endpoint {path} passing query parameters {parameters}.
Ask an LLM
“How can I send a PUT to a Search API path that has no dedicated method?”
“Can I replace something at a custom Search endpoint using a raw PUT call?”
Tell an agent
Send a raw PUT request to the Search API path {path}.
Issue a PUT to Search endpoint {path} with query parameters {parameters}.
DELETE
/{path}
Send a custom DELETE request to the Search API · Send requests to the Algolia REST API
#
Ask an LLM
“How do I send a raw DELETE to a Search API path the client doesn't cover?”
“Can I call DELETE on an arbitrary Search endpoint?”
Tell an agent destructive · confirm first
Send a raw DELETE request to the Search API path {path}.
Issue a DELETE against Search endpoint {path} with query parameters {parameters}.
Ask an LLM
“How do I run a search query against my products index?”
“What's the maximum number of hits a single search can return?”
Tell an agent
Search the index {indexName}.
Run a query against just the {indexName} index and return the matching hits.
Ask an LLM
“Can I search my products and my articles indices in a single API call?”
“Is it possible to stop running the remaining queries once one returns enough hits?”
Tell an agent
Run these search queries together in one request: {requests}.
Execute multi-index queries {requests} using strategy {strategy}.
POST
/1/indexes/{indexName}/facets/{facetName}/query
Search the values of a facet · Search for facet values
#
Ask an LLM
“How can I let users search within a long list of brand filter values?”
“Why doesn't facet value search work when I have many searchable facets?”
Tell an agent
Search the values of facet {facetName} in index {indexName} for {facetQuery}.
Return up to {maxFacetHits} {facetName} values from {indexName}.
Ask an LLM
“What's the difference between browsing and searching when I want raw matching records?”
“How can I page through more than 1,000 records in one index using a cursor?”
Tell an agent
Browse the records in index {indexName}.
Fetch the next page of up to 1,000 records from {indexName} with the browse endpoint.
POST
/1/indexes/{indexName}
Add a record with an auto-generated ID · Add a new record (with auto-generated object ID)
#
Ask an LLM
“How do I add a new record to an index and let Algolia generate its ID?”
“Does adding a record create the index if it doesn't exist?”
Tell an agent
Add a new record to index {indexName} with an auto-generated object ID.
Insert this record into {indexName} and return its new objectID.
Ask an LLM
“How do I delete an entire index along with its settings?”
“What happens to replica indices and analytics when I delete an index?”
Tell an agent destructive · confirm first
Delete the index {indexName}.
Permanently remove index {indexName} and all its settings.
Ask an LLM
“How can I fetch a single record if I know its object ID?”
“Can I only return certain attributes when retrieving a record?”
Tell an agent
Get record {objectID} from index {indexName}.
Retrieve only {attributesToRetrieve} of record {objectID} in {indexName}.
Ask an LLM
“How do I overwrite a record completely when I know its object ID?”
“Will saving a record with an existing ID replace the whole thing?”
Tell an agent
Replace record {objectID} in index {indexName} with this content.
Create or fully overwrite the record with ID {objectID} in {indexName}.
Ask an LLM
“How do I remove a single record from my index by ID?”
“Can I delete one product from search without touching the rest?”
Tell an agent destructive · confirm first
Delete record {objectID} from index {indexName}.
Remove the single object {objectID} from {indexName}.
POST
/1/indexes/{indexName}/deleteByQuery
Delete records matching a filter · Delete records matching a filter
#
Ask an LLM
“Can I delete all records that match a filter, like everything out of stock?”
“Why is deleting by query discouraged, and does it accept an empty filter?”
Tell an agent destructive · confirm first
Delete every record in {indexName} matching filter {filters}.
Remove records from {indexName} whose facets match {facetFilters}.
POST
/1/indexes/{indexName}/clear
Delete all records but keep index settings · Delete all records from an index
#
Ask an LLM
“How do I empty an index but keep its settings, synonyms and rules?”
“Can I wipe every record from an index without deleting the index itself?”
Tell an agent destructive · confirm first
Clear all records from index {indexName}.
Empty {indexName} of records while keeping its settings, synonyms and rules.
POST
/1/indexes/{indexName}/{objectID}/partial
Update some attributes of one record · Add or update attributes
#
Ask an LLM
“How can I change just the price of one record without resending the whole thing?”
“Can a partial update create the record if it doesn't exist yet?”
Tell an agent
Update only the given attributes of record {objectID} in {indexName}.
Partially update record {objectID} in {indexName}, creating it if missing: {createIfNotExists}.
POST
/1/indexes/{indexName}/batch
Batch add, update or delete records in one index · Batch indexing operations on one index
#
Ask an LLM
“How can I send many record additions and deletions to a single index in one request?”
“Are batch actions applied in the order I list them?”
Tell an agent
Apply these batch actions to index {indexName}: {requests}.
Send one batch of adds, updates and deletes {requests} to {indexName}.
POST
/1/indexes/*/batch
Batch record changes across multiple indices · Batch indexing operations on multiple indices
#
Ask an LLM
“Can one request update records in several different indices at once?”
“Is there a single call to write to my products and categories indices together?”
Tell an agent
Run these cross-index batch actions: {requests}.
Apply record changes {requests} spanning several indices in a single request.
Ask an LLM
“How do I fetch several records by ID, possibly from different indices, in one call?”
“Are records returned in the same order I requested them?”
Tell an agent
Retrieve these records by object ID: {requests}.
Fetch multiple records from different indices in one call using {requests}.
Ask an LLM
“What searchable attributes and ranking does my index currently use?”
“How can I read the current configuration of an index?”
Tell an agent
Get the settings of index {indexName}.
Show me the current ranking and relevance configuration of {indexName}.
Ask an LLM
“How do I change which attributes are searchable and in what order?”
“Can I push settings changes to replica indices too?”
Tell an agent
Set the searchable attributes of {indexName} to {searchableAttributes}.
Make {attributesForFaceting} filterable facets on index {indexName}.
Ask an LLM
“How do I look up one synonym definition by its ID?”
“What words does a particular synonym entry map together?”
Tell an agent
Get synonym {objectID} from index {indexName}.
Show the definition of synonym {objectID} in {indexName}.
PUT
/1/indexes/{indexName}/synonyms/{objectID}
Create or replace a synonym · Create or replace a synonym
#
Ask an LLM
“How do I make 'tee' and 't-shirt' match each other in search?”
“Can I add a one-way synonym or an alternative correction?”
Tell an agent
Save synonym {objectID} in {indexName} as type {type} linking {synonyms}.
Create a one-way synonym {objectID} on {indexName} from {input} to {synonyms}.
Ask an LLM
“How do I remove a single synonym from an index?”
“Can I delete a synonym and have replicas drop it too?”
Tell an agent destructive · confirm first
Delete synonym {objectID} from index {indexName}.
Remove synonym {objectID} from {indexName} and its replicas.
POST
/1/indexes/{indexName}/synonyms/batch
Create or replace many synonyms at once · Create or replace synonyms
#
Ask an LLM
“Can I upload a whole list of synonyms in one request?”
“Is it possible to replace all existing synonyms with a new set?”
Tell an agent
Upload a batch of synonyms to index {indexName}.
Replace every existing synonym in {indexName} with this new batch.
POST
/1/indexes/{indexName}/synonyms/clear
Delete all synonyms from an index · Delete all synonyms
#
Ask an LLM
“How do I wipe out all synonyms on an index?”
“Can I clear synonyms on the primary and its replicas together?”
Tell an agent destructive · confirm first
Delete all synonyms from index {indexName}.
Clear every synonym in {indexName}.
Ask an LLM
“Which synonyms are defined on my index?”
“Can I find synonyms of a certain type that mention a word?”
Tell an agent
List the synonyms on index {indexName}.
Search {indexName}'s synonyms for {query} of type {type}.
Ask an LLM
“Which API keys exist for my Algolia application?”
“What permissions do each of my API keys have?”
Tell an agent
List all API keys for this application.
Show every API key with its permissions and restrictions.
Ask an LLM
“How do I create a search-only key restricted to certain indices?”
“Can I limit a new key's queries per IP per hour or give it an expiry?”
Tell an agent
Create an API key with permissions {acl}.
Create a key with ACL {acl} limited to indices {indexes}, described as {description}.
Ask an LLM
“What can a particular API key do, and which indices can it access?”
“Can a non-admin key look up its own restrictions?”
Tell an agent
Get the permissions of API key {key}.
Show the restrictions and ACL on key {key}.
Ask an LLM
“How do I change the permissions on an existing API key?”
“Do attributes I leave out when updating a key get reset?”
Tell an agent
Update API key {key} to have permissions {acl}.
Change key {key} to ACL {acl} restricted to indices {indexes}.
Ask an LLM
“How do I revoke an API key that leaked?”
“Can I delete a key I no longer use?”
Tell an agent destructive · confirm first
Delete API key {key}.
Revoke the key {key} so it stops working.
Ask an LLM
“Can I bring back an API key I deleted by mistake?”
“What happens to a restored key's validity, and are old deleted keys always recoverable?”
Tell an agent
Restore the deleted API key {key}.
Undo the deletion of key {key}.
Ask an LLM
“How do I look up one merchandising rule by its ID?”
“What conditions and consequences does a given rule have?”
Tell an agent
Get rule {objectID} from index {indexName}.
Show the conditions and consequence of search rule {objectID} in {indexName}.
PUT
/1/indexes/{indexName}/rules/{objectID}
Create or replace a search rule · Create or replace a rule
#
Ask an LLM
“How do I pin a product to the top when someone searches a specific term?”
“Can I create a rule that's only active during a date range?”
Tell an agent
Save rule {objectID} on {indexName} with consequence {consequence}.
Create rule {objectID} on {indexName} that applies {consequence} when {conditions}.
Ask an LLM
“How can I remove one merchandising rule?”
“Can I delete a rule from an index and its replicas together?”
Tell an agent destructive · confirm first
Delete rule {objectID} from index {indexName}.
Remove the search rule {objectID} from {indexName}.
POST
/1/indexes/{indexName}/rules/batch
Create or update many rules at once · Create or update rules
#
Ask an LLM
“Can I upload a batch of search rules in a single request?”
“Is there a way to replace all existing rules with a new set?”
Tell an agent
Upload a batch of rules to index {indexName}.
Replace all existing rules on {indexName} with this new batch.
Ask an LLM
“How do I remove every rule on an index at once?”
“Can I wipe all merchandising rules and start over?”
Tell an agent destructive · confirm first
Delete all rules from index {indexName}.
Clear every search rule in {indexName}.
Ask an LLM
“Which rules are set up on my index?”
“Can I find only the enabled rules that match a query?”
Tell an agent
List the rules on index {indexName}.
Search {indexName}'s rules for {query}.
POST
/1/dictionaries/{dictionaryName}/batch
Add or delete dictionary entries · Add or delete dictionary entries
#
Ask an LLM
“How do I add custom stop words or plurals to Algolia's dictionaries?”
“Can I clear existing custom dictionary entries while adding new ones?”
Tell an agent
Apply these entry changes to the {dictionaryName} dictionary: {requests}.
Replace all custom entries in {dictionaryName} with {requests}.
POST
/1/dictionaries/{dictionaryName}/search
Search dictionary entries · Search dictionary entries
#
Ask an LLM
“Is a given word already in the stop word dictionary?”
“Can I look up custom and standard plural entries for a language?”
Tell an agent
Search the {dictionaryName} dictionary for {query}.
Find {language} entries matching {query} in {dictionaryName}.
Ask an LLM
“For which languages have I turned off the standard stop words?”
“What are my current dictionary settings?”
Tell an agent
Get my dictionary settings.
Show which languages have standard dictionary entries disabled.
PUT
/1/dictionaries/*/settings
Turn standard stop words on or off by language · Update dictionary settings
#
Ask an LLM
“How do I disable Algolia's built-in stop words for French?”
“Can I re-enable standard dictionary entries for a language?”
Tell an agent
Set standard dictionary entries to {disableStandardEntries}.
Turn off standard stop words for the languages in {disableStandardEntries}.
GET
/1/dictionaries/*/languages
List languages supported by dictionaries · List available languages
#
Ask an LLM
“Which languages support plurals, segmentation or stop word dictionaries?”
“How many custom dictionary entries do I have per language?”
Tell an agent
List the supported dictionary languages.
Show each language with its dictionary types and custom entry count.
Ask an LLM
“How do I move one user's data to a different cluster?”
“How long does it take to reassign a user ID to another cluster?”
Tell an agent
Assign user {userID} to cluster {cluster}.
Move user ID {userID} onto cluster {cluster}.
Ask an LLM
“Which user IDs are assigned to my clusters?”
“Can I page through the user-to-cluster mapping?”
Tell an agent
List the user IDs mapped to clusters.
Show page {page} of user ID assignments with {hitsPerPage} per page.
Ask an LLM
“Can I assign a whole list of user IDs to a cluster at once?”
“Does bulk assignment let me move users who are already assigned?”
Tell an agent
Assign users {users} to cluster {cluster}.
Bulk-assign the user IDs {users} to {cluster} on behalf of {userID}.
Ask an LLM
“Which users hold the most records on each cluster?”
“Who are the ten biggest users by record count in my multi-cluster setup?”
Tell an agent
Show the top user IDs by record count per cluster.
List the 10 largest users on each cluster.
Ask an LLM
“Which cluster is a particular user assigned to?”
“How many records does one user ID have?”
Tell an agent
Get the mapping for user ID {userID}.
Show which cluster user {userID} lives on.
Ask an LLM
“How do I remove a user and all their data from my clusters?”
“Can I delete one user ID from a multi-cluster application?”
Tell an agent destructive · confirm first
Delete user ID {userID} from the clusters.
Remove user {userID} and their associated data.
Ask an LLM
“Which clusters are available in my multi-cluster setup?”
“What clusters can I assign users to?”
Tell an agent
List my clusters.
Show all available clusters in this application.
Ask an LLM
“Can I search for user IDs matching a partial string?”
“Why don't newly assigned users show up right away when I search user IDs?”
Tell an agent
Search user IDs for {query}.
Find user IDs matching {query} on cluster {clusterName}.
GET
/1/clusters/mapping/pending
Check if user migrations are still pending · Get migration and user mapping status
#
Ask an LLM
“Is my batch user assignment or cluster migration finished?”
“Are there any pending user mappings right now?”
Tell an agent
Check whether any user mappings are still pending.
Show pending user migrations and the clusters involved.
Ask an LLM
“Which IP addresses are allowed to access my application?”
“What's on my application's source allowlist?”
Tell an agent
List the allowed sources for my application.
Show every IP range on the access allowlist.
Ask an LLM
“How do I overwrite my entire list of allowed IP sources?”
“Can I swap the allowlist for a new set of IP ranges in one go?”
Tell an agent destructive · confirm first
Replace my allowed sources with this new list.
Overwrite the full IP allowlist with the ranges I provide.
Ask an LLM
“How do I allow one more IP address to access my app?”
“Can I add a description to an allowed IP range?”
Tell an agent
Add {source} to the allowed sources.
Allowlist IP range {source} described as {description}.
Ask an LLM
“How do I revoke access for a single IP range?”
“Can I take one address off my allowed sources?”
Tell an agent destructive · confirm first
Remove {source} from the allowed sources.
Delete allowlist entry {source}.
Ask an LLM
“Where can I see the recent API calls made to my application?”
“How long are request logs kept, and can I filter to errors only?”
Tell an agent
Get the latest API log entries.
Show {length} log entries of type {type} for index {indexName}.
Ask an LLM
“Has my application-wide task, like a dictionary update, finished?”
“What's the status of an app-level task ID?”
Tell an agent
Check the status of application task {taskID}.
Tell me if app-level task {taskID} is published.
Ask an LLM
“How can I tell when my record updates have been applied to the index?”
“Is an indexing task still pending?”
Tell an agent
Check the status of task {taskID} on index {indexName}.
Tell me whether indexing task {taskID} for {indexName} is done.
Ask an LLM
“How do I duplicate an index, or rename it, within the same application?”
“Can I copy only the settings and synonyms, not the records?”
Tell an agent
Copy index {indexName} to {destination}.
Perform {operation} of {indexName} into {destination}.
Ask an LLM
“Which indices exist in my Algolia application?”
“Can I see how many records each index has?”
Tell an agent
List all my indices.
Show page {page} of my indices, {hitsPerPage} at a time.
Ask an LLM
“How do I wait until a newly created API key is usable?”
“Can my code block until a key update or deletion has propagated?”
Tell an agent
Wait for the {operation} of API key {key} to complete.
Block until key {key} has finished being {operation}.
Ask an LLM
“How can my code wait until records I added are searchable?”
“Is there a helper that polls until an index write is done?”
Tell an agent
Wait for task {taskID} on index {indexName} to finish.
Poll until indexing task {taskID} in {indexName} is published.
GET
/waitForAppTask
Wait for an application-level task to finish · Wait for application-level operation to complete
#
Ask an LLM
“Can I wait for an app-wide operation to complete before continuing?”
“Is there a helper that polls an application task until it's published?”
Tell an agent
Wait for application task {taskID} to complete.
Block until app-level task {taskID} is done.
Ask an LLM
“How do I export every record in my index as a backup?”
“Is there a helper that handles browse pagination for me?”
Tell an agent
Export all records from index {indexName}.
Iterate through every record in {indexName} with browse parameters {browseParams}.
Ask an LLM
“How can I give each user a key that only sees their own records?”
“Can I create a restricted key on my server without calling Algolia?”
Tell an agent
Generate a secured key from {parentApiKey} with restrictions {restrictions}.
Derive a user-scoped secured API key from parent key {parentApiKey} applying {restrictions}.
GET
/accountCopyIndex
Copy an index to another Algolia application · Copies the given `sourceIndexName` records, rules and synonyms to an other…
#
Ask an LLM
“How do I copy an index, with its rules and synonyms, to a different application?”
“Can I migrate an index between two Algolia accounts?”
Tell an agent
Copy index {sourceIndexName} to {destinationIndexName} in app {destinationAppID} using key {destinationApiKey}.
Migrate {sourceIndexName} to application {destinationAppID} as {destinationIndexName} with key {destinationApiKey}.
GET
/replaceAllObjects
Replace all records without search downtime · Replace all records in an index
#
Ask an LLM
“How do I swap in a complete new set of records without interrupting live searches?”
“Can I fully reindex my catalog atomically via a temporary index?”
Tell an agent destructive · confirm first
Replace all records in {indexName} with {objects}.
Atomically reindex {indexName} with the new record set {objects} in batches of {batchSize}.
GET
/replaceAllObjectsWithTransformation
Replace all records through the Push connector · Replace all records in an index
#
Ask an LLM
“Can I replace every record while running them through my Push connector transformation?”
“How do I do a zero-downtime full reindex that applies my data transformation?”
Tell an agent destructive · confirm first
Replace all records in {indexName} with {objects} using the transformation pipeline.
Transform and fully reindex {indexName} from {objects} via the Push connector.
Ask an LLM
“How do I send more than 1,000 records when a batch request has a size limit?”
“Is there a helper that chunks my objects into multiple batch calls?”
Tell an agent
Chunk {objects} into batch requests for {indexName}.
Send {objects} to {indexName} with action {action} in chunks of {batchSize}.
GET
/saveObjects
Save a list of records to an index · Saves the given array of objects in the given index
#
Ask an LLM
“What's the easiest way to add an array of records to an index?”
“Can the helper wait until all saved records are indexed?”
Tell an agent
Save these records to {indexName}: {objects}.
Add the array {objects} to {indexName} and wait for indexing to finish.
GET
/saveObjectsWithTransformation
Save records through the Push connector transform · Save objects to an Algolia index by leveraging the Transformation pipeline…
#
Ask an LLM
“Can I add records that get transformed by my Push connector before indexing?”
“Is there a helper to push raw objects through my transformation pipeline?”
Tell an agent
Save {objects} to {indexName} through the transformation pipeline.
Push raw records {objects} via the Push connector into {indexName}.
POST
/deleteObjects
Delete a list of records by ID · Deletes every records for the given objectIDs
#
Ask an LLM
“How do I delete many records at once when I have their IDs?”
“Is there a helper that deletes a long list of object IDs in chunks?”
Tell an agent destructive · confirm first
Delete records {objectIDs} from {indexName}.
Remove every object in the ID list {objectIDs} from index {indexName}.
POST
/partialUpdateObjects
Partially update a list of records · Replaces object content of all the given objects according to their respective…
#
Ask an LLM
“Can I update a few attributes on many records in one helper call?”
“Will a bulk partial update create records that don't exist yet?”
Tell an agent
Partially update these records in {indexName}: {objects}.
Apply attribute changes {objects} to {indexName}, creating missing ones: {createIfNotExists}.
POST
/partialUpdateObjectsWithTransformation
Partially update records via the Push connector · Save objects to an Algolia index by leveraging the Transformation pipeline…
#
Ask an LLM
“Can I send partial record updates through my Push connector transformation?”
“How do I apply transformed attribute changes to many records?”
Tell an agent
Partially update {objects} in {indexName} through the transformation pipeline.
Run attribute updates {objects} through the Push connector into {indexName}.
Ask an LLM
“How can I check if an index exists before writing to it?”
“Is there a way to avoid accidentally creating a new index by typo?”
Tell an agent
Check if index {indexName} exists.
Tell me whether there's already an index named {indexName}.
GET
/setClientApiKey
Switch the API key the Search client uses · Switch the API key used to authenticate requests
#
Ask an LLM
“Can I change which API key my Search client authenticates with without recreating it?”
“Is it possible to rotate the key used for search and indexing calls at runtime?”
Tell an agent
Switch the Search client to authenticate with API key {apiKey}.
Use {apiKey} as the key for subsequent Search API requests.
Documentation
📖
Documentation
https://www.algolia.com/doc/rest-api/search/
📖
APIReference
https://www.algolia.com/doc/api-reference/
Specifications
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/algolia/refs/heads/main/openapi/algolia-search-api-openapi.yml
⚙
OpenAPI
https://raw.githubusercontent.com/api-evangelist/algolia/refs/heads/main/openapi/algolia-algoliasearch-api-openapi.yml
Schemas & Data
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/algolia/refs/heads/main/json-schema/algolia-api-key-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/algolia/refs/heads/main/json-schema/algolia-synonym-hit-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/algolia/refs/heads/main/json-schema/algolia-rule-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/algolia/refs/heads/main/json-schema/algolia-action-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/algolia/refs/heads/main/json-schema/algolia-search-for-facet-values-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/algolia/refs/heads/main/json-schema/algolia-dictionary-entry-schema.json