Hypamoon Meta API

About the API itself.

GitHub OpenAPI

Operations 4

GET /openapi.json This OpenAPI document #
GET /status Check whether Hypamoon is working #
GET /recipes List the recipes #
GET /recipes/{id} Get a recipe #

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-meta-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-meta-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Hypamoon Meta 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: Meta
  description: About the API itself.
paths:
  /openapi.json:
    get:
      operationId: getOpenApi
      tags:
      - Meta
      summary: This OpenAPI document
      description: 'The OpenAPI 3.1 document of the API. Public: no key needed.'
      security: []
      responses:
        '200':
          description: The OpenAPI document.
          content:
            application/json:
              schema:
                type: object
                description: An OpenAPI 3.1 document.
  /status:
    get:
      operationId: getStatus
      tags:
      - Meta
      summary: Check whether Hypamoon is working
      description: 'Whether Hypamoon is working, per component (sites, API, portal, phone, voice AI, email, payments), and any reported problem that is not resolved yet. From the public status page (https://status.hypamoon.com); when that page does not answer, a minimal check of our own. Use it when a step fails and you wonder whether Hypamoon is down: a blocked upload_url or a network error from your own environment is not an outage. user_message is a sentence for the user. Public: no key needed.'
      security: []
      responses:
        '200':
          description: The status.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
              example:
                status: operational
                source: status_page
                components:
                - id: sites
                  name: Sites and apps
                  status: operational
                - id: api
                  name: API and chat connection
                  status: operational
                - id: portal
                  name: Portal
                  status: operational
                - id: phone
                  name: Phone
                  status: operational
                - id: ai
                  name: Voice AI
                  status: operational
                - id: mail
                  name: Email
                  status: operational
                - id: payments
                  name: Payments
                  status: operational
                incidents: []
                status_page: https://status.hypamoon.com
                checked_at: '2026-10-01T09:00:00.000Z'
                user_message: Hypamoon is working normally. The problem is likely in your chat app.
                next_step: If a step failed, read its error and user_message.
  /recipes:
    get:
      operationId: listRecipes
      tags:
      - Meta
      summary: List the recipes
      description: 'The recipes a chat builds in one go from one short sentence, like "Build the Hypamoon recipe coffee-quiz": slug, title, summary, the sentence to type, the page on hypamoon.com and a live example. GET /recipes/{slug} gives the full recipe. Public: no key needed.'
      security: []
      responses:
        '200':
          description: The recipes, without the full brief.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeList'
              example:
                data:
                - slug: coffee-quiz
                  title: Find your perfect coffee
                  summary: 'A Typeform-style product quiz: one question at a time, pictures to tap, a personal coffee at the end and a working Order button.'
                  say: Build the Hypamoon recipe coffee-quiz
                  page: https://hypamoon.com/r/coffee-quiz
                  demo: https://coffee.hypamoon.app
                - slug: build-an-adapter
                  title: Build an adapter for your system
                  summary: 'Your chat writes the link to any system with a REST API, and Hypamoon runs it: the key in a vault, only the hosts you allow, rights per action that you click, every call logged.'
                  say: 'Build the Hypamoon recipe build-an-adapter for [system]. API docs: [link]. Read: [what]. Write: [what, or nothing].'
                  page: https://hypamoon.com/r/build-an-adapter
                - slug: marketplace
                  title: A marketplace with several sellers
                  summary: Sellers with their own products, one checkout over several sellers, your commission, and payouts per seller through your own Stripe account, tested end to end.
                  say: Build the Hypamoon recipe marketplace
                  page: https://hypamoon.com/r/marketplace
                - slug: car-dealer
                  title: A car dealer with its own workshop
                  summary: The cars in stock, a page per car, test drives and workshop bookings, and the live status of your car, readable by people, agents, AI search and classifieds sites from one source.
                  say: Build the Hypamoon recipe car-dealer
                  page: https://hypamoon.com/r/car-dealer
                  demo: https://car-dealer.hypamoon.app
                - slug: inbox-agent
                  title: Give your agent an inbox
                  summary: support@ on your own domain (support@in.<domain> when the domain already has a mailbox), with an agent that reads every email, answers the easy questions with answers you approved, and asks you about the rest.
                  say: 'Build the Hypamoon recipe inbox-agent: set up support@ on my domain and let an agent answer the easy questions. Ask me before it promises anything.'
                  page: https://hypamoon.com/r/inbox-agent
                next_step: Call get_recipe (GET /recipes/{slug}) with the slug the user named, then follow its instruction.
  /recipes/{id}:
    get:
      operationId: getRecipe
      tags:
      - Meta
      summary: Get a recipe
      description: 'One recipe in full: the build brief (prompt), the acceptance criteria, the Hypamoon parts and tools it uses, the cost, a live example (for recipes that build a site), and instruction: how to build it, normally in one go without asking questions, with sensible choices, one deploy at the end and the live link. A user asks for one with a short sentence like "Build the Hypamoon recipe coffee-quiz" or "Build hypamoon.com/r/coffee-quiz". Public: no key needed.'
      security: []
      parameters:
      - name: id
        in: path
        required: true
        description: The slug of the recipe.
        schema:
          type: string
          pattern: ^[a-z0-9][a-z0-9-]{0,60}[a-z0-9]$
        example: coffee-quiz
      responses:
        '200':
          description: The recipe.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipe'
              example:
                slug: coffee-quiz
                title: Find your perfect coffee
                summary: 'A Typeform-style product quiz: one question at a time, pictures to tap, a personal coffee at the end and a working Order button.'
                say: Build the Hypamoon recipe coffee-quiz
                page: https://hypamoon.com/r/coffee-quiz
                demo: https://coffee.hypamoon.app
                instruction: 'Build this in one go without asking questions; make sensible choices; deploy once at the end; give the live link. The user already chose by asking for this recipe: do not ask about the name, the address, the style, the email or the payment provider, and do not call get_advice. Follow prompt and steps, check acceptance yourself (fetch_site_page on the live url), then reply with the live link and two or three short lines about what works and what is a test (the checkout is a test payment while payments are in test mode).'
                prompt: 'Build a coffee quiz with Hypamoon and put it live: "Find your perfect coffee" for a small roastery (no brand name). Don''t ask me anything; make sensible choices.


                  Make it feel like a finished Typeform: one question per screen, vertically centred, dark and calm, perfect on a phone.


                  Look: background #0F1115, cards #181B22, text #F2F1EE, muted #A9ADB6, lines #2C313C, accent #F2B544 with dark text on it. System font, bold headings (title about 52px, questions 30px), 16px rounded cards, 12px rounded buttons. A thin accent progress bar on top, "Question 2 of 5" top right, a back arrow top left. Steps slide up going forward and down going back, no fades.


                  Keyboard: Enter continues, A to D picks, 1 to 5 on the scale, arrow up goes back. Show the letter on every answer, and focus the question, never the first answer.


                  Steps: intro with Start; first name (big underlined input, then use the name); how they drink it (4 picture cards, 2 by 2 on a phone, 4 in a row on desktop: espresso, cappuccino or latte, filter, iced); a follow-up for that answer (their machine, their brewer, or how they take it cold); flavour (4 picture cards: fruity, chocolate and nuts, caramel, dark and intense); strength 1 to 5; email; result.


                  Pictures: copy these to the site with source_url from https://hypamoon.com/kit/coffee/ : espresso, milk, filter, iced, fruity, chocolate, caramel, intense, bag-sunrise, bag-cocoa, bag-caramel, bag-nightshift (.svg).


                  Result: "Sam, meet Night Shift Espresso", the bag in a square panel, tasting notes in accent, one sentence why it fits that mentions how they brew, the price and "Order this". Roasts: Sunrise Ethiopia 13.50, Cocoa Brazil 11.50, Caramel Colombia 12.50, Night Shift Espresso 12.50 euros, picked by flavour; strong espresso or milk drinkers get Night Shift.


                  Save every response in a collection with the bot check and email me each one. The roasts are products; "Order this" checks out for real with Hypamoon in test mode, with a small line "Demo checkout: a test payment, no money moves."


                  Check your code, deploy once, give me the link.'
                acceptance:
                - The site is live on its own link and opens without an account.
                - One question per screen with a progress bar; Enter, A to D, 1 to 5 and arrow up work.
                - The first name appears in the later questions.
                - The follow-up question changes with the answer to question 2; only the chosen branch is sent.
                - The end screen shows one of the 4 roasts with its bag, notes, a reason and the price, in the dark design of the recipe.
                - Order this opens the checkout for the recommended roast.
                - A response lands in coffee_quiz_responses and the owner gets an email.
                - No horizontal scroll at 375 px; no console errors.
                you_get:
                - Five questions, one per screen, with your first name in the questions that follow, in a dark, calm design
                - Picture choices, one question that depends on your answer, and a strength scale
                - A personal recommendation with its picture, why it fits and the price
                - An Order this button that goes through the real checkout (a test payment while payments are in test mode)
                - Every response saved with a bot check, and an email to the owner for each new one
                - Works with the keyboard and on a phone
                parts:
                - part: Site
                  why: The quiz on its own link, live in seconds.
                - part: Collection with a form
                  why: Every response saved with a bot check and limits.
                - part: Email on each response
                  why: The owner hears about every new answer.
                - part: Products and checkout
                  why: The Order button sells the recommended roast.
                tools:
                - get_recipe
                - list_collections
                - create_collection
                - insert_document
                - deploy_site
                - fetch_site_page
                cost:
                  headline: 0 euros a month on Hypamoon Free
                  details:
                  - Up to 10,000 responses per form and 50 email notifications a day.
                  - The checkout is a test payment until you turn on payments; real sales pay the usual payment fees.
                  - On Free the site shows a small Hypamoon badge.
        '404':
          description: 'Not Found: not_found.'
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          x-hypamoon-errors:
          - not_found
          content:
            application/problem+json:
              schema:
                allOf:
                - $ref: '#/components/schemas/Problem'
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                      - https://hypamoon.com/docs/errors/not_found
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).
    Status:
      type: object
      properties:
        status:
          type: string
          enum:
          - operational
          - degraded
          - down
          - unknown
          description: 'The overall status: the worst of the components (unknown does not count).'
        source:
          type: string
          enum:
          - status_page
          - self_check
          description: 'status_page: from status.hypamoon.com. self_check: that page did not answer, so only a minimal check of our own.'
        components:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
              status:
                type: string
                enum:
                - operational
                - degraded
                - down
                - unknown
            required:
            - id
            - name
            - status
            additionalProperties: false
          description: 'Per component: sites, api, portal, phone, ai, mail, payments.'
        incidents:
          type: array
          items:
            type: object
            properties:
              component:
                type: string
              severity:
                type: string
              started_at:
                type: string
              latest_update:
                type:
                - string
                - 'null'
            required:
            - component
            - severity
            - started_at
            - latest_update
            additionalProperties: false
          description: Reported problems that are not resolved yet.
        status_page:
          type: string
          description: The public status page.
        checked_at:
          type: string
          description: When the status was measured.
        user_message:
          type: string
          description: One calm sentence for the user, like "Hypamoon is working normally. The problem is likely in your chat app."
        next_step:
          type: string
          description: What the chat or agent should do next.
      required:
      - status
      - source
      - components
      - incidents
      - status_page
      - checked_at
      - user_message
      - next_step
      additionalProperties: false
      description: Whether Hypamoon is working, per component.
    RecipeList:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              slug:
                type: string
              title:
                type: string
              summary:
                type: string
              say:
                type: string
                description: The short sentence a user types, like Build the Hypamoon recipe coffee-quiz.
              page:
                type: string
                description: The recipe page on hypamoon.com.
              demo:
                type: string
                description: A live example of the result, for recipes that build a site.
            required:
            - slug
            - title
            - summary
            - say
            - page
        next_step:
          type: string
      required:
      - data
      - next_step
    Recipe:
      type: object
      properties:
        slug:
          type: string
        title:
          type: string
        summary:
          type: string
        say:
          type: string
          description: The short sentence a user types, like Build the Hypamoon recipe coffee-quiz.
        page:
          type: string
          description: The recipe page on hypamoon.com.
        demo:
          type: string
          description: A live example of the result, for recipes that build a site.
        instruction:
          type: string
          description: 'How to build it: in one go, without questions, one deploy, then the live link. Follow it.'
        prompt:
          type: string
          description: The full build brief.
        acceptance:
          type: array
          items:
            type: string
          description: Check these yourself before you give the link.
        you_get:
          type: array
          items:
            type: string
        parts:
          type: array
          items:
            type: object
            properties:
              part:
                type: string
              why:
                type: string
            required:
            - part
            - why
        tools:
          type: array
          items:
            type: string
        cost:
          type: object
          properties:
            headline:
              type: string
            details:
              type: array
              items:
                type: string
          required:
          - headline
          - details
        needs:
          type: array
          items:
            type: object
            properties:
              what:
                type: string
              text:
                type: string
            required:
            - what
            - text
          description: What the user needs before starting.
        examples:
          type: array
          items:
            type: object
            properties:
              title:
                type: string
              text:
                type: string
            required:
            - title
            - text
          description: Worked examples.
      required:
      - slug
      - title
      - summary
      - say
      - page
      - instruction
      - prompt
      - acceptance
      - you_get
      - parts
      - tools
      - cost
    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
  headers:
    X-Request-Id:
      schema:
        type: string
      description: The id of this request. Include it when you contact support.
  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:


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