> ## 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, local product MCP or supported remote OAuth MCP. Read the current project source binding before choosing GitHub or managed versions. Mintlify search only reads documentation. Preserve the customer’s selected project, environment and authentication provider; keep private application values in the portal or local stdin flow.

# Select database memory and included storage

> Requires project-write access and explicit confirmation. Select 256, 512, 1024, 2048 or 4096 MiB RAM; Free permits only 256 MiB. Included total storage is respectively 500, 1024, 2048, 4096 or 8192 MiB, including PostgreSQL and WAL. Seven-day backups are included. Each 256 MiB costs 10 credits per active hour, prorated by time; sleeping costs no active RAM credits. Shared Dev/Prod data changes both environments. A smaller volume requires a separate data migration and is refused here. A brief connection interruption is possible. Poll the original operation until observed completion. The legacy profile input is accepted only for databases still on the transitional provider; it does not imply PGCF autoscaling.



## OpenAPI

````yaml /openapi.json post /v1/projects/{project_id}/database/compute
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}/database/compute:
    post:
      summary: Select database memory and included storage
      description: >-
        Requires project-write access and explicit confirmation. Select 256,
        512, 1024, 2048 or 4096 MiB RAM; Free permits only 256 MiB. Included
        total storage is respectively 500, 1024, 2048, 4096 or 8192 MiB,
        including PostgreSQL and WAL. Seven-day backups are included. Each 256
        MiB costs 10 credits per active hour, prorated by time; sleeping costs
        no active RAM credits. Shared Dev/Prod data changes both environments. A
        smaller volume requires a separate data migration and is refused here. A
        brief connection interruption is possible. Poll the original operation
        until observed completion. The legacy profile input is accepted only for
        databases still on the transitional provider; it does not imply PGCF
        autoscaling.
      operationId: changeDatabaseCompute
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/RequestId'
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              required:
                - environment
                - confirm
              oneOf:
                - required:
                    - memory_mib
                - required:
                    - profile
              properties:
                environment:
                  type: string
                  enum:
                    - dev
                    - prod
                profile:
                  type: string
                  enum:
                    - standard
                    - performance
                memory_mib:
                  type: integer
                  enum:
                    - 256
                    - 512
                    - 1024
                    - 2048
                    - 4096
                confirm:
                  type: boolean
                  const: true
      responses:
        '202':
          $ref: '#/components/responses/AcceptedOperation'
        '400':
          $ref: '#/components/responses/Problem'
        '401':
          $ref: '#/components/responses/Problem'
        '403':
          $ref: '#/components/responses/Problem'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '409':
          $ref: '#/components/responses/Problem'
        '429':
          $ref: '#/components/responses/Problem'
        '503':
          $ref: '#/components/responses/Problem'
components:
  parameters:
    ProjectId:
      name: project_id
      in: path
      description: Project identifier.
      required: true
      schema:
        $ref: '#/components/schemas/Ulid'
    RequestId:
      name: X-Request-Id
      in: header
      description: Optional caller-provided correlation identifier.
      required: false
      schema:
        type: string
        minLength: 1
        maxLength: 128
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      description: Identifies one mutation and its canonical request payload.
      required: true
      schema:
        type: string
        minLength: 1
        maxLength: 128
  responses:
    AcceptedOperation:
      description: The mutation was accepted for asynchronous processing.
      headers:
        Location:
          description: Relative URL of the durable operation resource.
          required: true
          schema:
            type: string
            pattern: ^/v1/operations/[0-9A-HJKMNP-TV-Z]{26}$
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Operation'
    Problem:
      description: The request failed.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    ResourceNotFound:
      description: >-
        The resource does not exist or is not visible to the authenticated
        principal.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
          examples:
            resourceNotFound:
              value:
                type: https://docs.ohmyho.st/errors/resource-not-found
                title: Resource not found
                status: 404
                code: resource_not_found
                request_id: req_01J00000000000000000000000
                retryable: false
                suggested_action: Check the resource identifier and your access scope.
  schemas:
    Ulid:
      type: string
      pattern: ^[0-9A-HJKMNP-TV-Z]{26}$
    Operation:
      type: object
      description: >-
        Durable record returned for an accepted asynchronous mutation. Optional
        reconciliation is a current observation for queued/running work,
        separate from immutable terminal state. A completed reconciliation
        attempt alone does not mean the operation succeeded.
      additionalProperties: false
      required:
        - id
        - state
        - created_at
        - updated_at
      properties:
        blocking_operation_id:
          $ref: '#/components/schemas/Ulid'
          description: >-
            The active operation holding this queued operation's project
            mutation claim.
        deployment_id:
          $ref: '#/components/schemas/Ulid'
          description: >-
            The deployment this operation created (deploy, promotion or
            rollback), in every state. After a failure, read its diagnostics
            with deployment logs.
        id:
          $ref: '#/components/schemas/Ulid'
        state:
          type: string
          enum:
            - queued
            - running
            - succeeded
            - failed
            - cancelled
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        result:
          type: object
          additionalProperties: true
        error:
          $ref: '#/components/schemas/OperationFailure'
        progress:
          $ref: '#/components/schemas/OperationDeploymentProgress'
        reconciliation:
          $ref: '#/components/schemas/OperationReconciliation'
    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
            - mail_capacity_unavailable
            - storage_jurisdiction_conflict
            - shared_data_requires_promotion
            - production_deployment_required
            - 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_paid_required
            - compute_storage_shrink_requires_migration
            - 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
            - powered_by_flag_required
            - interactive_login_required
            - api_key_creation_uncertain
            - api_key_permissions_unavailable
            - reconciliation_exhausted
            - service_unavailable
            - source_commit_not_found
            - domain_hostname_taken
            - domain_dns_conflict
            - data_change_blocked
            - data_change_in_progress
            - data_change_not_applicable
            - rollback_target_data_changed
            - project_domain_delete_required
        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
    OperationFailure:
      type: object
      additionalProperties: false
      required:
        - code
        - message
        - retryable
        - suggested_action
      properties:
        code:
          type: string
          enum:
            - operation_failed
            - operation_abandoned
            - authorization_changed
            - source_commit_conflict
            - source_snapshot_invalid
            - source_upload_expired
            - recovery_dispatch_failed
            - recovery_job_failed
            - recovery_input_expired
            - recovery_database_unavailable
            - recovery_checksum_mismatch
            - recovery_scope_unavailable
            - recovery_archive_too_large
            - build_not_started
            - build_failed
            - database_write_rejected
            - database_write_unavailable
            - database_write_outcome_unknown
            - database_compute_failed
            - database_compute_plan_changed
            - database_compute_rejected
            - database_migration_failed
            - insufficient_organization_credits
            - project_budget_exceeded
            - paid_plan_required
            - runtime_candidate_failed
            - runtime_candidate_rejected
            - storage_jurisdiction_conflict
            - provider_state_absent
            - auto_deploy_plan_rejected
            - promotion_source_stale
            - promotion_target_stale
        message:
          type: string
          minLength: 1
          maxLength: 512
        retryable:
          type: boolean
          const: false
          description: >-
            A terminal operation cannot be retried in place; follow
            suggested_action.
        suggested_action:
          type: string
          minLength: 1
          maxLength: 500
        detail:
          type: string
          minLength: 1
          maxLength: 2000
          description: >-
            Present only on auto_deploy_plan_rejected when planning the pushed
            commit returned a typed refusal. It is the same fixed catalog
            sentence that the planning 409 problem returns as detail, naming the
            file, the rule and the required change.
    OperationDeploymentProgress:
      type: object
      additionalProperties: false
      description: >-
        Current deployment dependency observation, separate from immutable
        operation history. Poll the same operation; mail readiness does not mean
        application activation.
      required:
        - phase
        - project_id
        - deployment_id
        - observed_at
        - next_poll_after_seconds
        - suggested_action
      properties:
        build_completed_at:
          type: string
          format: date-time
          description: >-
            Actual successful build completion time when this operation ran a
            build; omitted for reused artifacts without a current build.
        phase:
          type: string
          enum:
            - queued
            - building
            - publishing
            - waiting_for_mail
            - mail_status_unavailable
        project_id:
          $ref: '#/components/schemas/Ulid'
        deployment_id:
          $ref: '#/components/schemas/Ulid'
        observed_at:
          type: string
          format: date-time
        next_poll_after_seconds:
          type: integer
          const: 60
        suggested_action:
          type: string
          minLength: 1
          maxLength: 500
    OperationReconciliation:
      type: object
      additionalProperties: false
      required:
        - state
        - attempt_id
        - observed_at
        - suggested_action
      properties:
        state:
          type: string
          enum:
            - required
            - pending
        attempt_id:
          oneOf:
            - $ref: '#/components/schemas/Ulid'
            - type: 'null'
          description: >-
            Active attempt for pending reconciliation; null when a new confirmed
            reconciliation is required.
        observed_at:
          type: string
          format: date-time
        suggested_action:
          type: string
          minLength: 1
          maxLength: 500
  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.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.