Partner API

Manage sub-accounts, billing, and usage reporting for your customers through the Partner API.

Partner Authentication

Partner API endpoints require a partner API key, which is different from a standard workspace API key. Include it in the Authorization header:

Partner authenticationbash
curl https://api.frontdeskos.com/v1/partner/accounts \
  -H "Authorization: Bearer partner_sk_live_your_partner_key"
Obtaining a Partner Key
Partner API keys are issued to approved partners. Contact partners@frontdeskos.com or apply through the Partner Portal in the dashboard.

Managing Sub-Accounts

Create and manage workspaces on behalf of your customers. Each sub-account is an isolated workspace with its own data, users, and settings.

Create a Sub-Account

POST/v1/partner/accounts
Create sub-accountbash
curl -X POST https://api.frontdeskos.com/v1/partner/accounts \
  -H "Authorization: Bearer partner_sk_live_your_partner_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Sunshine Dental",
    "ownerEmail": "admin@sunshinedental.com",
    "plan": "professional",
    "settings": {
      "timezone": "America/New_York",
      "businessHours": {
        "monday": { "open": "08:00", "close": "17:00" },
        "tuesday": { "open": "08:00", "close": "17:00" },
        "wednesday": { "open": "08:00", "close": "17:00" },
        "thursday": { "open": "08:00", "close": "17:00" },
        "friday": { "open": "08:00", "close": "16:00" }
      }
    }
  }'
Response
200 OK
{
  "id": "ws_sunshine_dental",
  "name": "Sunshine Dental",
  "ownerEmail": "admin@sunshinedental.com",
  "plan": "professional",
  "status": "active",
  "apiKey": "sk_live_generated_key_for_account",
  "createdAt": "2025-06-15T10:00:00Z"
}

List Sub-Accounts

GET/v1/partner/accounts
List sub-accountsbash
curl "https://api.frontdeskos.com/v1/partner/accounts?status=active&limit=20" \
  -H "Authorization: Bearer partner_sk_live_your_partner_key"

Suspend a Sub-Account

POST/v1/partner/accounts/:id/suspend
Suspend sub-accountbash
curl -X POST https://api.frontdeskos.com/v1/partner/accounts/ws_sunshine_dental/suspend \
  -H "Authorization: Bearer partner_sk_live_your_partner_key" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Non-payment"
  }'
Suspension Effects
Suspended accounts retain their data but cannot process calls, book appointments, or access the dashboard. Re-activate by calling the POST /accounts/:id/reactivate endpoint.

Billing API

Access usage data and invoices for your sub-accounts to power your own billing system.

Get Usage

GET/v1/partner/accounts/:id/usage
Get usage for an accountbash
curl "https://api.frontdeskos.com/v1/partner/accounts/ws_sunshine_dental/usage?period=2025-06" \
  -H "Authorization: Bearer partner_sk_live_your_partner_key"
Usage response
200 OK
{
  "accountId": "ws_sunshine_dental",
  "period": "2025-06",
  "usage": {
    "calls": { "total": 342, "aiHandled": 198, "minutes": 1847 },
    "appointments": { "booked": 156, "cancelled": 12 },
    "leads": { "created": 89, "converted": 34 },
    "smsMessages": 267,
    "apiRequests": 15420
  }
}

List Invoices

GET/v1/partner/billing/invoices
List partner invoicesbash
curl "https://api.frontdeskos.com/v1/partner/billing/invoices?limit=10" \
  -H "Authorization: Bearer partner_sk_live_your_partner_key"
Invoices response
200 OK
{
  "invoices": [
    {
      "id": "inv_2025_06",
      "period": "2025-06",
      "totalAccounts": 24,
      "subtotal": 4560.00,
      "discount": 912.00,
      "total": 3648.00,
      "currency": "usd",
      "status": "paid",
      "pdfUrl": "https://api.frontdeskos.com/v1/partner/billing/invoices/inv_2025_06/pdf"
    }
  ],
  "total": 1,
  "has_more": false
}

Usage Reporting

Get an aggregated usage report across all sub-accounts for a given period:

GET/v1/partner/reports/usage
Aggregated usage reportbash
curl "https://api.frontdeskos.com/v1/partner/reports/usage?period=2025-06&group_by=account" \
  -H "Authorization: Bearer partner_sk_live_your_partner_key"
Aggregated report
200 OK
{
  "period": "2025-06",
  "totalAccounts": 24,
  "activeAccounts": 22,
  "summary": {
    "totalCalls": 8234,
    "totalAppointments": 3891,
    "totalLeads": 2104,
    "totalApiRequests": 389420
  },
  "accounts": [
    {
      "id": "ws_sunshine_dental",
      "name": "Sunshine Dental",
      "calls": 342,
      "appointments": 156,
      "leads": 89
    }
  ]
}

Search Documentation

Search for pages, tools, and guides