Algolia Ingestion API

Connector-based data ingestion that pulls records from databases, storage and ecommerce platforms into Algolia indices via managed sources, destinations, transformations and tasks. The largest connector surface at 61 operations, and the only Algolia API with real dry-run operations.

Operations 61

GET /{path} Send requests to the Algolia REST API #
POST /{path} Send requests to the Algolia REST API #
PUT /{path} Send requests to the Algolia REST API #
DELETE /{path} Send requests to the Algolia REST API #
POST /1/push/{indexName} Push records by indexName #
GET /1/authentications List authentication resources #
POST /1/authentications Create an authentication resource #
POST /1/authentications/search Search for authentication resources #
GET /1/authentications/{authenticationID} Retrieve an authentication resource #
PATCH /1/authentications/{authenticationID} Update an authentication resource #
DELETE /1/authentications/{authenticationID} Delete an authentication resource #
GET /1/destinations List destinations #
POST /1/destinations Create a destination #
POST /1/destinations/search Search for destinations #
GET /1/destinations/{destinationID} Retrieve a destination #
PATCH /1/destinations/{destinationID} Update a destination #
DELETE /1/destinations/{destinationID} Delete a destination #
GET /1/sources List sources #
POST /1/sources Create a source #
POST /1/sources/validate Validate a source payload #
POST /1/sources/search Search for sources #
GET /1/sources/{sourceID} Retrieve a source #
PATCH /1/sources/{sourceID} Update a source #
DELETE /1/sources/{sourceID} Delete a source #
POST /1/sources/{sourceID}/validate Validate an update of a source payload #
POST /1/sources/{sourceID}/discover Trigger a stream-listing request #
POST /1/sources/{sourceID}/run Run all tasks linked to a source #
GET /2/tasks List tasks #
POST /2/tasks Create a task #
POST /2/tasks/search Search for tasks #
GET /2/tasks/{taskID} Retrieve a task #
PUT /2/tasks/{taskID} Fully update a task #
PATCH /2/tasks/{taskID} Partially update a task #
DELETE /2/tasks/{taskID} Delete a task #
POST /2/tasks/{taskID}/run Run a task #
POST /2/tasks/{taskID}/push Push records by task ID #
PUT /2/tasks/{taskID}/enable Enable a task #
PUT /2/tasks/{taskID}/disable Disable a task #
GET /1/tasks List tasks V1 #
POST /1/tasks Create a task V1 #
POST /1/tasks/search Search for tasks V1 #
GET /1/tasks/{taskID} Retrieve a task V1 #
PATCH /1/tasks/{taskID} Update a task V1 #
DELETE /1/tasks/{taskID} Delete a task #
POST /1/tasks/{taskID}/run Run a task V1 #
PUT /1/tasks/{taskID}/enable Enable a task V1 #
PUT /1/tasks/{taskID}/disable Disable a task V1 #
GET /1/transformations List transformations #
POST /1/transformations Create a transformation #
POST /1/transformations/try Try a transformation before creating it #
POST /1/transformations/search Search for transformations #
GET /1/transformations/{transformationID} Retrieve a transformation #
PUT /1/transformations/{transformationID} Update a transformation #
DELETE /1/transformations/{transformationID} Delete a transformation #
POST /1/transformations/{transformationID}/try Try a transformation before updating it #
GET /1/runs List task runs #
GET /1/runs/{runID} Retrieve a task run #
GET /1/runs/{runID}/events List task run events #
GET /1/runs/{runID}/events/{eventID} Retrieve a task run event #
GET /setClientApiKey Switch the API key used to authenticate requests #
GET /chunkedPush Replace all records in an index #

Work with this as data

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-ingestion-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 Specification

algolia-ingestion-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Ingestion API
  summary: The Ingestion API lets you connect third-party services and platforms with Algolia and schedule tasks to ingest your data
  description: "The Ingestion API powers the no-code [data connectors](https://dashboard.algolia.com/connectors).\n\n## Base URLs\n\nBase URLs for the Ingestion API:\n\n- `https://data.us.algolia.com`\n- `https://data.eu.algolia.com`\n\nUse the URL that matches your [analytics region](https://dashboard.algolia.com/account/infrastructure/analytics).\n\n**All requests must use HTTPS.**\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\nRequest bodies must be JSON objects.\n\n## Response status and errors\n\nResponse bodies are JSON objects.\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## Version\n\nThe current version of the Ingestion API is version 1, indicated by the `/1/` in each endpoint's URL.\n"
  version: 1.0.0
servers:
- url: https://data.{region}.algolia.com
  variables:
    region:
      description: The region where your Algolia application is hosted.
      enum:
      - eu
      - us
      default: us
security:
- appId: []
  apiKey: []
tags:
- name: ingestion
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:
      - ingestion
    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:
      - ingestion
    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:
      - ingestion
    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:
      - ingestion
  /1/push/{indexName}:
    post:
      tags:
      - ingestion
      summary: Push records by indexName
      description: 'Pushes records through the Pipeline, directly to an index. You can make the call synchronous by providing the `watch` parameter, for asynchronous calls, you can use the observability endpoints and/or debugger dashboard to see the status of your task.

        If you want to leverage the [pre-indexing data transformation](https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/transform-your-data), this is the recommended way of ingesting your records.

        This method is similar to `pushTask`, but requires an `indexName` instead of a `taskID`. If zero or many tasks are found, an error will be returned.

        '
      operationId: push
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      x-timeouts:
        connect: 180000
        read: 180000
        write: 180000
      parameters:
      - $ref: '#/components/parameters/IndexName'
      - $ref: '#/components/parameters/watch'
      - name: referenceIndexName
        in: query
        description: This is required when targeting an index that does not have a push connector setup (e.g. a tmp index), but you wish to attach another index's transformation to it (e.g. the source index name).
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PushTaskPayload'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WatchResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /1/authentications:
    get:
      tags:
      - ingestion
      summary: List authentication resources
      description: Retrieves a list of all authentication resources.
      operationId: listAuthentications
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/itemsPerPage'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/type'
      - $ref: '#/components/parameters/platform'
      - $ref: '#/components/parameters/sort'
      - $ref: '#/components/parameters/order'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: listAuthenticationsResponse
                type: object
                additionalProperties: false
                properties:
                  authentications:
                    type: array
                    items:
                      $ref: '#/components/schemas/Authentication'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
                required:
                - authentications
                - pagination
        '400':
          $ref: '#/components/responses/BadRequest'
    post:
      tags:
      - ingestion
      summary: Create an authentication resource
      description: Creates a new authentication resource.
      operationId: createAuthentication
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthenticationCreate'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationCreateResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /1/authentications/search:
    post:
      tags:
      - ingestion
      summary: Search for authentication resources
      description: Searches for authentication resources.
      operationId: searchAuthentications
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthenticationSearch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: searchAuthenticationsResponse
                type: array
                items:
                  $ref: '#/components/schemas/Authentication'
        '400':
          $ref: '#/components/responses/BadRequest'
  /1/authentications/{authenticationID}:
    get:
      tags:
      - ingestion
      summary: Retrieve an authentication resource
      description: Retrieves an authentication resource by its ID.
      operationId: getAuthentication
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/pathAuthenticationID'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Authentication'
        '400':
          $ref: '#/components/responses/BadRequest'
    patch:
      tags:
      - ingestion
      summary: Update an authentication resource
      description: Updates an authentication resource.
      operationId: updateAuthentication
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/pathAuthenticationID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthenticationUpdate'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationUpdateResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
    delete:
      tags:
      - ingestion
      summary: Delete an authentication resource
      description: Deletes an authentication resource. You can't delete authentication resources that are used by a source or a destination.
      operationId: deleteAuthentication
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/pathAuthenticationID'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /1/destinations:
    get:
      tags:
      - ingestion
      summary: List destinations
      description: Retrieves a list of destinations.
      operationId: listDestinations
      x-mcp-tool: true
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/itemsPerPage'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/destinationParameters_type'
      - $ref: '#/components/parameters/authenticationID'
      - $ref: '#/components/parameters/transformationID'
      - $ref: '#/components/parameters/destinationParameters_sort'
      - $ref: '#/components/parameters/order'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: listDestinationsResponse
                type: object
                additionalProperties: false
                properties:
                  destinations:
                    type: array
                    items:
                      $ref: '#/components/schemas/Destination'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
                required:
                - destinations
                - pagination
        '400':
          $ref: '#/components/responses/BadRequest'
    post:
      tags:
      - ingestion
      summary: Create a destination
      description: Creates a new destination.
      operationId: createDestination
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DestinationCreate'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DestinationCreateResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /1/destinations/search:
    post:
      tags:
      - ingestion
      summary: Search for destinations
      description: Searches for destinations.
      operationId: searchDestinations
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DestinationSearch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: searchDestinationsResponse
                type: array
                items:
                  $ref: '#/components/schemas/Destination'
        '400':
          $ref: '#/components/responses/BadRequest'
  /1/destinations/{destinationID}:
    get:
      tags:
      - ingestion
      summary: Retrieve a destination
      description: Retrieves a destination by its ID.
      operationId: getDestination
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/pathDestinationID'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Destination'
        '400':
          $ref: '#/components/responses/BadRequest'
    patch:
      tags:
      - ingestion
      summary: Update a destination
      description: Updates the destination by its ID.
      operationId: updateDestination
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/pathDestinationID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DestinationUpdate'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DestinationUpdateResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
    delete:
      tags:
      - ingestion
      summary: Delete a destination
      description: Deletes a destination by its ID. You can't delete destinations that are referenced in tasks.
      operationId: deleteDestination
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/pathDestinationID'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /1/sources:
    get:
      tags:
      - ingestion
      summary: List sources
      description: Retrieves a list of sources.
      operationId: listSources
      x-mcp-tool: true
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/itemsPerPage'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/sourceParameters_type'
      - $ref: '#/components/parameters/sourceParameters_authenticationID'
      - $ref: '#/components/parameters/sourceParameters_sort'
      - $ref: '#/components/parameters/order'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: listSourcesResponse
                type: object
                additionalProperties: false
                properties:
                  sources:
                    type: array
                    items:
                      $ref: '#/components/schemas/Source'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
                required:
                - sources
                - pagination
        '400':
          $ref: '#/components/responses/BadRequest'
    post:
      tags:
      - ingestion
      summary: Create a source
      description: Creates a new source.
      operationId: createSource
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceCreate'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceCreateResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /1/sources/validate:
    post:
      tags:
      - ingestion
      summary: Validate a source payload
      description: 'Validates a source payload to ensure it can be created and that the data source can be reached by Algolia.

        '
      operationId: validateSource
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      x-timeouts:
        connect: 180000
        read: 180000
        write: 180000
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceCreate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WatchResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /1/sources/search:
    post:
      tags:
      - ingestion
      summary: Search for sources
      description: Searches for sources.
      operationId: searchSources
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceSearch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: searchSourcesResponse
                type: array
                items:
                  $ref: '#/components/schemas/Source'
        '400':
          $ref: '#/components/responses/BadRequest'
  /1/sources/{sourceID}:
    get:
      tags:
      - ingestion
      summary: Retrieve a source
      description: Retrieve a source by its ID.
      operationId: getSource
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/pathSourceID'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Source'
        '400':
          $ref: '#/components/responses/BadRequest'
    patch:
      tags:
      - ingestion
      summary: Update a source
      description: Updates a source by its ID.
      operationId: updateSource
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/pathSourceID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceUpdate'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceUpdateResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
    delete:
      tags:
      - ingestion
      summary: Delete a source
      description: Deletes a source by its ID. You can't delete sources that are referenced in tasks.
      operationId: deleteSource
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/pathSourceID'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /1/sources/{sourceID}/validate:
    post:
      tags:
      - ingestion
      summary: Validate an update of a source payload
      description: 'Validates an update of a source payload to ensure it can be created and that the data source can be reached by Algolia.

        '
      operationId: validateSourceBeforeUpdate
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      x-timeouts:
        connect: 180000
        read: 180000
        write: 180000
      parameters:
      - $ref: '#/components/parameters/pathSourceID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceUpdate'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WatchResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /1/sources/{sourceID}/discover:
    post:
      tags:
      - ingestion
      summary: Trigger a stream-listing request
      description: 'Triggers a stream-listing request for a source.

        Triggering stream-listing requests only works with sources with `type: docker` and `imageType: airbyte`.

        '
      operationId: triggerDockerSourceDiscover
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      x-timeouts:
        connect: 180000
        read: 180000
        write: 180000
      parameters:
      - $ref: '#/components/parameters/pathSourceID'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WatchResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /1/sources/{sourceID}/run:
    post:
      tags:
      - ingestion
      summary: Run all tasks linked to a source
      description: Runs all tasks linked to a source, only available for Shopify, BigCommerce and commercetools sources. Creates one run per task.
      operationId: runSource
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/pathSourceID'
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RunSourcePayload'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: runSourceResponse
                type: object
                properties:
                  taskWithRunID:
                    type: object
                    description: Map of taskID sent for reindex with the corresponding runID.
                    additionalProperties:
                      type: string
                  createdAt:
                    $ref: '#/components/schemas/CreatedAt'
                required:
                - taskWithRunID
                - createdAt
        '400':
          $ref: '#/components/responses/BadRequest'
  /2/tasks:
    get:
      tags:
      - ingestion
      summary: List tasks
      description: Retrieves a list of tasks.
      operationId: listTasks
      x-mcp-tool: true
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/itemsPerPage'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/action'
      - $ref: '#/components/parameters/enabled'
      - $ref: '#/components/parameters/sourceID'
      - $ref: '#/components/parameters/sourceType'
      - $ref: '#/components/parameters/destinationID'
      - $ref: '#/components/parameters/triggerType'
      - $ref: '#/components/parameters/withEmailNotifications'
      - $ref: '#/components/parameters/taskParameters_sort'
      - $ref: '#/components/parameters/order'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: listTasksResponse
                type: object
                description: Configured tasks and pagination information.
                additionalProperties: false
                properties:
                  tasks:
                    type: array
                    items:
                      $ref: '#/components/schemas/Task'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
                required:
                - tasks
                - pagination
        '400':
          $ref: '#/components/responses/BadRequest'
    post:
      tags:
      - ingestion
      summary: Create a task
      description: Creates a new task.
      operationId: createTask
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      requestBody:
        description: Request body for creating a task.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskCreate'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskCreateResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /2/tasks/search:
    post:
      tags:
      - ingestion
      summary: Search for tasks
      description: Searches for tasks.
      operationId: searchTasks
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskSearch'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: searchTasksResponse
                type: array
                items:
                  $ref: '#/components/schemas/Task'
        '400':
          $ref: '#/components/responses/BadRequest'
  /2/tasks/{taskID}:
    get:
      tags:
      - ingestion
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      summary: Retrieve a task
      description: Retrieves a task by its ID.
      operationId: getTask
      parameters:
      - $ref: '#/components/parameters/pathTaskID'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
        '400':
          $ref: '#/components/responses/BadRequest'
    put:
      tags:
      - ingestion
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      summary: Fully update a task
      description: Fully updates a task by its ID, use partialUpdateTask if you only want to update a subset of fields.
      operationId: replaceTask
      parameters:
      - $ref: '#/components/parameters/pathTaskID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskReplace'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskUpdateResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
    patch:
      tags:
      - ingestion
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      summary: Partially update a task
      description: Partially updates a task by its ID.
      operationId: updateTask
      parameters:
      - $ref: '#/components/parameters/pathTaskID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskUpdate'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskUpdateResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
    delete:
      tags:
      - ingestion
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      summary: Delete a task
      description: Deletes a task by its ID.
      operationId: deleteTask
      parameters:
      - $ref: '#/components/parameters/pathTaskID'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /2/tasks/{taskID}/run:
    post:
      tags:
      - ingestion
      summary: Run a task
      description: Runs a task. You can check the status of task runs with the observability endpoints.
      operationId: runTask
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      parameters:
      - $ref: '#/components/parameters/pathTaskID'
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RunTaskPayload'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /2/tasks/{taskID}/push:
    post:
      tags:
      - ingestion
      summary: Push records by task ID
      description: 'Pushes records through the pipeline, directly to an index. You can make the call synchronous by providing the `watch` parameter, for asynchronous calls, you can use the observability endpoints or the debugger dashboard to see the status of your task.

        If you want to transform your data before indexing, this is the recommended way of ingesting your records.

        This method is similar to `push`, but requires a `taskID` instead of a `indexName`, which is useful when many `destinations` target the same `indexName`.

        '
      operationId: pushTask
      externalDocs:
        url: https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/transform-your-data
        description: Pre-indexing data transformation.
      x-acl:
      - addObject
      - deleteIndex
      - editSettings
      x-timeouts:
        connect: 180000
        read: 180000
        write: 180000
      parameters:
      - $ref: '#/components/parameters/pathTaskID'
      - $re

# --- truncated at 32 KB (132 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/algolia/refs/heads/main/openapi/algolia-ingestion-api-openapi.yml