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.
/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 }
}/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"
}/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
| Name | Type | Required | Description |
|---|---|---|---|
| status | string | No | Filter by active, past_due, canceled or incomplete. |
| page | integer | No | Page number (default 1). |
| limit | integer | No | Items 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
}/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" }
}/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 DELETEExample response
204 No Content