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

# List domain registrations

> <Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Returns the registration status of each domain bought through Base44 for the app, including when it expires and whether it renews.

Domains you own elsewhere aren't included. Their registration lives with your own registrar.

Only a workspace owner can read registrations, because renewal is managed for the whole workspace.

Fields come back `null` when the registration can't be read, for example while the registrar is unavailable. That isn't a failure of the call, so read the value again later.

Registrations are ordered by domain name, with cursor-based pagination. To get the next page, send only the `cursor` from the previous response. It carries `limit` with it.

Reading registrations is limited to 30 requests a minute per caller. Some workspaces have a different limit.



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json get /api/apps/{app_id}/custom-domains/registrations
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - PersonalAccessTokenAuth: []
paths:
  /api/apps/{app_id}/custom-domains/registrations:
    get:
      summary: List domain registrations
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Returns the registration status of each domain bought through Base44 for
        the app, including when it expires and whether it renews.


        Domains you own elsewhere aren't included. Their registration lives with
        your own registrar.


        Only a workspace owner can read registrations, because renewal is
        managed for the whole workspace.


        Fields come back `null` when the registration can't be read, for example
        while the registrar is unavailable. That isn't a failure of the call, so
        read the value again later.


        Registrations are ordered by domain name, with cursor-based pagination.
        To get the next page, send only the `cursor` from the previous response.
        It carries `limit` with it.


        Reading registrations is limited to 30 requests a minute per caller.
        Some workspaces have a different limit.
      operationId: >-
        list_domain_registrations_api_apps__app_id__custom_domains_registrations_get
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app the domain belongs to.
            title: App Id
          description: ID of the app the domain belongs to.
          example: 6820f3a4e7b91d003c45a1f2
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 50
            minimum: 1
            description: Items per page. Max 50.
            default: 50
            title: Limit
          description: Items per page. Max 50.
          example: 50
        - name: cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Pagination cursor from previous response.
            title: Cursor
          description: Pagination cursor from previous response.
          example: gAAAAABn7vJ...
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainRegistrations'
        '400':
          description: >-
            The `cursor` is invalid, expired, or from another request, or
            `limit` was sent beside it (`invalid_request`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
        '401':
          description: Missing or invalid credentials (`unauthenticated`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
        '403':
          description: >-
            You don't have access to this app, you aren't a workspace owner, or
            you used a workspace API key (`forbidden`). This endpoint takes a
            personal API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
        '404':
          description: App not found (`not_found`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
        '422':
          description: >-
            A parameter is the wrong type or out of range (`invalid_request`).
            `error.details.errors` lists each problem.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
        '429':
          description: Rate limit reached (`rate_limited`). Retry later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
components:
  schemas:
    DomainRegistrations:
      properties:
        registrations:
          items:
            $ref: '#/components/schemas/DomainRegistration'
          type: array
          title: Registrations
          description: >-
            One entry per domain bought through Base44 for this app, on this
            page.
        pagination:
          $ref: '#/components/schemas/PublicPaginationInfo'
          description: Where this page sits in the full list of registrations.
      type: object
      required:
        - registrations
        - pagination
      title: DomainRegistrations
      description: The registration status of the app's domains bought through Base44.
    StandardErrorEnvelope:
      properties:
        error:
          $ref: '#/components/schemas/StandardError'
          description: What went wrong.
      type: object
      required:
        - error
      title: StandardErrorEnvelope
      description: The error body returned in the standard envelope.
    DomainRegistration:
      properties:
        domain:
          type: string
          title: Domain
          description: The domain name.
          example: nordwind-furniture.com
        can_manage:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Can Manage
          description: >-
            Whether the workspace's account holds the registration, so its
            renewal can be managed (`true`) or not (`false`). The value is
            `null` when Base44 couldn't read the registration.
          example: true
        expires_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Expires At
          description: >-
            When the current registration period ends, as an ISO 8601 timestamp.
            With `auto_renew` on, the domain renews then. The value is `null`
            when Base44 couldn't read it.
          example: '2027-09-24T00:00:00.000Z'
        auto_renew:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Auto Renew
          description: >-
            Whether the registration renews automatically (`true`) or lapses at
            `expires_at` (`false`). The value is `null` when Base44 couldn't
            read it.
          example: true
      type: object
      required:
        - domain
        - can_manage
        - expires_at
        - auto_renew
      title: DomainRegistration
    PublicPaginationInfo:
      properties:
        total:
          type: integer
          title: Total
          description: Total number of matching items.
          example: 347
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: >-
            Cursor for fetching the next page. The value is `null` if there are
            no more pages.
          example: gAAAAABn7vJ...
        has_more:
          type: boolean
          title: Has More
          description: Whether there are more items to fetch.
          example: true
      type: object
      required:
        - total
        - has_more
      title: PublicPaginationInfo
      description: Pagination metadata for a cursor-paginated page.
    StandardError:
      properties:
        code:
          type: string
          title: Code
          description: >-
            Stable machine-readable cause of the failure. Match on this, not on
            `message`.
          example: not_found
        message:
          type: string
          title: Message
          description: Human-readable explanation. It isn't a stable contract.
          example: App not found
        details:
          additionalProperties: true
          type: object
          title: Details
          description: >-
            Structured context for the failure, or an empty object when there's
            none.
          example: {}
      type: object
      required:
        - code
        - message
      title: StandardError
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: 'Personal access token, sent as `Authorization: Bearer <token>`.'

````