> ## 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.

# Create account

> Create a Buyer or Seller account under an organization. From a standalone account, this creates an organization and attaches both accounts; the caller must explicitly confirm those consequences. Requires administrator authority.



## OpenAPI

````yaml /v2/buyer-api-v2.yaml post /accounts/create-child
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:
  /accounts/create-child:
    servers:
      - url: https://api.interchange.io/api/v2
        description: Production server
    post:
      tags:
        - Account
      summary: Create account
      description: >-
        Create a Buyer or Seller account under an organization. From a
        standalone account, this creates an organization and attaches both
        accounts; the caller must explicitly confirm those consequences.
        Requires administrator authority.
      operationId: createChildAccount
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateChildAccountBody'
      responses:
        '201':
          description: Create account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateChildAccountResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            A fresh standalone conversion omitted explicit organization
            confirmation, sent false, or reused an idempotency key with
            incompatible input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    CreateChildAccountBody:
      description: Request body for creating a Buyer or Seller account
      type: object
      properties:
        name:
          description: Name for the new account
          example: Nike
          type: string
          minLength: 1
          maxLength: 255
        customerRole:
          description: Whether the account is a buyer or seller
          example: BUYER
          type: string
          enum:
            - BUYER
            - SELLER
        idempotencyKey:
          description: >-
            Stable retry key for this account-creation attempt. Current clients
            always send one; omission is supported during rolling deploys.
          example: child-account:550e8400-e29b-41d4-a716-446655440000
          type: string
          minLength: 8
          maxLength: 128
          pattern: ^[A-Za-z0-9._:-]+$
        parentName:
          description: >-
            Name for the organization created during standalone conversion.
            Defaults to the current standalone account's name if omitted.
          example: Acme HQ
          type: string
          minLength: 1
          maxLength: 255
        confirmOrganizationConversion:
          description: >-
            Required only for a fresh account creation from a standalone
            account. Must be true after presenting that the operation creates an
            organization container, attaches the standalone account to it, moves
            contract and billing authority to the organization, makes the
            confirmer an organization administrator, preserves account-only
            membership boundaries, applies account-specific standing before
            inherited organization standing, and requires a dedicated migration
            for detachment. Omission or false returns 409 Conflict. Callers
            already managed by an organization should omit this field.
          example: true
          type: boolean
        customerDomain:
          description: >-
            Registered account domain. For SELLER accounts, also seeds the
            auto-created storefront's publisher and operator domain.
          example: nike.com
          type: string
          maxLength: 255
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$
        defaultCurrency:
          description: >-
            For SELLER accounts, seller-confirmed primary settlement currency
            (ISO-4217) for the auto-created storefront.
          example: USD
          type: string
          pattern: ^[A-Z]{3}$
        paymentCurrencies:
          description: >-
            For SELLER accounts, ISO-4217 currencies the auto-created storefront
            will be paid in. The primary defaultCurrency must be included when
            both are provided.
          example:
            - USD
            - EUR
          maxItems: 25
          type: array
          items:
            type: string
            pattern: ^[A-Z]{3}$
        accountMode:
          description: >-
            Internal account provisioning mode. DEMO is restricted to Scope3
            platform administrators and provisions a leased synthetic
            Storefront.
          example: STANDARD
          default: STANDARD
          type: string
          enum:
            - STANDARD
            - DEMO
        demoRecipeIds:
          description: >-
            Versioned synthetic source recipes to attach when accountMode is
            DEMO.
          example:
            - sample-publisher-display
            - sample-publisher-ctv
            - sample-retail-media
          minItems: 1
          maxItems: 3
          type: array
          items:
            type: string
            enum:
              - sample-publisher-display
              - sample-publisher-ctv
              - sample-retail-media
      required:
        - name
        - customerRole
    CreateChildAccountResponse:
      description: Full user context scoped to the newly created account
      type: object
      properties:
        user:
          description: User profile data
          type: object
          properties: {}
          additionalProperties: {}
        customer:
          description: Customer context for the newly created child
          type: object
          properties: {}
          additionalProperties: {}
        customers:
          description: All accessible customer accounts
          type: array
          items:
            type: object
            properties: {}
            additionalProperties: {}
        showTosBox:
          description: Whether to show the ToS acceptance dialog
          type: boolean
        canAcceptTos:
          description: >-
            Whether the current user may accept Terms of Service for the
            organization governing this child.
          type: boolean
        tosUpdate:
          description: Successor Terms of Service context inherited from the organization.
          type: object
          properties:
            action:
              type: string
              enum:
                - notice
                - acceptance_due
                - acceptance_required
            changeLevel:
              type: string
              enum:
                - PATCH
                - MINOR
                - MAJOR
            acceptedVersion:
              nullable: true
              type: string
            targetVersion:
              type: string
            deadline:
              nullable: true
              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))$
            termsUrl:
              type: string
            changesUrl:
              nullable: true
              type: string
          required:
            - action
            - changeLevel
            - acceptedVersion
            - targetVersion
            - deadline
            - termsUrl
            - changesUrl
          additionalProperties: false
        organizationContractMissing:
          description: >-
            True when the newly created account cannot operate because the
            organization it inherits from has no active contract. UI should
            render a block page until an organization admin accepts ToS.
          type: boolean
        hasContract:
          description: Whether the customer has an active contract
          type: boolean
        latestTosVersion:
          description: Latest Terms of Service version identifier
          type: string
        convertedFromStandalone:
          description: >-
            True if the request created an organization and attached the
            formerly standalone account to it
          type: boolean
      required:
        - user
        - customer
        - customers
        - showTosBox
        - canAcceptTos
        - hasContract
        - latestTosVersion
        - convertedFromStandalone
      additionalProperties: false
    ErrorResponse:
      description: Standard error response
      type: object
      properties:
        data:
          type: string
          nullable: true
          enum:
            - null
        error:
          $ref: '#/components/schemas/ApiError'
      required:
        - data
        - error
      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

````