Hypamoon MCP API

The Model Context Protocol server, for agents and AI tools.

GitHub OpenAPI

Operations 1

POST /mcp Model Context Protocol endpoint #

Specifications

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hypamoon-com:hypamoon-com-mcp-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hypamoon-com-mcp-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Hypamoon MCP API
  version: 1.0.0
  description: 'Hypamoon is the infrastructure a chat or an agent builds on for a business: sites and apps (with server code, sign-in and their own database), data and forms, a media library, domains, email from your own domain, phone numbers with voice AI, SMS and chat, payments (see https://hypamoon.com/docs/payments) and agents. The same project is reachable from a connected chat over MCP and from your own code over this REST API.


    Calls are inbound, plus outbound calls your assistant makes to people who expect them (POST /calls).


    Every request needs an API key: `Authorization: Bearer hm_live_...`, or `hm_test_...` in test mode. Each key has scopes and a rate limit of 120 requests per 60 seconds.


    An OAuth access token (`hm_oat_...`, from connecting an assistant such as Claude.ai or ChatGPT) works on every /api/v1 route as well, with the scopes the user granted on the consent screen. For your own app, create an API key in the portal instead.


    Every error is `application/problem+json` with a `type` URL that explains the fix (`https://hypamoon.com/docs/errors/`). Every response carries an `X-Request-Id` header; include it when you ask us for help.


    Field names are snake_case, except inside a call plan, which is stored exactly as you send it (camelCase). New fields may be added to a response at any time; renaming or removing one requires a new version.'
  contact:
    name: Hypamoon support
    url: https://hypamoon.com/docs
servers:
- url: https://api.hypamoon.com/api/v1
security:
- ApiKey: []
- OAuth2: []
tags:
- name: MCP
  description: The Model Context Protocol server, for agents and AI tools.
paths:
  /mcp:
    post:
      operationId: mcp
      tags:
      - MCP
      summary: Model Context Protocol endpoint
      description: 'The MCP server for agents (Claude Code, Cursor, Lovable and other MCP hosts). Stateless Streamable HTTP: one JSON-RPC 2.0 message per POST, answered with JSON; notifications get 202. Authenticate with the same API key as the REST API, or with an OAuth access token (Claude.ai, ChatGPT and other hosts that connect by URL); the scopes of the key or the connection determine which tools are listed. Without valid credentials the response is 401 with a WWW-Authenticate header that points to the OAuth metadata. See https://hypamoon.com/docs/mcp.'
      x-hypamoon-scope: project:read
      security:
      - ApiKey:
        - project:read
      - OAuth2:
        - project:read
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/McpRequest'
            example:
              jsonrpc: '2.0'
              id: 1
              method: tools/list
      responses:
        '200':
          description: The JSON-RPC response.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/McpResponse'
              example:
                jsonrpc: '2.0'
                id: 1
                result:
                  tools: []
        '400':
          description: 'Bad Request: invalid_json.'
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          x-hypamoon-errors:
          - invalid_json
          content:
            application/problem+json:
              schema:
                allOf:
                - $ref: '#/components/schemas/Problem'
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                      - https://hypamoon.com/docs/errors/invalid_json
        '401':
          description: 'Unauthorized: unauthorized, missing_api_key, invalid_api_key, api_key_revoked, api_key_expired, project_deleted. Carries a WWW-Authenticate header with resource_metadata, so an MCP client can start OAuth.'
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            WWW-Authenticate:
              $ref: '#/components/headers/WWW-Authenticate'
          x-hypamoon-errors:
          - unauthorized
          - missing_api_key
          - invalid_api_key
          - api_key_revoked
          - api_key_expired
          - project_deleted
          content:
            application/problem+json:
              schema:
                allOf:
                - $ref: '#/components/schemas/Problem'
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                      - https://hypamoon.com/docs/errors/unauthorized
                      - https://hypamoon.com/docs/errors/missing_api_key
                      - https://hypamoon.com/docs/errors/invalid_api_key
                      - https://hypamoon.com/docs/errors/api_key_revoked
                      - https://hypamoon.com/docs/errors/api_key_expired
                      - https://hypamoon.com/docs/errors/project_deleted
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  schemas:
    Problem:
      type: object
      properties:
        type:
          type: string
          format: uri
          description: 'A URL that explains the error and the fix: https://hypamoon.com/docs/errors/<slug>.'
        title:
          type: string
          description: The HTTP status in words.
        status:
          type: integer
          description: The HTTP status.
        detail:
          type: string
          description: What went wrong in this request.
        request_id:
          type: string
          description: The id of this request, also in the X-Request-Id header. Mention it when you contact support.
        user_message:
          type: string
          description: One calm sentence in plain English for the end user, without technical terms. A chat or app can show it as it is.
        next_step:
          type: string
          description: 'With some errors: what the chat or agent itself should do next.'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/FieldError'
          description: 'With validation_failed, schema_mismatch and team_targets_not_allowed: every problem.'
        missing:
          type: array
          items:
            type: string
          description: 'With company_details_missing: the missing fields, as paths of PUT /project/company.'
        current_version:
          anyOf:
          - type: integer
          - type: string
          description: 'With version_conflict: the version that is there now (a number on a call plan, a string on a site; send it as if_match_version).'
        spend_cap_eur:
          type: number
          description: 'With billing_blocked: the spending cap per calendar month.'
        spent_eur:
          type: number
          description: 'With billing_blocked: what was spent this calendar month.'
        balance_eur:
          type: number
          description: 'With insufficient_balance: the prepaid balance now.'
        required_eur:
          type: number
          description: 'With insufficient_balance: what this request costs.'
        auto_reload_started:
          type: boolean
          description: 'With insufficient_balance: true when an automatic top-up just started; retry in a minute.'
      required:
      - type
      - title
      - status
      - detail
      - request_id
      - user_message
      description: An error, as application/problem+json (RFC 9457).
    McpResponse:
      type: object
      properties:
        jsonrpc:
          type: string
          const: '2.0'
        id:
          anyOf:
          - anyOf:
            - type: string
            - type: number
          - type: 'null'
        result:
          type: object
          properties: {}
      required:
      - jsonrpc
      - id
    McpRequest:
      type: object
      properties:
        jsonrpc:
          type: string
          const: '2.0'
        id:
          anyOf:
          - type: string
          - type: number
        method:
          type: string
        params:
          type: object
          properties: {}
      required:
      - jsonrpc
      - method
    FieldError:
      type: object
      properties:
        path:
          type: string
          description: Where the problem is, with dots, like address.postal_code. body means the body as a whole.
        message:
          type: string
          description: What is wrong, in English.
      required:
      - path
      - message
      additionalProperties: false
  responses:
    InternalError:
      description: 'Internal Server Error: internal_error.'
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      x-hypamoon-errors:
      - internal_error
      content:
        application/problem+json:
          schema:
            allOf:
            - $ref: '#/components/schemas/Problem'
            - type: object
              properties:
                type:
                  type: string
                  enum:
                  - https://hypamoon.com/docs/errors/internal_error
    ServiceUnavailable:
      description: 'Service Unavailable: service_unavailable.'
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      x-hypamoon-errors:
      - service_unavailable
      content:
        application/problem+json:
          schema:
            allOf:
            - $ref: '#/components/schemas/Problem'
            - type: object
              properties:
                type:
                  type: string
                  enum:
                  - https://hypamoon.com/docs/errors/service_unavailable
    Forbidden:
      description: 'Forbidden: project_not_enabled, key_mode_mismatch, missing_scope, ip_not_allowed, verification_required.'
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      x-hypamoon-errors:
      - project_not_enabled
      - key_mode_mismatch
      - missing_scope
      - ip_not_allowed
      - verification_required
      content:
        application/problem+json:
          schema:
            allOf:
            - $ref: '#/components/schemas/Problem'
            - type: object
              properties:
                type:
                  type: string
                  enum:
                  - https://hypamoon.com/docs/errors/project_not_enabled
                  - https://hypamoon.com/docs/errors/key_mode_mismatch
                  - https://hypamoon.com/docs/errors/missing_scope
                  - https://hypamoon.com/docs/errors/ip_not_allowed
                  - https://hypamoon.com/docs/errors/verification_required
    RateLimited:
      description: 'Too Many Requests: rate_limited.'
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      x-hypamoon-errors:
      - rate_limited
      content:
        application/problem+json:
          schema:
            allOf:
            - $ref: '#/components/schemas/Problem'
            - type: object
              properties:
                type:
                  type: string
                  enum:
                  - https://hypamoon.com/docs/errors/rate_limited
  headers:
    X-Request-Id:
      schema:
        type: string
      description: The id of this request. Include it when you contact support.
    Retry-After:
      schema:
        type: integer
      description: Seconds to wait before you try again.
    WWW-Authenticate:
      schema:
        type: string
      description: 'The OAuth challenge of the MCP server (RFC 6750, RFC 9728): `Bearer resource_metadata="<url>", scope="..."`, with `error="invalid_token"` for an expired or revoked token. An MCP client follows resource_metadata to find the authorization server and start OAuth.'
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: hm_live_..., hm_test_..., or an OAuth access token hm_oat_...
      description: 'Your API key as a bearer token: `Authorization: Bearer hm_live_...`. Live keys start with hm_live_; test keys start with hm_test_, belong to a test project, never reach the carrier and cost nothing. A key has scopes (project:read, project:write, numbers:read, calls:read, numbers:write, assistant:write, webhooks:write, messages:read, messages:write, calls:write, chat:read, chat:write, sites:read, sites:write, data:read, data:write); each operation names the one it needs in x-hypamoon-scope. Keys are shown only once; store them as a secret, never in a frontend. An OAuth access token (hm_oat_..., see OAuth2) is sent the same way and works on every /api/v1 route.'
    WordPressToken:
      type: http
      scheme: bearer
      bearerFormat: hm_wp_...
      description: Only for the /wordpress routes of the Hypamoon Connect plugin for WordPress. The plugin gets this token once, with POST /wordpress/connect and a one-time code, and sends it with X-Hypamoon-Site (the address of the WordPress site). It can only send this site's inventory and the data the user selected, to one project, for 30 days, and it can be revoked. It is not an API key.
    PublicChatToken:
      type: apiKey
      in: query
      name: token
      description: 'Only for the /public routes of the chat widget. The public chat token (hm_pub_... or hm_pubtest_...) in the query string, from a browser page on one of the token''s allowed origins (the Origin header must match exactly). It is not a secret: it is in the page source of your website. It can only chat, only from those origins, with a bot check and its own limits, and you can revoke it. Create one with POST /chat-tokens or in the portal. Never send your API key from a browser.'
    OAuth2:
      type: oauth2
      description: For assistants that connect by URL (Claude.ai, ChatGPT, Grok). Authorization code with PKCE (S256 only); register a client with dynamic client registration at https://api.hypamoon.com/oauth/register. Send resource=https://api.hypamoon.com/api/v1/mcp. The user picks the project (test or live) and the scopes on the consent screen. The access token (hm_oat_...) works on every /api/v1 route, not only /mcp; refresh it with the refresh token. The user can revoke a connection in the portal under Koppelingen.
      flows:
        authorizationCode:
          authorizationUrl: https://app.hypamoon.com/oauth/authorize
          tokenUrl: https://api.hypamoon.com/oauth/token
          refreshUrl: https://api.hypamoon.com/oauth/token
          scopes:
            project:read: 'Read the project: its name, whether it is in test mode or live, and what still needs to be done'
            project:write: Fill in the project's company or personal details, manage agents and request secrets for other services
            numbers:read: Read the numbers and their call plans
            calls:read: Read calls, with transcript and summary
            numbers:write: Order numbers and change call plans
            assistant:write: Configure the voice AI assistant
            webhooks:write: Create, test and delete webhooks
            messages:read: Read the text messages and emails the project sent, with their status
            messages:write: Send text messages (SMS) and emails on behalf of the project
            calls:write: Let the assistant call people on behalf of the project
            chat:read: Read the chat conversations with the assistant, with messages and summary
            chat:write: Start chat conversations with the assistant and send customer messages
            sites:read: Read the project's sites, apps and domains
            sites:write: Publish sites and apps on <slug>.hypamoon.app, change and delete them, and manage domains
            data:read: Read the project's collections and their documents, and the business processes (brain)
            data:write: Create, change and delete collections and their documents, and the business processes (brain)
            clients:read: 'As an agency: list your client projects, read their usage and activity, and read inside a client project with the Hypamoon-Project header'
            clients:write: 'As an agency: set up client projects, ask clients for access, invite owners, and build inside a client project with the Hypamoon-Project header'
x-hypamoon-error-docs: https://hypamoon.com/docs/errors/
x-hypamoon-error-types:
- slug: bad_request
  status:
  - 400
  type: https://hypamoon.com/docs/errors/bad_request
- slug: unauthorized
  status:
  - 401
  type: https://hypamoon.com/docs/errors/unauthorized
- slug: payment_required
  status:
  - 402
  type: https://hypamoon.com/docs/errors/payment_required
- slug: forbidden
  status:
  - 403
  type: https://hypamoon.com/docs/errors/forbidden
- slug: not_found
  status:
  - 404
  type: https://hypamoon.com/docs/errors/not_found
- slug: method_not_allowed
  status:
  - 405
  type: https://hypamoon.com/docs/errors/method_not_allowed
- slug: conflict
  status:
  - 409
  type: https://hypamoon.com/docs/errors/conflict
- slug: version_conflict
  status:
  - 409
  - 412
  type: https://hypamoon.com/docs/errors/version_conflict
- slug: confirmation_required
  status:
  - 409
  type: https://hypamoon.com/docs/errors/confirmation_required
- slug: validation_failed
  status:
  - 422
  type: https://hypamoon.com/docs/errors/validation_failed
- slug: rate_limited
  status:
  - 429
  type: https://hypamoon.com/docs/errors/rate_limited
- slug: internal_error
  status:
  - 500
  type: https://hypamoon.com/docs/errors/internal_error
- slug: upstream_error
  status:
  - 502
  type: https://hypamoon.com/docs/errors/upstream_error
- slug: service_unavailable
  status:
  - 503
  type: https://hypamoon.com/docs/errors/service_unavailable
- slug: invalid_json
  status:
  - 400
  type: https://hypamoon.com/docs/errors/invalid_json
- slug: invalid_parameter
  status:
  - 400
  type: https://hypamoon.com/docs/errors/invalid_parameter
- slug: missing_api_key
  status:
  - 401
  type: https://hypamoon.com/docs/errors/missing_api_key
- slug: invalid_api_key
  status:
  - 401
  type: https://hypamoon.com/docs/errors/invalid_api_key
- slug: api_key_revoked
  status:
  - 401
  type: https://hypamoon.com/docs/errors/api_key_revoked
- slug: api_key_expired
  status:
  - 401
  type: https://hypamoon.com/docs/errors/api_key_expired
- slug: project_deleted
  status:
  - 401
  type: https://hypamoon.com/docs/errors/project_deleted
- slug: project_not_enabled
  status:
  - 403
  type: https://hypamoon.com/docs/errors/project_not_enabled
- slug: missing_scope
  status:
  - 403
  type: https://hypamoon.com/docs/errors/missing_scope
- slug: ip_not_allowed
  status:
  - 403
  type: https://hypamoon.com/docs/errors/ip_not_allowed
- slug: invalid_chat_token
  status:
  - 401
  type: https://hypamoon.com/docs/errors/invalid_chat_token
- slug: chat_token_revoked
  status:
  - 401
  - 409
  type: https://hypamoon.com/docs/errors/chat_token_revoked
- slug: origin_not_allowed
  status:
  - 403
  type: https://hypamoon.com/docs/errors/origin_not_allowed
- slug: turnstile_failed
  status:
  - 403
  type: https://hypamoon.com/docs/errors/turnstile_failed
- slug: invalid_conversation_token
  status:
  - 401
  type: https://hypamoon.com/docs/errors/invalid_conversation_token
- slug: public_chat_limit_reached
  status:
  - 429
  type: https://hypamoon.com/docs/errors/public_chat_limit_reached
- slug: chat_unavailable
  status:
  - 503
  type: https://hypamoon.com/docs/errors/chat_unavailable
- slug: vat_number_invalid
  status:
  - 422
  type: https://hypamoon.com/docs/errors/vat_number_invalid
- slug: country_not_supported
  status:
  - 422
  type: https://hypamoon.com/docs/errors/country_not_supported
- slug: key_mode_mismatch
  status:
  - 403
  type: https://hypamoon.com/docs/errors/key_mode_mismatch
- slug: test_key_required
  status:
  - 403
  type: https://hypamoon.com/docs/errors/test_key_required
- slug: test_number_limit_reached
  status:
  - 422
  type: https://hypamoon.com/docs/errors/test_number_limit_reached
- slug: company_details_missing
  status:
  - 422
  type: https://hypamoon.com/docs/errors/company_details_missing
- slug: business_required
  status:
  - 422
  type: https://hypamoon.com/docs/errors/business_required
- slug: account_type_change_blocked
  status:
  - 422
  type: https://hypamoon.com/docs/errors/account_type_change_blocked
- slug: spend_cap_missing
  status:
  - 422
  type: https://hypamoon.com/docs/errors/spend_cap_missing
- slug: payment_mandate_missing
  status:
  - 402
  type: https://hypamoon.com/docs/errors/payment_mandate_missing
- slug: billing_blocked
  status:
  - 402
  type: https://hypamoon.com/docs/errors/billing_blocked
- slug: insufficient_balance
  status:
  - 402
  type: https://hypamoon.com/docs/errors/insufficient_balance
- slug: regulatory_documents_missing
  status:
  - 422
  type: https://hypamoon.com/docs/errors/regulatory_documents_missing
- slug: verification_required
  status:
  - 403
  type: https://hypamoon.com/docs/errors/verification_required
- slug: number_unavailable
  status:
  - 409
  type: https://hypamoon.com/docs/errors/number_unavailable
- slug: number_already_yours
  status:
  - 409
  type: https://hypamoon.com/docs/errors/number_already_yours
- slug: no_numbers_available
  status:
  - 422
  type: https://hypamoon.com/docs/errors/no_numbers_available
- slug: number_limit_reached
  status:
  - 403
  type: https://hypamoon.com/docs/errors/number_limit_reached
- slug: order_status_unknown
  status:
  - 502
  type: https://hypamoon.com/docs/errors/order_status_unknown
- slug: number_release_not_supported
  status:
  - 409
  type: https://hypamoon.com/docs/errors/number_release_not_supported
- slug: telephony_unavailable
  status:
  - 503
  type: https://hypamoon.com/docs/errors/telephony_unavailable
- slug: idempotency_key_missing
  status:
  - 400
  type: https://hypamoon.com/docs/errors/idempotency_key_missing
- slug: idempotency_key_invalid
  status:
  - 400
  type: https://hypamoon.com/docs/errors/idempotency_key_invalid
- slug: idempotency_key_reused
  status:
  - 409
  type: https://hypamoon.com/docs/errors/idempotency_key_reused
- slug: idempotency_request_in_progress
  status:
  - 409
  type: https://hypamoon.com/docs/errors/idempotency_request_in_progress
- slug: assistant_not_configured
  status:
  - 422
  type: https://hypamoon.com/docs/errors/assistant_not_configured
- slug: voice_ai_not_enabled
  status:
  - 402
  type: https://hypamoon.com/docs/errors/voice_ai_not_enabled
- slug: team_targets_not_allowed
  status:
  - 422
  type: https://hypamoon.com/docs/errors/team_targets_not_allowed
- slug: forward_target_not_allowed
  status:
  - 422
  type: https://hypamoon.com/docs/errors/forward_target_not_allowed
- slug: invalid_webhook_endpoint
  status:
  - 400
  type: https://hypamoon.com/docs/errors/invalid_webhook_endpoint
- slug: webhook_limit_reached
  status:
  - 409
  type: https://hypamoon.com/docs/errors/webhook_limit_reached
- slug: webhook_endpoint_disabled
  status:
  - 409
  type: https://hypamoon.com/docs/errors/webhook_endpoint_disabled
- slug: destination_not_allowed
  status:
  - 422
  type: https://hypamoon.com/docs/errors/destination_not_allowed
- slug: message_too_long
  status:
  - 422
  type: https://hypamoon.com/docs/errors/message_too_long
- slug: sender_not_allowed
  status:
  - 422
  type: https://hypamoon.com/docs/errors/sender_not_allowed
- slug: message_limit_reached
  status:
  - 429
  type: https://hypamoon.com/docs/errors/message_limit_reached
- slug: number_required
  status:
  - 422
  type: https://hypamoon.com/docs/errors/number_required
- slug: outside_calling_hours
  status:
  - 422
  type: https://hypamoon.com/docs/errors/outside_calling_hours
- slug: concurrent_call_limit
  status:
  - 429
  type: https://hypamoon.com/docs/errors/concurrent_call_limit
- slug: call_limit_reached
  status:
  - 429
  type: https://hypamoon.com/docs/errors/call_limit_reached
- slug: consent_required
  status:
  - 403
  type: https://hypamoon.com/docs/errors/consent_required
- slug: conversation_closed
  status:
  - 409
  type: https://hypamoon.com/docs/errors/conversation_closed
- slug: conversation_busy
  status:
  - 409
  type: https://hypamoon.com/docs/errors/conversation_busy
- slug: conversation_turn_limit_reached
  status:
  - 409
  type: https://hypamoon.com/docs/errors/conversation_turn_limit_reached
- slug: conversation_limit_reached
  status:
  - 429
  type: https://hypamoon.com/docs/errors/conversation_limit_reached
- slug: test_free_replies_used
  status:
  - 402
  type: https://hypamoon.com/docs/errors/test_free_replies_used
- slug: test_free_calls_used
  status:
  - 402
  type: https://hypamoon.com/docs/errors/test_free_calls_used
- slug: site_limit_reached
  status:
  - 429
  - 422
  type: https://hypamoon.com/docs/errors/site_limit_reached
- slug: slug_taken
  status:
  - 409
  type: https://hypamoon.com/docs/errors/slug_taken
- slug: slug_reserved
  status:
  - 422
  type: https://hypamoon.com/docs/errors/slug_reserved
- slug: site_too_large
  status:
  - 422
  type: https://hypamoon.com/docs/errors/site_too_large
- slug: site_blocked
  status:
  - 422
  type: https://hypamoon.com/docs/errors/site_blocked
- slug: site_offline
  status:
  - 403
  type: https://hypamoon.com/docs/errors/site_offline
- slug: deploy_limit_reached
  status:
  - 429
  type: https://hypamoon.com/docs/errors/deploy_limit_reached
- slug: upload_not_received
  status:
  - 422
  type: https://hypamoon.com/docs/errors/upload_not_received
- slug: phone_verification_required
  status:
  - 403
  type: https://hypamoon.com/docs/errors/phone_verification_required
- slug: collection_limit_reached
  status:
  - 422
  type: https://hypamoon.com/docs/errors/collection_limit_reached
- slug: collection_name_taken
  status:
  - 409
  type: https://hypamoon.com/docs/errors/collection_name_taken
- slug: document_limit_reached
  status:
  - 422
  type: https://hypamoon.com/docs/errors/document_limit_reached
- slug: document_too_large
  status:
  - 422
  type: https://hypamoon.com/docs/errors/document_too_large
- slug: schema_mismatch
  status:
  - 422
  type: https://hypamoon.com/docs/errors/schema_mismatch
- slug: collection_not_public
  status:
  - 403
  type: https://hypamoon.com/docs/errors/collection_not_public
- slug: plan_limit_reached
  status:
  - 402
  - 409
  type: https://hypamoon.com/docs/errors/plan_limit_reached
- slug: app_blocked
  status:
  - 422
  type: https://hypamoon.com/docs/errors/app_blocked
- slug: app_too_large
  status:
  - 413
  type: https://hypamoon.com/docs/errors/app_too_large
- slug: migration_failed
  status:
  - 422
  type: https://hypamoon.com/docs/errors/migration_failed
- slug: build_failed
  status:
  - 422
  type: https://hypamoon.com/docs/errors/build_failed
- slug: container_unhealthy
  status:
  - 503
  type: https://hypamoon.com/docs/errors/container_unhealthy
- slug: container_suspended
  status:
  - 409
  type: https://hypamoon.com/docs/errors/container_suspended
- slug: database_waking
  status:
  - 503
  type: https://hypamoon.com/docs/errors/database_waking
- slug: database_paused
  status:
  - 402
  type: https://hypamoon.com/docs/errors/database_paused
- slug: database_limit_reached
  status:
  - 422
  type: https://hypamoon.com/docs/errors/database_limit_reached
- slug: file_too_large
  status:
  - 413
  type: https://hypamoon.com/docs/errors/file_too_large
- slug: query_failed
  status:
  - 422
  type: https://hypamoon.com/docs/errors/query_failed
- slug: mail_not_enabled
  status:
  - 403
  type: https://hypamoon.com/docs/errors/mail_not_enabled
- slug: email_paused
  status:
  - 403
  type: https://hypamoon.com/docs/errors/email_paused
- slug: recipient_not_allowed
  status:
  - 403
  type: https://hypamoon.com/docs/errors/recipient_not_allowed
- slug: email_limit_reached
  status:
  - 429
  type: https://hypamoon.com/docs/errors/email_limit_reached
- slug: email_blocked
  status:
  - 422
  type: https://hypamoon.com/docs/errors/email_blocked
- slug: email_domain_not_verified
  status:
  - 409
  type: https://hypamoon.com/docs/errors/email_domain_not_verified
- slug: attachment_too_large
  status:
  - 413
  type: https://hypamoon.com/docs/errors/attachment_too_large
- slug: attachment_not_allowed
  status:
  - 422
  type: https://hypamoon.com/docs/errors/attachment_not_allowed
- slug: email_address_invalid
  status:
  - 422
  type: https://hypamoon.com/docs/errors/email_address_invalid
- slug: bimi_not_ready
  status:
  - 409
  type: https://hypamoon.com/docs/errors/bimi_not_ready
- slug: dedicated_ip_not_available
  status:
  - 403
  type: https://hypamoon.com/docs/errors/dedicated_ip_not_available
- slug: ai_credit_exhausted
  status:
  - 402
  type: https://hypamoon.com/docs/errors/ai_credit_exhausted
- slug: ai_limit_reached
  status:
  - 429
  type: https://hypamoon.com/docs/errors/ai_limit_reached
- slug: ai_not_enabled
  status:
  - 403
  type: https://hypamoon.com/docs/errors/ai_not_enabled
- slug: access_denied
  status:
  - 403
  type: https://hypamoon.com/docs/errors/access_denied
- slug: approval_required
  status:
  - 202
  type: https://hypamoon.com/docs/errors/approval_required
- slug: approval_pending
  status:
  - 202
  type: https://hypamoon.com/docs/errors/approval_pending
- slug: adapters_paused
  status:
  - 423
  type: https://hypamoon.com/docs/errors/adapters_paused
- slug: adapter_error
  status:
  - 502
  type: https://hypamoon.com/docs/errors/adapter_error
- slug: adapter_timeout
  status:
  - 504
  type: https://hypamoon.com/docs/errors/adapter_timeout
- slug: migration_paused
  status:
  - 409
  type: https://hypamoon.com/docs/errors/migration_paused
- slug: rule_blocked
  status:
  - 422
  type: https://hypamoon.com/docs/errors/rule_blocked
x-hypamoon-pricing:
  version: v3
  set_on: '2026-10-27'
  currency: EUR
  vat: excluded
  plans:
  - code: free
    name: Free
    month_eur: 0
    year_eur: 0
    summary: Your idea live and shareable on yourname.hypamoon.app, or on your own domain. No card, no end date.
    for_who: Anyone with an idea
    replaces: Replaces a free site builder.
    typical_total_month_eur: null
    included: Phone and payments run in test mode.
    technical:
    - 1 project with 1 site and 1 app, with the Hypamoon badge
    - Forms and data for a small site
    - 1 team member
    self_service: true
    features:
    - 1 project with 1 site and 1 app on yourname.hypamoon.app, with the Hypamoon badge
    - Up to 100,000 site requests a month; above that your sites pause until the next month
    - Connect your own domain for free
    - Watch up to 3 domains for hijacking, spam and expiry
    - 10 MB of data and 100 MB of files
    - Version history and rollback for your sites, 30 days
    - Phone and payments in test mode
    - 1 team member
    - 100 sign-in emails a month for the users of your apps
    - 50 cents of AI usage a month included, for the portal assistant and chat
    included_per_month:
      request: 100000
      seat_month: 1
      ai: 0.5
    sign_in_emails_per_month: 100
    apps:
      included: 1
      max_per_project: 1
      extra_billed: false
      new_per_day: 3


# --- truncated at 32 KB (42 KB total) ---
# Full source: https://artifacts.apis.io/hypamoon-com/openapi/hypamoon-com-mcp-api-openapi.yml