botso.ai API

botso.ai API Documentation

REST API for clubs, syndicates, and partner apps building on shared autonomous trading pools — tickets, members, payments, payouts, and transparency.

Version v1 Format JSON Base URL https://api.botso.ai/api

Overview

The botso.ai platform API is a Laravel REST service. The hostname is api.botso.ai; Laravel mounts all JSON routes under an /api prefix, so the client base URL is https://api.botso.ai/api and paths look like /v1/auth/login (full URL: https://api.botso.ai/api/v1/auth/login). Authentication uses Laravel Passport (OAuth2 bearer tokens).

Partner use cases: club management apps, ticketing integrations, member mobile apps, treasury reporting, and custom dashboards. The API exposes the same contract used by the official client dashboard.
EnvironmentBase URL
Productionhttps://api.botso.ai/api

Core concepts

ConceptDescription
OrganizationClub or tenant. Users may belong to multiple orgs.
PoolShared bot group with ticket cap, funding target, and lifecycle (draftsimfundedlive).
TicketEqual share entitlement in a pool (not a payment rail). Status: active, pending, revoked.
Payment processorUpcoming checkout flow via ticketing / payment partners — same auth and users table.
Shared botFixed-strategy trading bot linked to a pool (SIM or LIVE).

Authentication

Password grant (user apps)

For SPAs and mobile apps where a user signs in with email and password.

POST /v1/auth/login Public + client_id

Issue a bearer token. User must have botso_access permission.

Request
POST /api/v1/auth/login
Content-Type: application/json

{
  "email": "admin@botso.ai",
  "password": "password",
  "client_id": "YOUR_OAUTH_CLIENT_ID"
}
Response 200
{
  "token_type": "Bearer",
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGc...",
  "expires_at": "2026-06-08 12:00:00",
  "scopes": ["botso:read"],
  "user": {
    "id": 1,
    "name": "Club Admin",
    "email": "admin@botso.ai",
    "permissions": ["botso_access", "botso_manage"],
    "organizations": [{ "id": 1, "name": "Demo Club", "slug": "botso-ai" }]
  }
}

Client credentials (machine-to-machine)

For server-side integrations and service accounts. Use the botso Service Client OAuth client.

POST /v1/auth/client-credentials client_id + secret
Request
{
  "client_id": "SERVICE_CLIENT_ID",
  "client_secret": "SERVICE_CLIENT_SECRET",
  "scope": "botso:read"
}

Session endpoints

GET/v1/auth/meBearer

Current user profile, roles, permissions, organizations.

PUT/v1/auth/profileBearer

Update name, phone, social handles.

PUT/v1/auth/profile/communicationBearer

Communication preferences.

POST/v1/auth/profile/verify-whatsappBearer

Verify phone on WhatsApp.

PUT/v1/auth/passwordBearer

Change password.

POST/v1/auth/logoutBearer

Revoke current access token.

Required headers

HeaderWhenExample
AuthorizationAll authenticated routesBearer <access_token>
X-Botso-OrganizationUser has multiple clubsbotso-ai
AcceptAlwaysapplication/json
Content-TypePOST/PUT/PATCH bodiesapplication/json

Organization resolution order: subdomain ({slug}.botso.ai) → X-Botso-Organization header → ?org= query → auto-select if user has one org.

Organizations

GET/v1/botso/organizations/minebotso_access

List organizations the authenticated user belongs to.

GET/v1/botso/organizationsorg manage

Admin list of organizations (platform/org admin).

GET/v1/botso/users/search?q=org manage

Search users to add as pool members.

Pools — read (members & admins)

Requires botso_access and organization context. Members only see pools they belong to or hold tickets in.

GET/v1/botso/poolsbotso_access

List pools for current organization.

GET/v1/botso/pools/{slug}/detailbotso_access

Full pool detail including bots and settings.

GET/v1/botso/pools/{slug}/overviewbotso_access

Dashboard metrics: PnL, per-ticket payout, chart series.

GET/v1/botso/pools/{slug}/daily-pnlbotso_access

Daily pool PnL for charting — one point per trading day, no individual trade detail. Query: ?month=YYYY-MM (defaults to current month). Month is clamped to months with trading data from the pool's first record through today.

daily_pnl and month_total_pnl are gross bot realized PnL (before platform fees, tax, and per-ticket splits). cumulative_pnl is the running total within the selected month. Member earnings are lower — see /earnings.

Example response
{
  "has_financial_data": true,
  "month": "2026-06",
  "first_trade_date": "2026-06-06",
  "available_months": [
    { "value": "2026-06", "label": "June 2026" }
  ],
  "series": [
    { "date": "2026-06-06", "daily_pnl": 56.44, "cumulative_pnl": 56.44 },
    { "date": "2026-06-07", "daily_pnl": 116.29, "cumulative_pnl": 172.73 },
    { "date": "2026-06-08", "daily_pnl": 104.59, "cumulative_pnl": 277.32 }
  ],
  "point_count": 3,
  "month_total_pnl": 277.32,
  "pool": {
    "slug": "sim-trial",
    "name": "Trial Pool"
  }
}

When the pool has no financial data or primary bot, returns has_financial_data: false with empty series and available_months.

GET/v1/botso/pools/{slug}/membersbotso_access

Pool members and ticket holders.

GET/v1/botso/pools/{slug}/ticketsbotso_access

All tickets in pool.

GET/v1/botso/pools/{slug}/payoutsbotso_access

Payout history.

GET/v1/botso/pools/{slug}/earningsbotso_access

Member earnings. Optional ?user_id=.

PATCH/v1/botso/pools/{slug}/members/me/contact-sharingmember

Toggle contact sharing with other members.

GET/v1/botso/pools/{slug}/members/me/payment-preferencesmember
PATCH/v1/botso/pools/{slug}/members/me/payment-preferencesmember
GET/v1/botso/pools/{slug}/members/me/crypto-paymentsmember

Pools — manage (org admin)

Requires botso.org.manage — organization admin or owner, or platform botso_manage.

POST/v1/botso/poolsorg manage

Create a new pool.

Request body
{
  "name": "Summer Syndicate",
  "type": "club",
  "ticket_cap": 20,
  "ticket_price": 50,
  "funding_target": 1000,
  "start_date": "2026-07-01",
  "end_date": "2026-12-31",
  "description": "Optional pool description"
}
PATCH/v1/botso/pools/{slug}/settingsorg manage

Update entry mode, caps, dates, assignment flags.

GET/v1/botso/pools/{slug}/filling-poolorg manage

Active pool accepting new tickets.

POST/v1/botso/pools/{slug}/ticketsorg manage

Admin-assign one ticket. Auto-creates next pool when cap reached.

Request body
{
  "user_id": 42,
  "member_name": "Jane Smith",
  "target_pool_slug": "late90s-club",
  "entry_method": "ticketing",
  "payment_note": "FT-order-88421"
}

entry_method: admin | cash | transfer | revolut | ticketing | usdc

POST/v1/botso/pools/{slug}/membersorg manage

Add member to pool.

GET/v1/botso/pools/{slug}/club-usersorg manage

Club user directory.

POST/v1/botso/pools/{slug}/club-usersorg manage

Create club user account.

PUT/v1/botso/pools/{slug}/club-users/{userId}org manage
POST/v1/botso/pools/{slug}/club-users/{userId}/verify-whatsapporg manage
GET/v1/botso/audit-log?limit=100org manage

Organization audit trail.

Payment processor (coming soon)

Member ticket purchase will move to a dedicated payment processor integrated with the ticketing platform API. Partners and mobile apps will use the same OAuth login and users table — no separate auth system.

Planned flow: authenticated user → create checkout session → payment provider webhook → ticket issued with entry_method: "ticketing". Documentation for checkout and webhook endpoints will be added here when the processor ships.

Until then, club admins assign tickets via POST /v1/botso/pools/{slug}/tickets after off-platform payment, or record payments with POST .../payments.

Payments & funding

POST/v1/botso/pools/{slug}/fundorg manage

Record pooled capital transfer to activate shared bots.

Request body
{
  "amount": 500,
  "method": "transfer",
  "reference": "REV-2026-001"
}
GET/v1/botso/pools/{slug}/paymentsorg manage

List recorded payments.

POST/v1/botso/pools/{slug}/paymentsorg manage

Record off-platform payment (cash, Revolut, etc.).

Payouts & earnings

POST/v1/botso/pools/{slug}/payouts/settleorg manage

Settle a payout period for the pool.

POST/v1/botso/pools/{slug}/earnings/{userId}/allocateorg manage

Allocate earnings to a member.

POST/v1/botso/allocate-payouts/simbotso_manage

Platform: manual SIM payout allocation (LIVE via artisan CLI).

Notifications (Twilio & WhatsApp)

GET/v1/botso/organization/twilioorg manage
PUT/v1/botso/organization/twilioorg manage
PUT/v1/botso/organization/whatsapporg manage

Save WhatsApp Cloud API credentials for club alerts.

Analytics & trading (operator)

Requires botso_manage and user_management_access.

GET/v1/botso/pools/{slug}/botsoperator

Shared bots in pool with session PnL.

GET/v1/botso/pools/{slug}/history?limit=50operator

Recent closed trades.

GET/v1/botso/late90s/analyticsoperator

Summary, daily PnL series, recent trades. Query: session_name, days, limit.

Separate trading API

Operator trading endpoints at /v1/trading/* require scope trading:read.

Errors & status codes

CodeMeaning
401Missing or expired token — re-authenticate.
403Valid token but insufficient permission or wrong org.
404Pool or resource not found.
422Validation error — see errors object in body.
Validation error example
{
  "message": "Validation error.",
  "errors": {
    "entry_method": ["The selected entry method is invalid."]
  }
}