Subaccounts

A subaccount is a separate account under yours for one of your clients. Agencies, call centers and platforms create one per client.

What each subaccount has

  • Its own numbers, caller ID pools and number reputation. A spam label on one client's number never affects another client.
  • Its own do-not-call list, consent records and compliance settings.
  • Its own recordings, transcripts and retention rules.
  • Its own API keys and webhook endpoints.
  • A billing view with its own usage and call records.
  • Its own National Do Not Call Registry subscription. A subscription cannot be shared across clients.
  • Its own SMS brand registration and WhatsApp account.

Agents, lead lists and dial sessions belong to one subaccount. Calls placed in a subaccount use its numbers, caller name and registrations.

Create a subaccount

Each subaccount is reviewed as its own business before it can call or text. We verify the client's legal name, registration, tax ID, address, website and owners, and check them against US sanctions lists. A subaccount starts in in_review with every capability pending. No capability turns on, inbound included, until your client accepts the subaccount terms and signs its compliance certification. After that each feature turns on when its checks pass: inbound numbers first, then outbound calling, texting and recording.

What we need from each client depends on how they call:

  • Every client: legal name, EIN, address, website, a representative, owners with 25% or more, what they sell and who they call.
  • Sales calls to consumers: the client's own National Do Not Call Registry subscription, their do-not-call policy, call scripts, how they collect consent and where their leads come from.
  • Calls into states that require telemarketer registration: the registration number or the exemption the client relies on.
  • Texting: a brand and campaign registration in the client's business name.
  • Some industries need more. Collections, Medicare and health care, lending and solar are reviewed by hand. Some industries are not accepted. See the acceptable use policy.

You can send these fields with the API and upload documents, or send your client the setup link from onboarding_url. Your client signs our terms and their compliance statement themselves.

Setup is $1,000 one time, per subaccount. There is no monthly fee per subaccount.

Subaccount setupThe same setup for each client account. Each subaccount has its own numbers, number reputation, recordings and billing view. $1,000one time, per subaccount

POST/v1/accounts

ParametersTypeDescription
namerequired string The client business name. Used for caller name and registrations.
legal_name string The registered company name, if it differs.
ein string The client company tax ID, for carrier and registry filings.
contact_email string Where we send setup questions and compliance notices for this client.
entity_type string llc, corporation, partnership, sole_proprietor or nonprofit.
formation object State, date and state entity ID of the registration.
address object The business address.
website string The client website.
representative object The person who signs for the client: name, title, email and phone.
owners array Each owner with 25% or more, with name and percent.
industry string What the client does, for example health_care_provider or home_services.
offer_description string What the client sells, in a sentence.
audience consumer | business | both Who the client calls.
calling_states array States the client calls into.
channels array live_voice, parallel_dialing, sms, whatsapp, recording.
lead_sources array Where the client's leads come from.
dnc.san string The client's own National Do Not Call Registry subscription account number.
state_registrations array Telemarketer registrations by state, or the exemption the client relies on.
POST/v1/accounts
curl https://api.liveleg.dev/v1/accounts \
  -H "Authorization: Bearer $LIVELEG_API_KEY" \
  -H "Idempotency-Key: client-hollis-dental" \
  -d name="Hollis Family Dental" \
  -d legal_name="Hollis Family Dental PLLC" \
  -d ein=00-0000000 \
  -d contact_email=ops@hollisdental.example
Response
{
  "id": "acc_hollis_dental",
  "object": "account",
  "name": "Hollis Family Dental",
  "parent_id": "acc_ridgeline",
  "status": "in_review",
  "capabilities": { "inbound": "pending", "outbound_consumer": "pending", "sms": "pending", "recording": "pending" },
  "requirements": {
    "currently_due": ["attestations.subaccount_terms", "attestations.seller_compliance", "documents.ein_letter", "documents.consent_form", "documents.script"],
    "pending_verification": ["owners[0].screening"]
  },
  "onboarding_url": "https://liveleg.dev/onboard/acc_hollis_dental?t=...",
  "livemode": true,
  "created_at": "2026-11-02T17:20:41Z"
}

Requirements and documents

GET /v1/accounts/{id}/requirements lists what is still due for each feature. Upload documents with POST /v1/accounts/{id}/documents. account.requirements_updated and account.capability_updated tell you when something changes. We ask again for some items each year, and when a registration or subscription expires.

POST/v1/accounts/{id}/documents

curl POST/v1/accounts/{id}/documents
curl https://api.liveleg.dev/v1/accounts/acc_hollis_dental/documents \
  -H "Authorization: Bearer $LIVELEG_API_KEY" \
  -F type=dnc_subscription \
  -F file=@dnc-subscription.pdf

Keys and acting as a subaccount

A subaccount key works only inside that subaccount. Give it to a client or to a service that runs for one client. Your parent key can act on any subaccount by adding the Liveleg-Account header to a request. Without the header, the request runs on the parent account.

GET/v1/call_records
curl "https://api.liveleg.dev/v1/call_records?limit=20" \
  -H "Authorization: Bearer $LIVELEG_API_KEY" \
  -H "Liveleg-Account: acc_hollis_dental"

Every event carries account_id. One endpoint on the parent can receive the events for all subaccounts.

Usage and billing

Usage is reported per subaccount with the same line items as the invoice. Billing works one of two ways:

  • One bill. The parent account gets one invoice for itself and all subaccounts.
  • Per subaccount. Each subaccount gets its own invoice.

The minimum spend applies to the parent account. Platforms that resell calling to their own customers can read more on Liveleg for platforms.

curl
curl "https://api.liveleg.dev/v1/usage?account_id=acc_hollis_dental&from=2026-10-01&to=2026-10-31" \
  -H "Authorization: Bearer $LIVELEG_API_KEY"