Hypamoon · Schema

Project

The project behind the API key.

Artificial IntelligenceCollaborationProductivityPlatformLow-Code

Properties

Name Type Description
id string The id of the project.
name string The name of the project. The assistant uses it in its greeting.
edition string Always api for a project of the Hypamoon API.
created_at string When the project was created.
spending_limit_eur numbernull The most the project can spend per month, in euros. Null in test mode: a test project costs nothing. Left out for a key or connection limited to some sites and apps.
numbers_count integer How many numbers the project has. Left out for a limited key or connection.
mode string live or test: the mode of the key, which is always the mode of its project.
live_project_id stringnull Only in test mode: the live project this test project belongs to, or the project itself when it has no separate test project.
rails object Per function with real-world effects, for this request: live (in use) or test (simulated: not used yet, or a test key). A function on test becomes live the first time it is asked for, once the project
verification object The verification (KYC) of the project. In test mode: the verification of the live project.
access objectnull Null: this key or connection can use the whole project. Otherwise only these sites, apps and collections: lists show only those, and anything for the whole project (billing, team, domains, numbers, a
View JSON Schema on GitHub

JSON Schema

hypamoon-com-project-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/hypamoon-com/json-schema/hypamoon-com-project-schema.json",
  "title": "Project",
  "description": "The project behind the API key.",
  "x-generated": "2026-11-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/hypamoon-com-openapi.json#/components/schemas/Project",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "The id of the project."
    },
    "name": {
      "type": "string",
      "description": "The name of the project. The assistant uses it in its greeting."
    },
    "edition": {
      "type": "string",
      "description": "Always api for a project of the Hypamoon API."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "When the project was created."
    },
    "spending_limit_eur": {
      "type": [
        "number",
        "null"
      ],
      "description": "The most the project can spend per month, in euros. Null in test mode: a test project costs nothing. Left out for a key or connection limited to some sites and apps."
    },
    "numbers_count": {
      "type": "integer",
      "description": "How many numbers the project has. Left out for a limited key or connection."
    },
    "mode": {
      "type": "string",
      "enum": [
        "live",
        "test"
      ],
      "description": "live or test: the mode of the key, which is always the mode of its project."
    },
    "live_project_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid",
      "description": "Only in test mode: the live project this test project belongs to, or the project itself when it has no separate test project."
    },
    "rails": {
      "type": "object",
      "properties": {
        "phone": {
          "type": "string",
          "enum": [
            "live",
            "test"
          ],
          "description": "Numbers, the call plan and the voice AI on inbound calls."
        },
        "outbound": {
          "type": "string",
          "enum": [
            "live",
            "test"
          ],
          "description": "Outbound calls (start_call)."
        },
        "sms": {
          "type": "string",
          "enum": [
            "live",
            "test"
          ],
          "description": "SMS messages."
        },
        "email": {
          "type": "string",
          "enum": [
            "live",
            "test"
          ],
          "description": "Email to other people. With a live key, email to the project's own team is real even when this is test."
        },
        "payments": {
          "type": "string",
          "enum": [
            "live",
            "test"
          ],
          "description": "Checkout, orders and refunds: real money or test payments."
        },
        "domains": {
          "type": "string",
          "enum": [
            "live",
            "test"
          ],
          "description": "Buying, renewing and transferring a domain. Connecting a domain is always real."
        }
      },
      "required": [
        "phone",
        "outbound",
        "sms",
        "email",
        "payments",
        "domains"
      ],
      "additionalProperties": false,
      "description": "Per function with real-world effects, for this request: live (in use) or test (simulated: not used yet, or a test key). A function on test becomes live the first time it is asked for, once the project is verified for it; until then the request answers verification_required with a link. A test key is test everywhere. Left out for a limited key or connection. Sites, data and apps are always real and have no mode."
    },
    "verification": {
      "type": "object",
      "properties": {
        "account_type": {
          "type": "string",
          "enum": [
            "personal",
            "business"
          ],
          "description": "personal or business. You are verified for what you use: a personal account needs no business register number, a business does. A national number needs a business."
        },
        "levels": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "level": {
                "type": "string",
                "enum": [
                  "test",
                  "company",
                  "personal",
                  "number_documents",
                  "full"
                ],
                "description": "test, then company (a business) or personal (a personal account), then number_documents and full. Each level unlocks more; see unlocks."
              },
              "status": {
                "type": "string",
                "enum": [
                  "not_started",
                  "submitted",
                  "in_review",
                  "approved",
                  "rejected"
                ],
                "description": "Where this level stands. company, personal and number_documents follow from the data you set; full needs our review."
              },
              "reason": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Only when rejected: what is wrong. Fix it and submit again."
              },
              "missing": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "What is still needed, as codes: company_details.<field> (set with PUT /project/company), payment_mandate, spending_cap, document.proof_of_address, document.identity, document.company_registration (upload in the portal under Verification), level.company or level.personal (finish that level first), level.number_documents, director_identity, ubo_confirmation and review. Empty when approved."
              },
              "unlocks": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "What this level unlocks, as codes: test_keys, test_numbers, simulated_calls, live_keys, live_chat, national_numbers, inbound_calls, geographic_numbers, sms, outbound_calls, spending_cap_above_500_eur, more_concurrent_calls."
              }
            },
            "required": [
              "level",
              "status",
              "reason",
              "missing",
              "unlocks"
            ],
            "additionalProperties": false
          },
          "description": "Always four levels, in order: test, company (personal for a personal account), number_documents, full."
        }
      },
      "required": [
        "account_type",
        "levels"
      ],
      "additionalProperties": false,
      "description": "The verification (KYC) of the project. In test mode: the verification of the live project."
    },
    "access": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "limited_by": {
          "type": "string",
          "enum": [
            "api_key",
            "connection",
            "member"
          ],
          "description": "api_key or connection: an owner or admin limited this key or chat connection in the portal. member: the person behind it is limited in the team."
        },
        "sites": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The id."
              },
              "name": {
                "type": "string",
                "description": "The name."
              }
            },
            "required": [
              "id",
              "name"
            ],
            "additionalProperties": false
          },
          "description": "The sites it can use. The app of a site comes with it."
        },
        "apps": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The id."
              },
              "name": {
                "type": "string",
                "description": "The name."
              }
            },
            "required": [
              "id",
              "name"
            ],
            "additionalProperties": false
          },
          "description": "Apps chosen on their own, next to the apps of the sites."
        },
        "collections": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The id."
              },
              "name": {
                "type": "string",
                "description": "The name."
              }
            },
            "required": [
              "id",
              "name"
            ],
            "additionalProperties": false
          },
          "description": "The collections it can use: the ones the sites and apps use."
        }
      },
      "required": [
        "limited_by",
        "sites",
        "apps",
        "collections"
      ],
      "additionalProperties": false,
      "description": "Null: this key or connection can use the whole project. Otherwise only these sites, apps and collections: lists show only those, and anything for the whole project (billing, team, domains, numbers, a new site or app) is refused with 403 and a user_message."
    }
  },
  "required": [
    "id",
    "name",
    "edition",
    "created_at",
    "mode",
    "access"
  ],
  "additionalProperties": false
}

Work with this as data

Every JSON Schema 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 schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • 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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/hypamoon-com-project"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.