Base path
Most SDK endpoints are under:/sdk/v1
The compact campaign creator list is versioned separately at:
GET /sdk/v2/campaigns/:campaignId/creators
Authentication (required on every request)
Send these headers on every request:X-Application-Id: Your SDK application ID.X-Api-Key: Your SDK API key secret.
- If the request includes an
Originheader, it must match the allowlist. - If the request omits
Origin(common server-to-server), allowlist checks are skipped.
Scopes (what a key is allowed to do)
Every API key carries a set of scopes, chosen when the key is created and editable afterwards from the developer portal. A scope is written<domain>:<action>, where
the action is read or write.
write does not imply read, so a domain has four possible states and the portal
offers all of them: No access, Read only, Write only, and Read and write. A key
that should both list and mutate a domain needs both scopes.
A call whose key is missing the required scope answers 403 and names what is missing:
- The HTTP method is not the rule. Several endpoints are
POSTbut are pure reads, and they require:read, not:write. That includesPOST /payouts/status,POST /payouts/pending,POST /payouts/pending-bulk,POST /wallet/check-payout-balance[-bulk], and the twoPOST /campaign-creators/.../queryendpoints. So a read-only key can still check a balance before a payout is approved elsewhere. - Reference endpoints need no scope.
GET /timezonesandGET /settingsanswer for any valid key.
Idempotency (required on payout and crosspost writes)
These endpoints requireX-Idempotency-Key:
POST /sdk/v1/payouts/triggerPOST /sdk/v1/payouts/trigger-bulkPOST /sdk/v1/payouts/confirmPOST /sdk/v1/payouts/confirm-bulkPOST /sdk/v1/payouts/cancelPOST /sdk/v1/campaign-creators/payouts/bulkPOST /sdk/v1/campaign-creators/:campaignCreatorRecordId/quick-payPOST /sdk/v1/campaign-creators/:campaignCreatorRecordId/crosspost-groupsPATCH /sdk/v1/campaign-creators/:campaignCreatorRecordId/crosspost-groups/membershipsPOST /sdk/v1/campaign-creators/:campaignCreatorRecordId/crosspost-groups/recompute
payouts:read but does not require X-Idempotency-Key.
Limits and validation
- Supported payout currencies:
USD,CAD,GBP,EUR - Currency precision: money amounts must be positive and have max 2 decimals
- Payout batches: up to 100 items per request
- Campaign creator v1 reads: up to 100 creators per page
- Campaign creator v2 reads: up to 500 creators per page or request
- Eligibility score batches: up to 500 media items per request
- Pending payout TTL: 7 days
- Exports: require
fromandtoand are capped at 10,000 rows
Response conventions
- Most JSON endpoints return
{ success: boolean, ... }. - Balance check endpoints return
{ sufficient: boolean }(nosuccesswrapper). - Export endpoints and invoice PDFs return file content (
text/csvorapplication/pdf).
Pages
- MCP server — connect an MCP-compatible AI client to your Grade account
- Payouts
- Campaign quick pay — custom one-off payments attributed to a campaign
- Bonus templates
- Wallet
- Transactions
- Creators
- KYC
- Invoices
- Settings
- Timezones — list accepted IANA names and display-friendly labels
- Standalone analytics — track accounts and posts outside campaigns, manage collections, and query performance
Campaign management
- Campaigns — create, list, update, delete campaigns and manage campaign creators
- Campaign creators (v2) — use the compact response for new integrations
- Campaign creators (v1 legacy) — preserve the original response for existing clients
- Campaign creator visibility — hide or unhide a creator within a campaign
- Move a creator — move a creator and their history between campaigns in your agency
- Payout report data — read the rows and totals behind a creator’s payout report as JSON
- Campaign contracts — manage creator contracts and payment terms (optional)
- Campaign media — track media, manage creator content, and read performance metrics
- Media eligibility — read and update eligibility scores for tracked posts