> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interchange.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Adopt a managed audio source into a creative

> Adopt a promoted managed audio source into an audio-hosted creative manifest. The bounded hosted HTTPS URL is issued server-side, so the caller names a source rather than a URL. The operation requires both the managed-audio account capability and bounded delivery-origin gate to be explicitly enabled; this change enables neither. Optionally records a non-delivery campaign association; it does not assign a media buy or call a destination.



## OpenAPI

````yaml /v2/buyer-api-v2.yaml post /creatives/adopt-managed-audio-source
openapi: 3.0.0
info:
  title: Scope3 Buyer 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
security: []
tags:
  - name: Signup
    description: Request reviewed access to Interchange
  - name: Account
    description: Account management, service tokens, and preferences
  - name: Asks
    description: >-
      What you are waiting on Scope3 for — support, product, and supply asks in
      one list
  - name: Advertisers
    description: Manage advertisers
  - name: Product Discovery
    description: Discover and select products
  - name: Campaigns
    description: Manage advertising campaigns
  - name: Creatives
    description: Build, manage, and sync campaign creatives via AdCP Creative Protocol
  - name: Reporting
    description: Access performance metrics
  - name: Event Sources
    description: >-
      Manage event source configurations and log conversion/marketing events for
      attribution
  - name: Property Lists
    description: Validate property lists against AAO registry
  - name: Sales Agents
    description: View and connect sales agents
  - name: Measurement
    description: Measurement sources, records, context, and freshness
  - name: Syndication
    description: Syndicate resources to ADCP agents
  - name: Tasks
    description: Track async operation status
  - name: Buyer Billing
    description: >-
      Consolidated invoicing for buyers — invoices and pending invoice items
      issued by Scope3 across the buyer customer.
  - name: MCP
    description: Model Context Protocol endpoints for AI agents
paths:
  /creatives/adopt-managed-audio-source:
    post:
      tags:
        - Creatives
      summary: Adopt a managed audio source into a creative
      description: >-
        Adopt a promoted managed audio source into an audio-hosted creative
        manifest. The bounded hosted HTTPS URL is issued server-side, so the
        caller names a source rather than a URL. The operation requires both the
        managed-audio account capability and bounded delivery-origin gate to be
        explicitly enabled; this change enables neither. Optionally records a
        non-delivery campaign association; it does not assign a media buy or
        call a destination.
      operationId: adoptManagedAudioSource
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdoptManagedAudioSourceBody'
      responses:
        '201':
          description: Adopt a managed audio source into a creative
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdoptManagedAudioSourceResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            The credential lacks `interchange:write`, or the session cannot be
            attributed to a durable actor (a simulated staff session is refused
            outright).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: >-
            No promoted audio source with this `source_uid` is owned by the
            given buyer, advertiser, and storefront. An unowned source and a
            nonexistent one are deliberately indistinguishable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            A creative already holds the requested name, the source is already
            adopted under a different name, the source's delivery was revoked or
            deletion-requested, an earlier adoption never finalized, the adopted
            creative's audio asset was replaced or removed, or the
            source-identity state is still settling. `details.reason`
            distinguishes them: `name_taken`, `name_creation_in_progress`,
            `name_creation_abandoned`, `adoption_in_progress`,
            `adoption_abandoned`, `adoption_asset_unavailable`,
            `adoption_name_mismatch`, `source_delivery_revoked`,
            `source_deletion_requested`. Branch on `details.reason`, not the
            message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: >-
            HTTP 422 `CAPABILITY_NOT_SUPPORTED` is returned when the bounded
            managed-audio delivery origin is disabled or empty, or the
            managed-audio account capability is disabled. HTTP 422 validation
            errors also cover a source that is not promoted, an expired
            retention window, or a campaign that belongs to a different
            advertiser.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: >-
            HTTP 503 `SERVICE_UNAVAILABLE` is returned only when the bounded
            managed-audio delivery origin is non-empty but malformed or
            otherwise invalid, so no bounded URL can be issued.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    AdoptManagedAudioSourceBody:
      type: object
      properties:
        source_uid:
          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)$
          description: >-
            Opaque owner-scoped reference returned when the managed audio source
            was promoted.
        advertiser_id:
          type: string
          pattern: ^[1-9][0-9]*$
          description: >-
            Advertiser that owns the source and will own the creative. A
            positive integer within the signed 64-bit range.
        storefront_id:
          type: string
          pattern: ^[1-9][0-9]*$
          description: >-
            Storefront the source was uploaded against. A positive integer
            within the signed 64-bit range.
        name:
          type: string
          minLength: 1
          maxLength: 255
          description: Buyer-facing creative name.
        campaign_id:
          description: >-
            Associate the manifest to this campaign in the same call. Audio
            adoption does not start seller or destination sync.
          type: string
          minLength: 1
          maxLength: 64
      required:
        - source_uid
        - advertiser_id
        - storefront_id
        - name
      additionalProperties: false
      description: >-
        Create or adopt a Creative Manifest from a promoted managed audio
        source.
    AdoptManagedAudioSourceResponse:
      type: object
      properties:
        creative_id:
          type: string
          description: Creative manifest that now carries the managed audio.
        source_uid:
          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)$
          description: The managed audio source that was adopted.
        publication_uid:
          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)$
          description: >-
            Bounded hosted publication backing the creative asset. Revoking it
            revokes delivery.
        delivery_url:
          type: string
          description: >-
            Public HTTPS URL stored as the creative asset. Expires with the
            source retention window.
        campaign_id:
          description: >-
            A campaign the manifest is associated with. Returned when requested,
            and on a replay when a membership already exists. This association
            does not start seller or destination sync.
          type: string
        name:
          type: string
          description: Buyer-facing creative name.
        created:
          type: boolean
          description: >-
            True only when this call created the creative. A successful campaign
            association writes the manifest membership only; it does not start
            seller or destination sync.
      required:
        - creative_id
        - source_uid
        - publication_uid
        - delivery_url
        - name
        - created
      additionalProperties: false
      description: Result of adopting a managed audio source into a creative.
    ErrorResponse:
      type: object
      properties:
        data:
          type: string
          nullable: true
          enum:
            - null
        error:
          $ref: '#/components/schemas/ApiError'
      required:
        - data
        - error
      additionalProperties: false
      description: Standard error response
    ApiError:
      type: object
      properties:
        code:
          type: string
          description: Machine-readable error code
        message:
          type: string
          description: Human-readable error message
        field:
          description: Field path associated with the error
          type: string
        details:
          description: Additional error context
          type: object
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
      description: Structured error object
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token

````