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

# Get subdomain

> Fetch a subdomain by ID.

Returns the full subdomain, including its DNS records and current status. Poll this endpoint to track a subdomain's progress until its status is `active`, or configure a `webhook_url` when you [register the subdomain](/reference/subdomainscontroller_create) to receive status changes without polling.

See [Subdomain statuses](/docs/custom-subdomain-setup#subdomain-statuses) for what each status means.

Note: Does not support `Legacy` subdomains. Migrate old certificates via the Dashboard to manage them via API.


## OpenAPI

````yaml reference/management-api_2025-11-20.json GET /subdomains/{id}
openapi: 3.0.0
info:
  title: Management API
  description: >-
    Managment API allows you to manage your Fingerprint account and applications
    programmatically from a server environment.
  version: '2025-11-20'
  contact: {}
servers:
  - url: https://management-api.fpjs.io
security:
  - Management-API-key: []
tags: []
paths:
  /subdomains/{id}:
    get:
      tags:
        - subdomains
      summary: Get subdomain
      description: Fetch a subdomain by ID.
      operationId: SubdomainsController_findOne
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: X-API-Version
          in: header
          description: Management API version.
          example: '2025-11-20'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Subdomain object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a32c18b7e424f401c718c'
        '401':
          description: 'Error: Invalid API key.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiExceptionDto'
        '404':
          description: Subdomain with the given ID was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiExceptionDto'
        '429':
          description: 'Error: API key has exceeded its rate limit.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiExceptionDto'
components:
  schemas:
    a32c18b7e424f401c718c:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/SubdomainResponseDto'
      required:
        - data
    ApiExceptionDto:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/BaseApiExceptionDto'
      required:
        - error
    SubdomainResponseDto:
      type: object
      properties:
        id:
          type: string
          description: Subdomain ID
          example: certv2_a1b2c3d4e5f6
        subdomain:
          type: string
          description: Subdomain hostname
          example: metrics.yourwebsite.com
        status:
          type: string
          enum:
            - pending
            - active
            - timed_out
            - failed
          description: >-
            Current subdomain status. `pending` = DNS/certificate setup in
            progress; `active` = live and serving traffic; `timed_out` = setup
            timed out (usually the required DNS records were never added) — safe
            to delete and recreate; `failed` = terminal failure.
        created_at:
          format: date-time
          type: string
          description: When the subdomain was created
          example: '2026-03-05T14:00:00.000Z'
        updated_at:
          format: date-time
          type: string
          description: When the subdomain was last updated
          example: '2026-03-05T14:35:00.000Z'
        webhook_url:
          type: string
          nullable: true
          description: >-
            HTTPS URL receiving a signed POST callback on every status change.
            Null when not configured. Set at creation only — subdomains are
            immutable.
          example: https://customer.com/hooks/fp-subdomain
        dns_records:
          $ref: '#/components/schemas/DnsRecordsDto'
      required:
        - id
        - subdomain
        - status
        - created_at
        - updated_at
        - dns_records
    BaseApiExceptionDto:
      type: object
      properties:
        message:
          type: string
          description: Verbal description of the error.
        code:
          type: string
          description: Error code.
      required:
        - message
        - code
    DnsRecordsDto:
      type: object
      properties:
        verification:
          $ref: '#/components/schemas/DnsRecordDto'
        routing:
          type: array
          items:
            $ref: '#/components/schemas/DnsRecordDto'
      required:
        - verification
        - routing
    DnsRecordDto:
      type: object
      properties:
        type:
          type: string
          description: DNS record type the customer must create.
          example: CNAME
        host:
          type: string
          description: Host/name of the DNS record.
          example: _acme-challenge.metrics.yourwebsite.com
        value:
          type: string
          description: Value the DNS record must point to.
          example: dcv.fpjs.io
        status:
          type: string
          enum:
            - pending_validation
            - validated
            - failed
          description: Whether this individual record has been detected and validated yet.
          example: pending_validation
      required:
        - type
        - host
        - value
        - status
  securitySchemes:
    Management-API-key:
      scheme: bearer
      bearerFormat: JWT
      type: http

````