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

> ## Agent Instructions
> OwnPay is licensed under AGPL-3.0 and is completely free - no licensing fees.
> Production docs URL: https://ownpay.org/docs - append .md to any page URL for clean markdown.
> OwnPay requires PHP 8.3+, MySQL/MariaDB, and Redis.
> MCP server available at https://ownpay.org/docs/mcp for programmatic documentation queries.
> Use root-relative links (e.g. /quickstart) for internal navigation - do NOT include /docs prefix.
> Plugin development: consult /developer/plugin-types/ pages for correct interfaces and manifests.

# Verify Custom Domain

> Triggers DNS ownership verification checks for a white-labeled custom domain associated with the brand.




## OpenAPI

````yaml /api/admin_api.yaml post /domains/verifications
openapi: 3.1.0
info:
  title: OwnPay Brand Administrative API
  description: >
    The OwnPay Administrative API is used by per-merchant/brand administrators
    to configure and audit their gateway components.

    It exposes endpoints under `/api/admin/v1` to manage regex-based SMS parsing
    templates, inspect and retry failed messages in the outbound SMS
    communication queue, list/revoke paired companion devices, and verify
    white-labeled custom domains.


    ### Authentication

    Administrative endpoints require Bearer authentication using an API key
    generated with the `admin` privilege scope.

    ```http

    Authorization: Bearer <admin_api_key>

    ```

    All actions executed via this API are strictly isolated and scoped to the
    brand/merchant associated with the provided credentials.

    Note that administrative API routes are protected and are **only**
    accessible on the master domain configured via the `APP_DOMAIN` environment
    variable (e.g. `ownpay.org`), and are blocked on custom brand domains.
  version: 1.0.0
servers:
  - url: https://{master_domain}/api/admin/v1
    description: Master administrative API server.
    variables:
      master_domain:
        default: ownpay.org
        description: The APP_DOMAIN host where the administrative panel is accessible.
security:
  - AdminBearerAuth: []
paths:
  /domains/verifications:
    post:
      summary: Verify Custom Domain
      description: >
        Triggers DNS ownership verification checks for a white-labeled custom
        domain associated with the brand.
      operationId: verifyCustomDomain
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerifyDomainRequest'
      responses:
        '200':
          description: Verification executed. Returns the outcome.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyDomainResponse'
        '422':
          description: Missing domain_id parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSingleErrorResponse'
components:
  schemas:
    VerifyDomainRequest:
      type: object
      required:
        - domain_id
      properties:
        domain_id:
          type: integer
          description: Database primary key ID of the custom domain entry to verify.
          example: 8
    VerifyDomainResponse:
      type: object
      properties:
        success:
          type: boolean
          example: true
        data:
          type: object
          properties:
            verified:
              type: boolean
              description: >-
                True if DNS checks passed and ownership verified, otherwise
                false.
              example: true
    ApiSingleErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
          example: Error message details
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                example: ERROR_CODE
              message:
                type: string
                example: Error message details
              field:
                type: string
                nullable: true
                example: null
        request_id:
          type: string
          example: 8f5a2e9b0c7d4e5f
  securitySchemes:
    AdminBearerAuth:
      type: http
      scheme: bearer
      description: Enter the Admin scope Bearer API key.

````

## Related topics

- [Admin API Reference - SMS, Domains, and Device Management](/docs/api-reference/admin.md)
- [Performance and Scaling - Caching, Queues, and Optimization](/docs/advanced-topics/performance-scaling.md)
- [Manage Custom Domains - DNS, SSL, and Brand Routing](/docs/user-guide/system/domains.md)
- [Custom Domains - SSL and DNS for Brand Checkouts](/docs/concepts/domains.md)
- [OwnPay Architecture: PHP Core, Middleware, and Plugins](/docs/resources/architecture.md)
