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

> ## Agent Instructions
> For account actions, read https://ohmyho.st/skills/ohmyhost-get-started/SKILL.md and use the authenticated ohmyho.st CLI or local product MCP. Mintlify search only reads documentation. Preserve the customer’s selected project, environment and authentication provider.

# Read independent sending and receiving readiness

> One production mail domain per project; environment_id is the project Prod environment ID. Dev and Prod application URLs do not create separate mail domains. Provider credentials never leave ohmyho.st. Content expires 72 hours after original receipt.



## OpenAPI

````yaml /openapi.json get /v1/projects/{project_id}/environments/{environment_id}/mail-domain
openapi: 3.1.2
info:
  title: ohmyho.st API
  version: 0.0.0
  description: >-
    Public REST API for ohmyho.st hosting, projects, domains, email, credits and
    exports.
servers:
  - url: https://app.ohmyho.st
    description: Production control API
  - url: https://dev.app.ohmyho.st
    description: Development control API
security:
  - BearerAuth: []
paths:
  /v1/projects/{project_id}/environments/{environment_id}/mail-domain:
    get:
      summary: Read independent sending and receiving readiness
      description: >-
        One production mail domain per project; environment_id is the project
        Prod environment ID. Dev and Prod application URLs do not create
        separate mail domains. Provider credentials never leave ohmyho.st.
        Content expires 72 hours after original receipt.
      operationId: getManagedMailDomain
      parameters:
        - $ref: '#/components/parameters/RequestId'
        - name: project_id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/Ulid'
        - name: environment_id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/Ulid'
      responses:
        '200':
          description: Authorized mail result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedMailDomain'
        '400':
          $ref: '#/components/responses/Problem'
        '401':
          $ref: '#/components/responses/Problem'
        '403':
          $ref: '#/components/responses/Problem'
        '404':
          $ref: '#/components/responses/Problem'
        '409':
          $ref: '#/components/responses/Problem'
        '429':
          $ref: '#/components/responses/Problem'
        '503':
          $ref: '#/components/responses/Problem'
components:
  parameters:
    RequestId:
      name: X-Request-Id
      in: header
      description: Optional caller-provided correlation identifier.
      required: false
      schema:
        type: string
        minLength: 1
        maxLength: 128
  schemas:
    Ulid:
      type: string
      pattern: ^[0-9A-HJKMNP-TV-Z]{26}$
    ManagedMailDomain:
      type: object
      additionalProperties: false
      required:
        - domain_id
        - domain
        - environment_id
        - sending
        - receiving
        - status
        - configured_at
        - observed_at
        - dns_records
        - webhook
        - next_check_after_seconds
      properties:
        domain_id:
          $ref: '#/components/schemas/Ulid'
        domain:
          type: string
        environment_id:
          $ref: '#/components/schemas/Ulid'
        sending:
          type: string
          enum:
            - disabled
            - pending
            - ready
            - failed
        receiving:
          type: string
          enum:
            - disabled
            - pending
            - ready
            - failed
        status:
          type: string
          enum:
            - ready
            - verification_pending
        configured_at:
          type: string
          format: date-time
        observed_at:
          type:
            - string
            - 'null'
          format: date-time
        dns_records:
          type: array
          items:
            $ref: '#/components/schemas/ManagedMailDnsRecord'
        dns:
          type: object
          additionalProperties: false
          required:
            - status
            - records
          properties:
            status:
              type: string
              enum:
                - configured
                - action_required
                - conflict
            records:
              type: array
              items:
                $ref: '#/components/schemas/ManagedMailDnsRecord'
        webhook:
          type:
            - object
            - 'null'
          additionalProperties: false
          required:
            - url
            - verified
          properties:
            url:
              type: string
              format: uri
            verified:
              type: boolean
        next_check_after_seconds:
          type:
            - integer
            - 'null'
          enum:
            - 60
            - null
    ManagedMailDnsRecord:
      type: object
      additionalProperties: false
      required:
        - type
        - name
        - value
        - purpose
        - status
      properties:
        type:
          type: string
          enum:
            - TXT
            - CNAME
            - MX
        name:
          type: string
        value:
          type: string
        purpose:
          type: string
        status:
          type: string
        priority:
          type: integer
          minimum: 0
          maximum: 65535
    ProblemDetails:
      type: object
      description: RFC 9457 Problem Details extended with stable ohmyhost recovery fields.
      additionalProperties: false
      required:
        - type
        - title
        - status
        - code
        - request_id
        - retryable
        - suggested_action
      properties:
        type:
          type: string
          format: uri-reference
        title:
          type: string
          minLength: 1
        status:
          type: integer
          minimum: 400
          maximum: 599
        detail:
          type: string
        instance:
          type: string
          format: uri-reference
        code:
          type: string
          enum:
            - invalid_request
            - unauthenticated
            - forbidden
            - organization_required
            - resource_not_found
            - idempotency_key_reused
            - project_handle_unavailable
            - project_identity_unavailable
            - deployment_plan_expired
            - deployment_plan_incompatible
            - confirmation_expired
            - confirmation_invalid
            - etag_mismatch
            - promotion_source_stale
            - promotion_target_stale
            - promotion_invalid_target
            - mail_domain_conflict
            - mail_domain_required
            - storage_jurisdiction_conflict
            - shared_data_requires_promotion
            - framework_conversion_required
            - repository_configuration_missing
            - migration_filename_noncanonical
            - environment_secret_mutation_blocked
            - workers_runtime_incompatible
            - project_handle_invalid
            - project_handle_taken
            - project_handle_unchanged
            - project_rename_blocked
            - payload_too_large
            - rate_limited
            - insufficient_organization_credits
            - paid_plan_required
            - project_budget_exceeded
            - compute_performance_paid_required
            - compute_performance_unavailable
            - database_write_pending
            - database_access_limit
            - compute_change_pending
            - compute_change_conflict
            - billing_purchase_conflict
            - billing_recharge_conflict
            - github_connection_required
            - github_connection_revoked
            - repository_not_installed
            - cloudflare_zone_not_bound
            - cloudflare_authorization_closed
            - project_notes_conflict
            - project_export_not_ready
            - interactive_login_required
            - api_key_creation_uncertain
            - api_key_permissions_unavailable
            - reconciliation_exhausted
            - service_unavailable
        request_id:
          type: string
          minLength: 1
          maxLength: 128
        retryable:
          type: boolean
        retry_after_seconds:
          type: integer
          minimum: 1
          maximum: 86400
          description: >-
            Optional machine-readable retry delay for a rate limit, matching
            Retry-After.
        suggested_action:
          type: string
          minLength: 1
  responses:
    Problem:
      description: The request failed.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
  headers:
    XRequestId:
      description: Correlates the request with operations, events, logs, and audit records.
      required: true
      schema:
        type: string
        minLength: 1
        maxLength: 128
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        WorkOS access JWT or a user-owned WorkOS API key. User keys are bound to
        one organization and restricted to their enabled product permissions.
        Session-only onboarding and session revocation require an interactive
        access JWT. No cookie session is assumed.

````