Helipod core API

Helipod core API as documented publicly: 10 operations. Contract generated from the documentation by API Evangelist (2026-11-11); not the provider's own document.

GitHub OpenAPI

Operations 10

GET / GET / #
GET /api/account/wallet GET /api/account/wallet #
GET /api/containers/projects GET /api/containers/projects #
GET /api/databases GET /api/databases #
POST /api/databases POST /api/databases #
POST /api/domains/mine POST /api/domains/mine #
POST /api/email/jobs/eml_8f21c0a94d7b4c2e9a1f POST /api/email/jobs/eml_8f21c0a94d7b4c2e9a1f #
POST /api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/renew POST /api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/renew #
POST /api/ai/overview POST /api/ai/overview #
POST /v1/chat/completions POST /v1/chat/completions #

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/helipod-io:core-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

helipod-io-core-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Helipod core API
  version: '2026-11-11'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-11: 10 operation(s) read from 10 public documentation page(s) (each
    operation names its page in x-source). This is not the provider''s published contract; Helipod has published no machine-readable contract
    that the pipeline could find. Engine: anthropic.'
  x-evidence-tiers:
    code-example: 37
    documentation: 0
    pages-with-code: 38
    pages-read: 40
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-11'
  x-generator: generate-contract-from-docs.py
  x-engine: anthropic
  x-sources:
  - https://docs.helipod.io/docs/account-api
  - https://docs.helipod.io/docs/ai-gateway/management-api
  - https://docs.helipod.io/docs/container-api
  - https://docs.helipod.io/docs/database-api
  - https://docs.helipod.io/docs/database-api/branches
  - https://docs.helipod.io/docs/domain-api
  - https://docs.helipod.io/docs/email-api
  - https://docs.helipod.io/docs/guides/ai-gateway-quickstart
  - https://docs.helipod.io/docs/helipod/mcp-tools
  - https://docs.helipod.io/docs/vps-api
  x-docs-section: core
servers:
- url: https://api.helipod.io
paths:
  /:
    get:
      operationId: get
      tags:
      - Api
      summary: GET /
      x-source: https://docs.helipod.io/docs/helipod/mcp-tools
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl ... | sudo bash) that works ONCE and expires in 1 hour: give it to the user to run as root on the OLD server; never run\
          \ it yourself and do not store it. Pass sourceIp (the old server's public IP, e.g. from curl -4 ifconfig.me there) so the command only\
          \ works from that server; recommended. Then follow it with get_vps_migration: waiting → uploading → inspecting → uploaded. \n Parameter\
          \ Type Requ"
  /api/account/wallet:
    get:
      operationId: get_api_account_wallet
      tags:
      - Api
      summary: GET /api/account/wallet
      x-source: https://docs.helipod.io/docs/account-api
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl https://api.helipod.io/api/account/wallet  -H \"Authorization: Bearer hel_your_key\" \n Whole account or one project Copy\
          \ Anchor Link \n Money and support belong to your account, not to a project. What a key reaches depends on how it was created: \n Route\
          \ Whole-account key Key limited to one project Wallet, transactions, deposits, invoices, statements Yes 403 ACCOUNT_KEY_REQUIRED Support\
          \ tickets Y"
  /api/containers/projects:
    get:
      operationId: get_api_containers_projects
      tags:
      - Api
      summary: GET /api/containers/projects
      x-source: https://docs.helipod.io/docs/container-api
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl https://api.helipod.io/api/containers/projects  -H \"Authorization: Bearer hel_your_key\" \n How it is organised Copy Anchor\
          \ Link \n Copy Text project \n └── environment (production, staging, ...) \n └── service ── deployments, variables, domains, scale,\
          \ volumes, logs, metrics \n A project is what you see in the dashboard sidebar. A key with project access sees one project; a whole-account\
          \ key sees "
  /api/databases:
    get:
      operationId: get_api_databases
      tags:
      - Api
      summary: GET /api/databases
      x-source: https://docs.helipod.io/docs/database-api
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl https://api.helipod.io/api/databases  -H \"Authorization: Bearer hel_your_key\" \n How it is organised Copy Anchor Link\
          \ \n Copy Text project \n └── database (one per project, serverless Postgres) \n └── branch per environment (production is the primary,\
          \ staging, ...) \n Each project can have one database. It starts on the free plan. \n Each environment of the project can have its own\
          \ branch : a full "
    post:
      operationId: post_api_databases
      tags:
      - Api
      summary: POST /api/databases
      x-source: https://docs.helipod.io/docs/database-api/branches
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiDatabasesResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.helipod.io/api/databases/ $DB /branches  -H \"Authorization: Bearer hel_your_key\" -H \"Content-Type:\
          \ application/json\"  -d \"{ \\\" environmentId \\\" : \\\" $STAGING \\\" }\" \n If the environment already has a branch, it is returned\
          \ unchanged. To start staging again from fresh production data, delete its branch and create it again. \n Delete Copy Anchor Link \n\
          \ DELETE /databases/{datab"
  /api/domains/mine:
    post:
      operationId: post_api_domains_mine
      tags:
      - Api
      summary: POST /api/domains/mine
      x-source: https://docs.helipod.io/docs/domain-api
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiDomainsMineRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiDomainsMineResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl https://api.helipod.io/api/domains/mine  -H \"Authorization: Bearer hel_your_key\" \n Domains belong to your account ,\
          \ not to a project, so the key must: \n have the Domain API product enabled, and \n not be limited to one project. \n To create one,\
          \ open the dashboard, go to Project → Settings → API keys , choose Whole account access and enable Domain API . Copy the key when it\
          \ is shown: it starts "
  /api/email/jobs/eml_8f21c0a94d7b4c2e9a1f:
    post:
      operationId: post_api_email_jobs_eml_8f21c0a94d7b4c2e9a1f
      tags:
      - Api
      summary: POST /api/email/jobs/eml_8f21c0a94d7b4c2e9a1f
      x-source: https://docs.helipod.io/docs/email-api
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiEmailJobsEml8F21C0A94D7B4C2E9A1FRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiEmailJobsEml8F21C0A94D7B4C2E9A1FResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl https://mail.helipod.io/api/email/jobs/eml_8f21c0a94d7b4c2e9a1f  -H \"Authorization: Bearer your_email_api_key\" \n Copy\
          \ Text { \n \"success\" : true , \n \"data\" : { \n \"jobId\" : \"eml_8f21c0a94d7b4c2e9a1f\" , \n \"type\" : \"verify_domain\" , \n\
          \ \"status\" : \"completed\" , \n \"result\" : { }, \n \"errorMessage\" : null , \n \"attempts\" : 1 , \n \"createdAt\" : \"2026-10-16T09:14:03.221Z\"\
          \ , \n \"startedAt\" : \"2026-10-16T09:"
  /api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/renew:
    post:
      operationId: post_api_vps_1f757fd5_98d1_490a_81a0_58b5798a5815_renew
      tags:
      - Api
      summary: POST /api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/renew
      x-source: https://docs.helipod.io/docs/vps-api
      parameters:
      - name: dryRun
        in: query
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiVps1F757Fd598D1490A81A058B5798A5815RenewRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST \"https://api.helipod.io/api/vps/1f757fd5-98d1-490a-81a0-58b5798a5815/renew?dryRun=true\"  -H \"Authorization:\
          \ Bearer hel_your_key\"  -H \"Content-Type: application/json\"  -d '{ \"billingPeriod\": \"monthly\" }' \n Copy Text { \n \"success\"\
          \ : true , \n \"data\" : { \n \"dryRun\" : true , \n \"price\" : 64900 , \n \"currency\" : \"IDR\" , \n \"billingPeriod\" : \"monthly\"\
          \ , \n \"months\" : 1 , \n \"currentExpiresAt\" : \""
  /api/ai/overview:
    post:
      operationId: post_api_ai_overview
      tags:
      - Api
      summary: POST /api/ai/overview
      x-source: https://docs.helipod.io/docs/ai-gateway/management-api
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiAiOverviewRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl https://api.helipod.io/api/ai/overview  -H \"Authorization: Bearer hel_your_key\" \n Whole account or one project Copy\
          \ Anchor Link \n The AI balance and the wallet belong to your account, so the overview, top-ups and auto top-up need a whole-account\
          \ key ( 403 ACCOUNT_KEY_REQUIRED otherwise). Usage, metrics and the key list work with both: a key limited to one project sees that\
          \ project only, and a"
  /v1/chat/completions:
    post:
      operationId: post_v1_chat_completions
      tags:
      - Chat
      summary: POST /v1/chat/completions
      x-source: https://docs.helipod.io/docs/guides/ai-gateway-quickstart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1ChatCompletionsRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl OpenAI (Node) OpenAI (Python) Anthropic (Node) Copy Text curl https://ai.helipod.io/v1/chat/completions  -H \"Authorization:\
          \ Bearer $HELIPOD_AI_KEY \"  -H \"Content-Type: application/json\"  -d '{ \n \"model\": \"deepseek-v4.1-flash\", \n \"messages\": [{\
          \ \"role\": \"user\", \"content\": \"Hello!\" }] \n }' \n Call the gateway from your server, never from a browser or mobile app, so\
          \ the key stays secret. Many mode"
security:
- bearer: []
components:
  schemas:
    PostApiAiOverviewRequest:
      type: object
      properties:
        amount:
          type: integer
    PostApiDatabasesResponse:
      type: object
      properties:
        deleted:
          type: boolean
        environmentId:
          type: string
    PostApiDomainsMineRequest:
      type: object
      properties:
        name:
          type: string
        period:
          type: integer
    PostApiDomainsMineResponse:
      type: object
      properties:
        success:
          type: boolean
        data:
          type: object
          properties:
            ? ''
            : type: string
    PostApiEmailJobsEml8F21C0A94D7B4C2E9A1FRequest:
      type: object
      properties:
        domain:
          type: string
    PostApiEmailJobsEml8F21C0A94D7B4C2E9A1FResponse:
      type: object
      properties:
        success:
          type: boolean
        data:
          type: object
          properties:
            data:
              type: array
              items: {}
            nextCursor:
              type: string
              format: date-time
    PostApiVps1F757Fd598D1490A81A058B5798A5815RenewRequest:
      type: object
      properties:
        billingPeriod:
          type: string
    PostV1ChatCompletionsRequest:
      type: object
      properties:
        model:
          type: string
        messages:
          type: array
          items:
            type: object
            properties:
              role:
                type: string
              content:
                type: string
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
tags:
- name: Api
- name: Chat