Marketplace API

Read-only API access for marketplace publishers and call buyers — pull your calls, earnings, payouts, transactions, and balance.

Who This Is For

Marketplace publisher and call buyer accounts get their own API keys. They work exactly like regular CallScaler API keys — same Authorization: Bearer cs_key_... header, same base URL, same response envelope — but they are read-only: only the GET endpoints on this page are available. Everything else, including anything that changes settings or moves money, returns 403.

Use a marketplace key to sync your call log into your own reporting, reconcile earnings or spend against your records, and monitor balances programmatically.

Creating a Key

Publishers — open Settings → API keys.

Buyers — open Settings → API Keys in your buyer dashboard.

Click Create API Key, name it, and copy the key immediately — the full secret is shown only once. Up to 10 active keys per account; revoking a key disables it immediately.

curl -H "Authorization: Bearer cs_key_your_key_here" \
  https://callscaler.com/api/v1/publisher/earnings

Conventions

Marketplace keys follow the same conventions as the rest of the API:

  • Rate limit: 60 requests per minute, with X-RateLimit-* headers and 429 + Retry-After when exceeded
  • Successful responses are wrapped in a data envelope; errors return {"error": {"code", "message"}}
  • Money values are in cents, timestamps are ISO 8601 UTC, IDs are UUIDs, phone numbers are E.164

Publisher Endpoints

All endpoints are GET and scoped to your own publisher account:

  • /api/v1/publisher/call-log — full call log for your assigned numbers. Supports the same filters and pagination as the app's call log (limit, offset, status, start_date/end_date, min_payout_cents, …)
  • /api/v1/publisher/call-log/export — the same log as CSV
  • /api/v1/publisher/calls — simplified per-campaign call list
  • /api/v1/publisher/earnings — lifetime / monthly / pending / paid-out totals, per-offer breakdown, and payout-eligibility state per network relationship
  • /api/v1/publisher/payouts — payout history (amount, method, status, dates)
  • /api/v1/publisher/campaigns and /campaigns/{id} — your campaigns, assigned numbers, and payout terms
  • /api/v1/publisher/numbers — the tracking numbers assigned to you
  • /api/v1/publisher/calls/{id}/recording — stream the recording (MP3) for a call on your assigned numbers; supports Range requests, returns 404 if the call wasn't recorded

Buyer Endpoints

All endpoints are GET and scoped to your buyer account:

  • /api/v1/buyer/me — account summary including balance_cents, status, campaign counts, and destination settings
  • /api/v1/buyer/calls — calls billed to you: caller, duration, qualified, charge_cents, AI score
  • /api/v1/buyer/transactions — wallet ledger: deposits, call charges, refunds, with amount_cents and balance_after_cents
  • /api/v1/buyer/campaigns — your buying campaigns and their targeting
  • /api/v1/buyer/disputes — your filed disputes and their resolution status
  • /api/v1/buyer/calls/{id}/recording — stream the recording (MP3) for a call billed to you; supports Range requests, returns 404 if the call wasn't recorded

Marketplace Fields on Call Rows

The publisher call log (/publisher/call-log) reuses the standard Calls API row shape, plus marketplace-specific fields:

  • payout_cents — your publisher payout for the call (0 until the call qualifies for a payout)
  • qualified / unqualified — whether the call currently counts as qualified; ppc_unqualified_at is set when a call was later disqualified
  • caller_zip, caller_zip_city, caller_zip_state — caller-entered ZIP where gathered
  • Buyer-side rows use charge_cents (what you paid). Charges only become final when the call qualifies — a disqualified call shows a charge of 0 or a matching refund transaction

Read-Only Errors

Calling anything outside the lists above with a marketplace key returns:

Regular subscriber API keys are unaffected — this page only applies to keys created by publisher or buyer accounts.

// HTTP 403 Forbidden
{
  "error": {
    "code": "403",
    "message": "marketplace API keys are read-only — see the Marketplace API docs at callscaler.com/docs/api-marketplace"
  }
}