MetaKit
beta
API Reference

Base URL: https://api.metakit.cloud

Billing

A slot is a paid seat; connecting an account occupies one slot of its tier. These endpoints let a platform provision and release slots programmatically — onboard users and buy the slots they need, release them as customers churn, with no dashboard step.

GET

/v1/usage

Get usage

Account slot usage per tier (used / limit / available). The cheapest way to check whether you need to buy a slot before connecting an account.

Example request
curl https://api.metakit.cloud/v1/usage \
  -H "Authorization: Bearer stk_live_..."
Example response
{
  "readonly_accounts": { "used": 1, "limit": 2, "available": 1 },
  "full_accounts": { "used": 0, "limit": 1, "available": 1 }
}
GET

/v1/slots/payment-method

Check payment method

Whether a saved card is on file. When configured is false, slot purchases are rejected with 402 — add a card in the dashboard first. There is deliberately no API endpoint to store a card.

Example request
curl https://api.metakit.cloud/v1/slots/payment-method \
  -H "Authorization: Bearer stk_live_..."
Example response
{
  "configured": true,
  "brand": "visa",
  "last4": "4242"
}
GET

/v1/slots

List slots

Every slot you own, including canceled ones so you can reconcile against your own records. connected_account_id is the numeric account currently occupying the slot, or null when free.

Parameters
NameTypeRequiredDescription
statusstringNoFilter by active, past_due, canceled or incomplete.
pageintegerNoPage number (default 1).
limitintegerNoItems per page (default 25, max 100).
Example request
curl https://api.metakit.cloud/v1/slots \
  -H "Authorization: Bearer stk_live_..."
Example response
{
  "data": [
    {
      "id": "6a5a8ba4e7637702503bd8f0",
      "tier": "full",
      "status": "active",
      "connected_account_id": 2,
      "created_at": "2026-07-10T12:00:00.000Z",
      "updated_at": "2026-07-10T12:00:00.000Z"
    }
  ],
  "page": 1, "limit": 25, "total": 1, "total_pages": 1
}
POST

/v1/slots

Buy a slot

Purchases one slot and charges your saved card immediately, starting a recurring subscription at your account’s slot price. Returns 402 payment_method_required when no card is on file. A slot with status incomplete means the charge has not settled yet (for example 3-D Secure) — it becomes usable once the subscription is active.

Request body
{ "tier": "full" }
Example request
curl https://api.metakit.cloud/v1/slots \
  -H "Authorization: Bearer stk_live_..." \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{ "tier": "full" }...'
Example response
{
  "slot": {
    "id": "6a5a8ba4e7637702503bd8f1",
    "tier": "full",
    "status": "active",
    "connected_account_id": null,
    "created_at": "2026-07-28T10:00:00.000Z",
    "updated_at": "2026-07-28T10:00:00.000Z"
  },
  "charged_to": { "brand": "visa", "last4": "4242" }
}
DELETE

/v1/slots/{id}

Release a slot

Cancels the slot and its subscription. Returns 409 slot_occupied while an account is connected — disconnect the account first. A billing call will never disconnect a live trading account as a side effect. Returns 204.

Example request
curl https://api.metakit.cloud/v1/slots/123 \
  -H "Authorization: Bearer stk_live_..." \
  -X DELETE
Example response
204 No Content