> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apostra.com/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:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 255
          description: Name for the new account
          example: Nike
        customerRole:
          type: string
          enum:
            - BUYER
            - SELLER
          description: Whether the account is a buyer or seller
          example: BUYER
        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 brand 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:
          default: STANDARD
          description: >-
            Internal account provisioning mode. DEMO is restricted to Scope3
            platform administrators and provisions a leased synthetic
            Storefront.
          example: 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
        demoFeatureProfileName:
          description: >-
            Seller capability profile applied only to the active Demo Storefront
            lease.
          example: seller-sources/merchandising-distribution
          type: string
          enum:
            - seller-sources/listing-only
            - seller-sources/listing-distribution
            - seller-sources/merchandising
            - seller-sources/merchandising-distribution
      required:
        - name
        - customerRole
      description: Request body for creating a Buyer or Seller account
    CreateChildAccountResponse:
      type: object
      properties:
        user:
          type: object
          properties: {}
          additionalProperties: {}
          description: User profile data
        customer:
          type: object
          properties: {}
          additionalProperties: {}
          description: Customer context for the newly created child
        customers:
          type: array
          items:
            type: object
            properties: {}
            additionalProperties: {}
          description: All accessible customer accounts
        showTosBox:
          type: boolean
          description: Whether to show the ToS acceptance dialog
        canAcceptTos:
          type: boolean
          description: >-
            Whether the current user may accept Terms of Service for the
            organization governing this child.
        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:
          type: boolean
          description: Whether the customer has an active contract
        latestTosVersion:
          type: string
          description: Latest Terms of Service version identifier
        convertedFromStandalone:
          type: boolean
          description: >-
            True if the request created an organization and attached the
            formerly standalone account to it
      required:
        - user
        - customer
        - customers
        - showTosBox
        - canAcceptTos
        - hasContract
        - latestTosVersion
        - convertedFromStandalone
      additionalProperties: false
      description: Full user context scoped to the newly created account
    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

````