Team and keys
Members, roles, invites, API keys and invoices.
Every account belongs to a team. Working alone, your team has one member: you.
| Role | Can |
|---|---|
owner | Everything, including billing. |
admin | Manage members and keys. Trade. |
member | Trade. |
viewer | See everything. Trade nothing. |
GET /v1/team
The team, your role, the plan's limits and the members.
{
"team": { "id": "…", "name": "Desk", "personal": false, "plan": "trader", "yourRole": "owner" },
"limits": { "code": "trader", "accountCap": 3, "sessionCap": 3, "readsPerSecond": 30, "readBurst": 75, "ordersPerSecond": 10, "streamIntervalFloorMs": 100, "idleSeconds": 3600, "…": "…" },
"members": [ { "userId": "…", "username": "ade", "email": "[email protected]", "role": "owner" } ],
"invites": []
}
GET /v1/team/mine
Every team you belong to, for a switcher. Pass one's id as X-Org-Id to act in it.
POST /v1/team/invites
{ "email": "[email protected]", "role": "member" }
Owners and admins only. The invite expires after a week.
DELETE /v1/team/invites/:inviteId
Withdraw an invite.
POST /v1/team/accept
Accept an invite with the token from its link: { "token": "…" }.
PUT /v1/team/members/:userId
Change a role: { "role": "viewer" }.
DELETE /v1/team/members/:userId
Remove someone. Keys they created stop working.
GET /v1/team/billing
Your team's invoices. status is open, paid, past_due (a payment failed or
expired; your accounts keep running) or void.
GET /v1/plans
The price list, no key needed: each plan's code, name, monthlyCents, accountCap
and ordersPerSecond.
GET /v1/payments/providers
Which ways to pay are switched on, no key needed: { "providers": ["creem", "paystack", "nowpayments"] }.
creem is card, paystack is Paystack, nowpayments is crypto.
POST /v1/team/billing/checkout
Start paying. Owners and admins only.
{ "provider": "paystack", "plan": "trader" }
Or pay one open invoice with { "provider": "nowpayments", "invoiceId": "…" }. Answers
{ "url": "https://…" }: send the person there. When the payment clears, the plan
changes and the invoice is marked paid; nothing else to call. A provider that is not
switched on answers 501 not_supported.
POST /v1/team/billing/cancel
Back to the free plan from now on. Owners and admins only. Nothing is charged again; accounts above the free plan's cap stop starting until you remove some or pay again.
API keys
Creating and revoking keys needs a signed-in person; a key cannot manage keys.
POST /v1/keys
{ "name": "gold bot", "scope": "trade" }
{ "key": { "id": "…", "name": "gold bot", "prefix": "3f8a2b19", "scope": "trade", "key": "of_live_3f8a2b19_kZ…" },
"notice": "This is the only time the key is shown. Store it now." }
GET /v1/keys
Your team's keys. Prefixes only, never secrets.
DELETE /v1/keys/:id
Revoke a key. It stops working immediately.