Scope3 Tasks API

Track async operation status

Operations 1

GET /tasks/{taskId} Get task status #

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/scope3-tasks-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 email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

scope3-tasks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Scope3 Buyer Tasks API
  version: 2.0.0
  description: 'REST API for advertisers to manage advertisers, campaigns, and reporting.


    ## Authentication


    All endpoints require a Bearer token in the Authorization header:

    ```

    Authorization: Bearer your-api-key

    ```


    ## Base URL


    `https://api.interchange.io/api/v2/buyer`


    ## For AI Agents


    AI agents can use the MCP endpoint at `/mcp/v2/buyer` with three tools:

    - `initialize`: Start an MCP session

    - `api_call`: Make REST API calls

    - `ask_about_capability`: Learn about API features'
servers:
- url: https://api.interchange.io/api/v2/buyer
  description: Production server
tags:
- name: Tasks
  description: Track async operation status
paths:
  /tasks/{taskId}:
    get:
      operationId: getTask
      summary: Get task status
      description: Get the current status of an async task. AdCP polling fallback for when webhooks are unavailable.
      tags:
      - Tasks
      security:
      - bearerAuth: []
      parameters:
      - in: path
        name: taskId
        schema:
          type: string
          format: uuid
          pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
        required: true
      responses:
        '200':
          description: Get task status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    TaskOutput:
      description: Async task resource representation
      type: object
      properties:
        taskId:
          description: Unique task identifier
          example: 550e8400-e29b-41d4-a716-446655440000
          type: string
          format: uuid
          pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
        taskType:
          description: Type of async operation
          example: audience_sync
          type: string
          enum:
          - audience_sync
          - media_buy_create
          - creative_sync
        status:
          description: Current task status (AdCP states)
          example: submitted
          type: string
          enum:
          - submitted
          - working
          - completed
          - failed
          - input-required
        resourceType:
          description: Type of resource this task operates on
          example: audience
          type:
          - string
          - 'null'
        resourceId:
          description: Identifier of the resulting resource (set on completion)
          example: aud_12345
          type:
          - string
          - 'null'
        error:
          description: AdCP-compatible error object when status is "failed"
          allOf:
          - $ref: '#/components/schemas/TaskError'
        response:
          description: Original response payload from the downstream system
          type:
          - object
          - 'null'
          additionalProperties: {}
        metadata:
          description: Operation-specific context
          type:
          - object
          - 'null'
          additionalProperties: {}
        retryAfterSeconds:
          description: Suggested polling interval in seconds. Set based on task type to guide how frequently callers should poll.
          example: 30
          type:
          - number
          - 'null'
        createdAt:
          description: When the task was created (ISO 8601)
          example: '2026-01-15T10:30:00.000Z'
          type: string
          format: date-time
          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
        updatedAt:
          description: When the task was last updated (ISO 8601)
          example: '2026-01-20T14:45:00.000Z'
          type: string
          format: date-time
          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
      required:
      - taskId
      - taskType
      - status
      - resourceType
      - resourceId
      - error
      - response
      - metadata
      - retryAfterSeconds
      - createdAt
      - updatedAt
      additionalProperties: false
    ErrorResponse:
      description: Standard error response
      type: object
      properties:
        data:
          type:
          - string
          - 'null'
          enum:
          - null
        error:
          $ref: '#/components/schemas/ApiError'
      required:
      - data
      - error
      additionalProperties: false
    TaskResponse:
      description: Response containing a single task
      type: object
      properties:
        task:
          $ref: '#/components/schemas/TaskOutput'
      required:
      - task
      additionalProperties: false
    TaskError:
      description: AdCP-compatible error object
      type: object
      properties:
        code:
          description: Error code for programmatic handling
          example: VALIDATION_ERROR
          type: string
        message:
          description: Human-readable error message
          example: Invalid budget value
          type: string
        field:
          description: Field path associated with the error
          example: packages[0].targeting
          type: string
        suggestion:
          description: Suggested fix for the error
          type: string
        retryAfter:
          description: Seconds to wait before retrying the operation
          type: number
        details:
          description: Additional task-specific error details
          type: object
          additionalProperties: {}
        recovery:
          description: 'Agent recovery classification: transient (retry), correctable (fix and resend), terminal (requires human action)'
          type: string
          enum:
          - transient
          - correctable
          - terminal
      required:
      - code
      - message
      additionalProperties: false
    ApiError:
      description: Structured error object
      type: object
      properties:
        code:
          description: Machine-readable error code
          type: string
        message:
          description: Human-readable error message
          type: string
        field:
          description: Field path associated with the error
          type: string
        details:
          description: Additional error context
          type: object
          additionalProperties: {}
      required:
      - code
      - message
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token