Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/algolia-search-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Search API
summary: The Algolia Search API lets you search, configure, and manage your indices and records
description: "## Client libraries\n\nUse Algolia's API clients and libraries to reliably integrate Algolia's APIs with your apps.\nThe official API clients are covered by Algolia's [Service Level Agreement](https://www.algolia.com/policies/sla).\n\nFor more information, see [Algolia's ecosystem](https://www.algolia.com/doc/libraries).\n\n## Base URLs\n\nBase URLs for the Search API:\n\n- `https://{APPLICATION_ID}.algolia.net`\n- `https://{APPLICATION_ID}-dsn.algolia.net`.\n If your subscription includes a [Distributed Search Network](https://dashboard.algolia.com/infra),\n this ensures that requests are sent to servers closest to users.\n\nBoth URLs provide high availability by distributing requests with load balancing.\n\n**All requests must use HTTPS.**\n\n## Retry strategy\n\nTo guarantee high availability, implement a retry strategy for all API requests using the URLs of your servers as fallbacks:\n\n- `https://{APPLICATION_ID}-1.algolianet.com`\n- `https://{APPLICATION_ID}-2.algolianet.com`\n- `https://{APPLICATION_ID}-3.algolianet.com`\n\nThese URLs use a different DNS provider than the primary URLs.\nRandomize this list to ensure an even load across the three servers.\n\nAll Algolia API clients implement this retry strategy.\n\n## Authentication\n\nAdd these headers to authenticate requests:\n\n- `x-algolia-application-id`. Your Algolia application ID.\n- `x-algolia-api-key`. An API key with the necessary permissions to make the request.\n The required access control list (ACL) to make a request is listed in each endpoint's reference.\n\nYou can find your application ID and API key in the [Algolia dashboard](https://dashboard.algolia.com/account/api-keys).\n\n## Request format\n\nDepending on the endpoint, request bodies are either JSON objects or arrays of JSON objects.\n\n## Parameters\n\nParameters are passed as query parameters for GET and DELETE requests,\nand in the request body for POST and PUT requests.\n\nQuery parameters must be [URL-encoded](https://developer.mozilla.org/en-US/docs/Glossary/Percent-encoding).\nNon-ASCII characters must be UTF-8 encoded.\nPlus characters (`+`) are interpreted as spaces.\nArrays as query parameters must be one of:\n\n- A comma-separated string: `attributesToRetrieve=title,description`\n- A URL-encoded JSON array: `attributesToRetrieve=%5B%22title%22,%22description%22%D`\n\n## Response status and errors\n\nThe Search API returns JSON responses.\nSince JSON doesn't guarantee any specific ordering, don't rely on the order of attributes in the API response.\n\nSuccessful responses return `2xx` statuses. Client errors return `4xx` statuses. Server errors return `5xx` statuses.\nError responses have a `message` property with more information.\n\n## Request identifiers\n\nEvery response includes a `Correlation-ID` header that identifies the request in Algolia's logs.\nWhen contacting the Algolia support team about a specific request, include this identifier in your ticket.\n\nTo tag requests with your own identifier, send a `Request-ID` header with exactly 11 alphanumeric characters.\nClusters that support it embed the identifier at the end of the `Correlation-ID`,\nso all attempts of a retried operation can be found by searching for those characters.\nHeaders that don't match the expected format are ignored.\n\nDon't use the `Correlation-ID` as a unique key: retried requests may receive the same identifier.\n\n## Version\n\nThe current version of the Search API is version 1, indicated by the `/1/` in each endpoint's URL.\n"
version: 1.0.0
servers:
- url: https://{appId}.algolia.net
variables:
appId:
default: ALGOLIA_APPLICATION_ID
- url: https://{appId}-1.algolianet.com
variables:
appId:
default: ALGOLIA_APPLICATION_ID
- url: https://{appId}-2.algolianet.com
variables:
appId:
default: ALGOLIA_APPLICATION_ID
- url: https://{appId}-3.algolianet.com
variables:
appId:
default: ALGOLIA_APPLICATION_ID
- url: https://{appId}-dsn.algolia.net
variables:
appId:
default: ALGOLIA_APPLICATION_ID
security:
- appId: []
apiKey: []
tags:
- name: search
paths:
/{path}:
get:
operationId: customGet
summary: Send requests to the Algolia REST API
description: This method lets you send requests to the Algolia REST API.
parameters:
- $ref: '#/components/parameters/PathInPath'
- $ref: '#/components/parameters/Parameters'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
tags:
- search
post:
operationId: customPost
requestBody:
description: Parameters to send with the custom request.
content:
application/json:
schema:
type: object
summary: Send requests to the Algolia REST API
description: This method lets you send requests to the Algolia REST API.
parameters:
- $ref: '#/components/parameters/PathInPath'
- $ref: '#/components/parameters/Parameters'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
tags:
- search
put:
operationId: customPut
requestBody:
description: Parameters to send with the custom request.
content:
application/json:
schema:
type: object
summary: Send requests to the Algolia REST API
description: This method lets you send requests to the Algolia REST API.
parameters:
- $ref: '#/components/parameters/PathInPath'
- $ref: '#/components/parameters/Parameters'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
tags:
- search
delete:
operationId: customDelete
summary: Send requests to the Algolia REST API
description: This method lets you send requests to the Algolia REST API.
parameters:
- $ref: '#/components/parameters/PathInPath'
- $ref: '#/components/parameters/Parameters'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
tags:
- search
/1/indexes/{indexName}/query:
post:
tags:
- search
operationId: searchSingleIndex
x-mcp-tool: true
x-use-read-transporter: true
x-cacheable: true
x-acl:
- search
summary: Search an index
description: 'Searches a single index and returns matching search results as hits.
This method lets you retrieve up to 1,000 hits.
If you need more, use the [`browse` operation](https://www.algolia.com/doc/rest-api/search/browse) or increase the `paginatedLimitedTo` index setting.
'
parameters:
- $ref: '#/components/parameters/IndexName'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/searchParams'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/searchResponse'
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
/1/indexes/*/queries:
post:
tags:
- search
operationId: search
x-use-read-transporter: true
x-cacheable: true
x-legacy-signature: true
x-acl:
- search
summary: Search multiple queries
description: 'Runs multiple search queries against one or more indices in a single API request.
Use cases include:
- Searching different indices, such as products and marketing content.
- Run multiple queries on the same index with different parameters or filters.
If you know the expected result type, use the `searchForHits` or `searchForFacets` helper to simplify the response format.
'
requestBody:
required: true
description: Multi-query search request body. Results are returned in the same order as the requests.
content:
application/json:
schema:
title: searchMethodParams
type: object
additionalProperties: false
properties:
requests:
type: array
items:
$ref: '#/components/schemas/SearchQuery'
strategy:
$ref: '#/components/schemas/searchStrategy'
required:
- requests
responses:
'200':
description: OK
content:
application/json:
schema:
title: searchResponses
type: object
additionalProperties: false
properties:
results:
type: array
items:
$ref: '#/components/schemas/searchResult'
required:
- results
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
/1/indexes/{indexName}/facets/{facetName}/query:
post:
tags:
- search
operationId: searchForFacetValues
x-use-read-transporter: true
x-cacheable: true
x-acl:
- search
summary: Search for facet values
description: "Searches for values of a specified facet attribute.\n\n- By default, facet values are sorted by decreasing count.\n You can adjust this with the `sortFacetValueBy` parameter.\n- Searching for facet values doesn't work if you have **more than 65 searchable facets and searchable attributes combined**.\n"
parameters:
- $ref: '#/components/parameters/IndexName'
- name: facetName
description: 'Facet attribute in which to search for values.
This attribute must be included in the `attributesForFaceting` index setting with the `searchable()` modifier.
'
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
title: searchForFacetValuesRequest
type: object
additionalProperties: false
properties:
params:
$ref: '#/components/schemas/paramsAsString'
facetQuery:
$ref: '#/components/schemas/facetQuery'
maxFacetHits:
$ref: '#/components/schemas/maxFacetHits'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/searchForFacetValuesResponse'
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
/1/indexes/{indexName}/browse:
post:
tags:
- search
operationId: browse
x-use-read-transporter: true
x-acl:
- browse
summary: Browse for records
description: 'Retrieves records from an index, up to 1,000 per request.
Searching returns _hits_ (records augmented with highlighting and ranking details).
Browsing returns matching records only.
Use browse to export your indices.
- The Analytics API doesn''t collect data when using `browse`.
- Records are ranked by attributes and custom ranking.
- There''s no ranking for typo tolerance, number of matched words, proximity, or geo distance.
Browse requests automatically apply these settings:
- `advancedSyntax`: `false`
- `attributesToHighlight`: `[]`
- `attributesToSnippet`: `[]`
- `distinct`: `false`
- `enablePersonalization`: `false`
- `enableRules`: `false`
- `facets`: `[]`
- `getRankingInfo`: `false`
- `ignorePlurals`: `false`
- `optionalFilters`: `[]`
- `typoTolerance`: `true` or `false` (`min` and `strict` evaluate to `true`)
If you send these parameters with your browse requests, they''re ignored.
'
parameters:
- $ref: '#/components/parameters/IndexName'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/browseParams'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/browseResponse'
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
/1/indexes/{indexName}:
post:
tags:
- search
operationId: saveObject
x-mcp-tool: true
x-acl:
- addObject
description: 'Adds a record to an index or replaces it.
- If the record doesn''t have an object ID, a new record with an auto-generated object ID is added to your index.
- If a record with the specified object ID exists, the existing record is replaced.
- If a record with the specified object ID doesn''t exist, a new record is added to your index.
- If you add a record to an index that doesn''t exist yet, a new index is created.
To update _some_ attributes of a record, use the [`partial` operation](https://www.algolia.com/doc/rest-api/search/partial-update-object).
To add, update, or replace multiple records, use the [`batch` operation](https://www.algolia.com/doc/rest-api/search/batch).
This operation is subject to [indexing rate limits](https://support.algolia.com/hc/articles/4406975251089-Is-there-a-rate-limit-for-indexing-on-Algolia).
'
summary: Add a new record (with auto-generated object ID)
parameters:
- $ref: '#/components/parameters/IndexName'
requestBody:
required: true
description: The record. A schemaless object with attributes that are useful in the context of search and discovery.
x-is-generic: true
content:
application/json:
schema:
type: object
example:
objectID: blackTShirt
name: Black T-shirt
color: '#000000'
responses:
'201':
description: Created
content:
application/json:
schema:
title: saveObjectResponse
type: object
additionalProperties: false
properties:
createdAt:
$ref: '#/components/schemas/createdAt'
taskID:
$ref: '#/components/schemas/taskID'
objectID:
$ref: '#/components/schemas/objectID'
required:
- taskID
- createdAt
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
delete:
tags:
- search
operationId: deleteIndex
x-acl:
- deleteIndex
summary: Delete an index
description: "Deletes an index and all its settings.\n\n- Deleting an index doesn't delete its analytics data.\n- If you try to delete a non-existing index, the operation is ignored without warning.\n- If the index you want to delete has replica indices, the replicas become independent indices.\n- If the index you want to delete is a replica index, you must first unlink it from its primary index before you can delete it.\n For more information, see [Delete replica indices](https://www.algolia.com/doc/guides/managing-results/refine-results/sorting/how-to/deleting-replicas).\n"
externalDocs:
url: https://www.algolia.com/doc/guides/sending-and-managing-data/manage-indices-and-apps/manage-indices/how-to/delete-indices
description: Delete indices.
parameters:
- $ref: '#/components/parameters/IndexName'
responses:
'200':
$ref: '#/components/responses/DeletedAt'
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
/1/indexes/{indexName}/{objectID}:
get:
tags:
- search
operationId: getObject
x-acl:
- search
summary: Retrieve a record
description: 'Retrieves one record by its object ID.
To retrieve more than one record, use the [`objects` operation](https://www.algolia.com/doc/rest-api/search/get-objects).
'
parameters:
- $ref: '#/components/parameters/IndexName'
- $ref: '#/components/parameters/ObjectID'
- name: attributesToRetrieve
in: query
description: 'Attributes to include with the records in the response.
This is useful to reduce the size of the API response.
By default, all retrievable attributes are returned.
`objectID` is always retrieved.
Attributes included in `unretrievableAttributes`
won''t be retrieved unless the request is authenticated with the admin API key.
'
schema:
type: array
items:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
description: The requested record.
x-is-generic: true
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
put:
tags:
- search
operationId: addOrUpdateObject
x-acl:
- addObject
summary: Add or replace a record
description: 'If a record with the specified object ID exists, the existing record is replaced.
Otherwise, a new record is added to the index.
If you want to use auto-generated object IDs, use the [`saveObject` operation](https://www.algolia.com/doc/rest-api/search/save-object).
To update _some_ attributes of an existing record, use the [`partial` operation](https://www.algolia.com/doc/rest-api/search/partial-update-object) instead.
To add, update, or replace multiple records, use the [`batch` operation](https://www.algolia.com/doc/rest-api/search/batch).
'
parameters:
- $ref: '#/components/parameters/IndexName'
- $ref: '#/components/parameters/ObjectID'
requestBody:
required: true
description: The record. A schemaless object with attributes that are useful in the context of search and discovery.
x-is-generic: true
content:
application/json:
schema:
type: object
example:
objectID: blackTShirt
name: Black T-shirt
color: '#000000'
responses:
'200':
$ref: '#/components/responses/UpdatedAtWithObjectId'
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
delete:
tags:
- search
operationId: deleteObject
x-acl:
- deleteObject
summary: Delete a record
description: 'Deletes a record by its object ID.
To delete more than one record, use the [`batch` operation](https://www.algolia.com/doc/rest-api/search/batch).
To delete records matching a query, use the [`deleteBy` operation](https://www.algolia.com/doc/rest-api/search/delete-by).
'
parameters:
- $ref: '#/components/parameters/IndexName'
- $ref: '#/components/parameters/ObjectID'
responses:
'200':
$ref: '#/components/responses/DeletedAt'
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
/1/indexes/{indexName}/deleteByQuery:
post:
tags:
- search
operationId: deleteBy
x-mcp-tool: true
x-acl:
- deleteIndex
summary: Delete records matching a filter
description: 'This operation doesn''t accept empty filters.
This operation is resource-intensive.
Use it only if you can''t get the object IDs of the records you want to delete.
It''s more efficient to get a list of object IDs with the [`browse` operation](https://www.algolia.com/doc/rest-api/search/browse),
and then delete the records using the [`batch` operation](https://www.algolia.com/doc/rest-api/search/batch).
This operation is subject to [indexing rate limits](https://support.algolia.com/hc/articles/4406975251089-Is-there-a-rate-limit-for-indexing-on-Algolia).
'
externalDocs:
url: https://support.algolia.com/hc/articles/16385098766353-Should-I-use-the-deleteBy-method-for-deleting-records-that-match-a-query
description: Should I use the deleteBy method for deleting records.
parameters:
- $ref: '#/components/parameters/IndexName'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/deleteByParams'
responses:
'200':
$ref: '#/components/responses/UpdatedAt'
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
/1/indexes/{indexName}/clear:
post:
tags:
- search
operationId: clearObjects
x-acl:
- deleteIndex
summary: Delete all records from an index
description: 'Deletes only the records from an index while keeping settings, synonyms, and rules.
This operation is resource-intensive and subject to [indexing rate limits](https://support.algolia.com/hc/articles/4406975251089-Is-there-a-rate-limit-for-indexing-on-Algolia).
'
parameters:
- $ref: '#/components/parameters/IndexName'
responses:
'200':
$ref: '#/components/responses/UpdatedAt'
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
/1/indexes/{indexName}/{objectID}/partial:
post:
tags:
- search
operationId: partialUpdateObject
x-mcp-tool: true
x-acl:
- addObject
summary: Add or update attributes
x-codegen-request-body-name: attributesToUpdate
description: "Adds new attributes to a record, or updates existing ones.\n\n- If a record with the specified object ID doesn't exist,\n a new record is added to the index **if** `createIfNotExists` is true.\n- If the index doesn't exist yet, this method creates a new index.\n- Use first-level attributes only. Nested attributes aren't supported.\n If you specify a nested attribute, this operation replaces its first-level ancestor.\n\nTo update attributes without replacing the full record, use these built-in operations.\nThese operations are useful when the initial data isn't available.\n\n- `Increment`: increment a numeric attribute.\n- `Decrement`: decrement a numeric attribute.\n- `Add`: append a number or string element to an array attribute.\n- `Remove`: remove all matching number or string elements from an array attribute made of numbers or strings.\n- `AddUnique`: add a number or string element to an array attribute made of numbers or strings only if it's not already present.\n- `IncrementFrom`: increment a numeric integer attribute only if the provided value matches the current value. Otherwise, the update is ignored.\n Example: If you pass an `IncrementFrom` value of 2 for the `version` attribute but the current value is 1, the API ignores the update.\n If the object doesn't exist, the API only creates it if you pass an `IncrementFrom` value of 0.\n- `IncrementSet`: increment a numeric integer attribute only if the provided value is greater than the current value. Otherwise, the update is ignored.\n Example: If you pass an `IncrementSet` value of 2 for the `version` attribute and the current value is 1, the API updates the object.\n If the object doesn't exist yet, the API only creates it if you pass an `IncrementSet` value greater than 0.\n\nSpecify an operation by providing an object with the attribute to update as the key and its value as an object with these properties:\n\n- `_operation`: the operation to apply on the attribute.\n- `value`: the right-hand side argument to the operation, for example, increment or decrement step, or a value to add or remove.\n\nWhen updating multiple attributes or using multiple operations targeting the same record, use a single partial update for faster processing.\n\nThis operation is subject to [indexing rate limits](https://support.algolia.com/hc/articles/4406975251089-Is-there-a-rate-limit-for-indexing-on-Algolia).\n"
parameters:
- $ref: '#/components/parameters/IndexName'
- $ref: '#/components/parameters/ObjectID'
- name: createIfNotExists
description: Whether to create a new record if it doesn't exist.
in: query
schema:
type: boolean
default: true
requestBody:
required: true
description: Attributes with their values.
content:
application/json:
schema:
description: Attributes to update.
type: object
responses:
'200':
$ref: '#/components/responses/UpdatedAtWithObjectId'
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
/1/indexes/{indexName}/batch:
post:
tags:
- search
x-acl:
- addObject
operationId: batch
x-mcp-tool: true
summary: Batch indexing operations on one index
description: 'Adds, updates, or deletes records in one index with a single API request.
Batching index updates reduces latency and increases data integrity.
- Actions are applied in the order they''re specified.
- Actions are equivalent to the individual API requests of the same name.
This operation is subject to [indexing rate limits](https://support.algolia.com/hc/articles/4406975251089-Is-there-a-rate-limit-for-indexing-on-Algolia).
'
parameters:
- $ref: '#/components/parameters/IndexName'
x-codegen-request-body-name: batchWriteParams
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/batchWriteParams'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/batchResponse'
'400':
$ref: '#/components/responses/BadRequest'
'402':
$ref: '#/components/responses/FeatureNotEnabled'
'403':
$ref: '#/components/responses/MethodNotAllowed'
'404':
$ref: '#/components/responses/IndexNotFound'
/1/indexes/*/batch:
post:
tags:
- search
x-acl:
- addObject
operationId: multipleBatch
x-mcp-tool: true
description: 'Adds, updates, or deletes records in multiple indices with a single API request.
- Actions are applied in the order they are specified.
- Actions are equivalent to the individual API requests of the same name.
This operation is subject to [indexing rate limits](https://support.algolia.com/hc/articles/4406975251089-Is-there-a-rate-limit-for-indexing-on-Algolia).
'
summary: Batch indexing operations on multiple indices
requestBody:
required: true
content:
application/json:
schema:
title: batchParams
description: Batch parameters.
type: object
additionalProperties: false
properties:
requests:
type: array
items:
title: multipleBatchRequest
type: object
additionalProperties: false
properties:
action:
$ref: '#/components/schemas/action'
body:
type: object
description: Operation arguments (varies with specified `action`).
indexName:
$ref: '#/components/schemas/indexName'
required:
- action
- indexName
required:
- requests
examples:
batch:
summary: Batch indexing request to two indices
value:
requests:
- action: addObject
indexName: contacts
body:
name: Betty Jane McCamey
company: Vita Foods Inc.
email: betty@mccamey.com
- action: addObject
indexName: public_contacts
bo
# --- truncated at 32 KB (273 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/algolia/refs/heads/main/openapi/algolia-search-api-openapi.yml