Convert Domains API

Domains define websites which will be used in experiences in your projects.

OpenAPI Specification

convert-domains-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Convert Accounts Domains API
  description: 'Move your app forward with the Convert API. The Convert API allows

    you to manage your Convert Experiences projects using code. The REST API is

    an interface for managing and extending functionality of Convert. For

    example, instead of creating and maintaining projects using the Convert

    Experiences web dashboard you can create an experiment programmatically.

    Additionally, if you prefer to run custom analysis on experiment results you

    can leverage the API to pull data from Convert Experiences into your own

    workflow. If you do not have a Convert account already, sign up for a free

    developer account at https://www.convert.com/api/.


    *[Convert API V1](/doc/v1) is still available and documentation can be found [here](/doc/v1) but using it is highly discouraged

    as it will be phased out in the future*

    '
  version: 2.0.0
servers:
- url: https://api.convert.com/api/v2
  description: Live API server
- url: https://apidev.convert.com/api/v2
  description: DEV API server
- url: http://apidev.convert.com:5000/api/v2
  description: DEV mocked API server
tags:
- name: Domains
  description: Domains define websites which will be used in experiences in your projects.
paths:
  /accounts/{account_id}/projects/{project_id}/domains:
    post:
      operationId: getDomainsList
      summary: List domains associated with a project
      description: 'Retrieves a list of all website domains configured for a specific project.

        The Convert tracking script will operate on these domains to run experiences and track visitors.

        Wildcard domains (e.g., `*.example.com`) are supported.

        As per the Knowledge Base: "Active Websites: The domains you would like to use inside the project. Make sure you always add new domains here..."

        '
      tags:
      - Domains
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        in: path
        required: true
        description: ID of the project to which save/retrieved data is connected
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/GetDomainsListRequest'
      responses:
        '200':
          $ref: '#/components/responses/DomainsListResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/domains/{domain_id}:
    get:
      operationId: getDomain
      summary: Get details for a specific domain in a project
      description: 'Retrieves information about a single domain associated with a project, identified by its `domain_id`.

        This includes the domain URL and whether the Convert tracking code was detected on it.

        '
      tags:
      - Domains
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        in: path
        required: true
        description: ID of the project into which the domain is stored
        schema:
          type: integer
      - name: domain_id
        in: path
        required: true
        description: ID of the domain to be retrieved
        schema:
          type: integer
      responses:
        '200':
          $ref: '#/components/responses/DomainResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/domains/by_url:
    post:
      operationId: getDomainByUrl
      summary: Get domain details by its URL
      description: 'Retrieves information about a domain by matching its URL (exact or wildcard) instead of its ID.

        Useful if you know the domain URL but not its internal Convert ID.

        '
      tags:
      - Domains
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        in: path
        required: true
        description: ID of the project into which the domain is stored
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/GetDomainByUrlRequest'
      responses:
        '200':
          $ref: '#/components/responses/DomainResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/domains/{domain_id}/check_code:
    post:
      operationId: checkCodeDomain
      summary: Verify Convert tracking code installation on a domain
      description: 'Checks if the Convert tracking script for the specified project is correctly installed and detectable on the given URL (which must belong to the domain identified by `domain_id`).

        Updates the `code_installed` status of the domain object.

        The Knowledge Base article "Tracking Script Installation Verification" describes this UI feature.

        '
      tags:
      - Domains
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        in: path
        required: true
        description: ID of the project into which the domain is stored
        schema:
          type: integer
      - name: domain_id
        in: path
        required: true
        description: ID of the domain to which the given URL belongs. An error would be returned if the URL is not under this domain.
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/CheckCodeDomainRequest'
      responses:
        '200':
          $ref: '#/components/responses/DomainResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/domains/add:
    post:
      operationId: createDomain
      summary: Add a new domain to a project
      description: 'Associates a new website domain (e.g., `https://www.example.com`) with the specified project.

        The Convert tracking script for this project should then be installed on this domain to enable experiments.

        Wildcards like `https://*.example.com` can be used to include all subdomains.

        '
      tags:
      - Domains
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        in: path
        required: true
        description: ID of the project into which the domain is to be stored
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/CreateDomainRequest'
      responses:
        '201':
          $ref: '#/components/responses/DomainResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/domains/{domain_id}/update:
    post:
      operationId: updateDomain
      summary: Update an existing domain in a project
      description: 'Modifies the URL of an existing domain associated with a project.

        '
      tags:
      - Domains
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        in: path
        required: true
        description: ID of the project into which the domain is to be stored
        schema:
          type: integer
      - name: domain_id
        in: path
        required: true
        description: ID of the domain to be updated
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/UpdateDomainRequestData'
      responses:
        '200':
          $ref: '#/components/responses/DomainResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/domains/{domain_id}/delete:
    delete:
      operationId: deleteDomain
      summary: Remove a domain from a project
      description: 'De-associates a domain from the specified project.

        After deletion, Convert experiences will no longer run on this domain for this project.

        '
      tags:
      - Domains
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        in: path
        required: true
        description: ID of the project into which the domain is to be stored
        schema:
          type: integer
      - name: domain_id
        in: path
        required: true
        description: ID of the domain to be delete
        schema:
          type: integer
      responses:
        '200':
          $ref: '#/components/responses/SuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/domains/bulk-delete:
    post:
      operationId: bulkDomainsDelete
      summary: Remove multiple domains from a project
      description: 'De-associates multiple domains from the specified project in a single operation.

        Requires a list of domain IDs to be removed.

        '
      tags:
      - Domains
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/BulkDeleteDomainsRequest'
      responses:
        '200':
          $ref: '#/components/responses/BulkSuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
components:
  schemas:
    DomainsList:
      type: array
      description: List of domains
      items:
        $ref: '#/components/schemas/Domain'
    GetDomainsListRequestData:
      allOf:
      - $ref: '#/components/schemas/OnlyCount'
      - $ref: '#/components/schemas/DomainsListDataOptions'
      - $ref: '#/components/schemas/PageNumber'
      - type: object
        properties:
          only:
            description: 'Only retrieve domains with the given ids.

              '
            type: array
            nullable: true
            items:
              type: integer
            maxItems: 100
          except:
            description: 'Except domains with the given ids.

              '
            type: array
            items:
              type: integer
            maxItems: 100
    BulkDeleteDomainRequestData:
      type: object
      description: Bulk Delete provided domains
      additionalProperties: false
      properties:
        id:
          $ref: '#/components/schemas/BulkDomainsIds'
      required:
      - id
    Extra:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
    BulkSuccessData:
      allOf:
      - $ref: '#/components/schemas/SuccessData'
      - type: object
        properties:
          code:
            type: integer
            format: int32
          errors:
            type: array
            description: List of unprocessed entities. Would be empty, if all passed entities processed
            items:
              $ref: '#/components/schemas/BulkEntityError'
    CheckCodeDomainRequestData:
      type: object
      description: Check if tracking code is installed on the given URL;
      properties:
        url:
          type: string
          maxLength: 255
          description: 'URL on which to check the tracking code installed.

            The given URL needs to be under the domain passes as parameter or otherwise an error would be returned.

            '
    Pagination:
      type: object
      properties:
        current_page:
          description: The current page number being displayed from the paginated set.
          type: integer
          minimum: 1
        items_count:
          description: The total number of items available across all pages for the current filter criteria.
          type: integer
          minimum: 0
        items_per_page:
          description: The number of items included in the current page of results (matches `results_per_page` from the request).
          type: integer
          minimum: 0
        pages_count:
          description: The total number of pages available for the current filter criteria and `results_per_page` setting.
          type: integer
          minimum: 0
    PageNumber:
      type: object
      properties:
        page:
          type: integer
          minimum: 1
          description: 'The page number for paginated results. For example, if `results_per_page` is 30, `page: 2` will retrieve items 31-60.

            Defaults to 1 if not specified.

            '
    BulkEntityError:
      type: object
      additionalProperties: false
      properties:
        id:
          type: integer
          description: The unique identifier of the entity that could not be processed.
        message:
          type: string
          description: A message explaining the reason for the failure for this specific entity.
    Domain:
      type: object
      description: A website domain data.
      properties:
        id:
          type: integer
          description: Domain ID.
          readOnly: true
        url:
          type: string
          maxLength: 150
          pattern: ^(http|https)://
          description: Domain's homepage url
        code_installed:
          type: boolean
          description: Indicating whether code installed check passed sometimes in the past.
          default: false
    CreateDomainRequestData:
      allOf:
      - $ref: '#/components/schemas/DomainToCreate'
    GetDomainByUrlRequestData:
      type: object
      description: Get domain by URL request data
      properties:
        url:
          type: string
          maxLength: 255
          description: URL by which to search the domain. The match can be an exact one or an wildcard one.
    DomainsListResponseData:
      type: object
      description: Response containing a list of domains and extra domains list metadata
      properties:
        data:
          $ref: '#/components/schemas/DomainsList'
        extra:
          $ref: '#/components/schemas/Extra'
    DomainsListDataOptions:
      type: object
      description: Filter domains list.
      allOf:
      - $ref: '#/components/schemas/ResultsPerPage'
    DomainToCreate:
      required:
      - url
      allOf:
      - $ref: '#/components/schemas/Domain'
    BulkDomainsIds:
      type: array
      description: The list of domains id to delete
      items:
        type: integer
      minItems: 1
      maxItems: 100
    ErrorData:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        fields:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
    UpdateDomainRequestData:
      allOf:
      - $ref: '#/components/schemas/Domain'
    OnlyCount:
      type: object
      properties:
        onlyCount:
          type: boolean
          description: 'If set to `true` in a list request, the response will only contain the total count of matching items (`extra.pagination.items_count`)

            and will not include the actual item data. Useful for quickly getting totals without fetching full datasets.

            '
    ResultsPerPage:
      type: object
      properties:
        results_per_page:
          type: integer
          nullable: true
          minimum: 0
          maximum: 50
          default: 30
          description: 'Specifies the maximum number of items to return in a single page of results.

            Used for pagination. Default is 30, maximum is 50.

            '
    SuccessData:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
  responses:
    SuccessResponse:
      description: 'A generic success response, typically used for operations that don''t return specific data (like deletions or some updates). The `code` is usually 200, and `message` confirms the successful action.

        '
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SuccessData'
    ErrorResponse:
      description: 'Indicates an error occurred while processing the request. The `code` provides an HTTP status code, `message` offers a human-readable explanation or an array of validation errors, and `fields` (if present) specifies which input fields were problematic.

        '
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorData'
    BulkSuccessResponse:
      description: 'Indicates the outcome of a bulk operation (e.g., bulk update or delete). Provides a general success `message` and an `errors` array listing any entities that could not be processed, along with the reason for failure for each.

        '
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkSuccessData'
    DomainsListResponse:
      description: A list of website domains associated with a project. Each entry includes the domain `id`, `url`, and a flag `code_installed` indicating if the Convert tracking script was detected.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DomainsListResponseData'
    DomainResponse:
      description: Details for a single domain associated with a project, including its `id`, `url`, and `code_installed` status.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Domain'
  requestBodies:
    CheckCodeDomainRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CheckCodeDomainRequestData'
      description: Contains the specific `url` (which must fall under the path-parameter `domain_id`) on which to check for the presence and correct installation of the Convert tracking script.
    UpdateDomainRequestData:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UpdateDomainRequestData'
      required: true
    GetDomainByUrlRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GetDomainByUrlRequestData'
      description: Contains the `url` (which can be an exact match or include wildcards like `*.example.com`) to search for among the project's associated domains.
    CreateDomainRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateDomainRequestData'
      required: true
    GetDomainsListRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GetDomainsListRequestData'
      description: Optional filters for listing domains within a project, primarily pagination parameters (`page`, `results_per_page`).
    BulkDeleteDomainsRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkDeleteDomainRequestData'
  securitySchemes:
    requestSigning:
      type: apiKey
      x-name-applicationId: Convert-Application-ID
      x-name-expire: Expire
      name: Authorization
      in: header
      description: 'See **[API Key Authentication](#tag/API-KEY-Authentication)** for more information.

        '
    secretKey:
      type: http
      scheme: bearer
      description: 'See **[API Key Authentication](#tag/API-KEY-Authentication)** for more information.

        '
    cookieAuthentication:
      type: apiKey
      in: cookie
      name: sid
      description: Cookie authentication is used against Convert's own IdentityProvider  or third party identity providers and is described more in the "[Cookie Authentication](#tag/Cookie-Authentication)" section
x-tagGroups:
- name: Client Authentication
  tags:
  - API KEY Authentication
  - Cookie Authentication
  - OAuth Authorization
- name: Common Parameters
  tags:
  - Optional Fields
  - Expandable Fields
- name: Requests
  tags:
  - User
  - Accounts
  - AI content
  - Collaborators
  - API Keys
  - Projects
  - SDK Keys
  - Experiences
  - Experience Variations
  - Experience Sections
  - Section Versions
  - Version Changes
  - Experiences Reports
  - Experiences Heatmaps
  - Goals
  - Hypotheses
  - Knowledge Bases
  - Observations
  - Locations
  - Audiences
  - Domains
  - Cdn Images
  - Files
  - Tags
  - Features
  - Visitor Insights
  - Visitors Data
  - Visitor Data Placeholders
  - OAuth