# SideShift > API documentation for SideShift — campaign operations, embedded payments, and social data. ## Docs - [Authentication](https://docs.sideshift.app/authentication.md): Credentials, base URLs, and error codes for each SideShift API. - [Connect](https://docs.sideshift.app/connect/index.md): Embed payment infrastructure directly into your platform. - [Bulk delete connected accounts](https://docs.sideshift.app/connect/reference/accounts/bulk-delete-connected-accounts.md): Disconnect one or more connected accounts created by your integration. - [Create account](https://docs.sideshift.app/connect/reference/accounts/create-account.md): Create a SideShift Connect account for one of your users. - [Create account invoice](https://docs.sideshift.app/connect/reference/accounts/create-account-invoice.md): Create an invoice for a specific connected account. - [Get balance & transactions](https://docs.sideshift.app/connect/reference/accounts/get-balance-&-transactions.md): Retrieve an account's current balance, recent transactions, and lifetime summary. - [Get invoice transactions](https://docs.sideshift.app/connect/reference/accounts/get-invoice-transactions.md): Retrieve invoice-backed payin transactions for an account. - [List connected accounts](https://docs.sideshift.app/connect/reference/accounts/list-connected-accounts.md): Retrieve connected accounts created by your SideShift Connect integration. - [Move wallet funds into withdrawal balance](https://docs.sideshift.app/connect/reference/accounts/move-wallet-funds-into-withdrawal-balance.md): Move funds from a connected account's SideShift wallet into its withdrawal-ready balance. - [Send account invoice](https://docs.sideshift.app/connect/reference/accounts/send-account-invoice.md): Send or resend an invoice email for a connected account. - [Update account](https://docs.sideshift.app/connect/reference/accounts/update-account.md): Update an account's email, profile image, external ID, or display balance. - [Create hosted checkout session](https://docs.sideshift.app/connect/reference/checkout/create-hosted-checkout-session.md): Create a public SideShift-hosted checkout link for your embed-enabled SideShift account. - [Generate widget token](https://docs.sideshift.app/connect/reference/tokens/generate-widget-token.md): Generate a short-lived access token for an embedded widget session. - [Batch transfer](https://docs.sideshift.app/connect/reference/transfers/batch-transfer.md): Process multiple transfers in a single request. Transfers are executed **sequentially** — use this instead of sending many parallel single-transfer requests. - [Create transfer](https://docs.sideshift.app/connect/reference/transfers/create-transfer.md): Move funds between accounts. Three directions are supported: - [Get transfer](https://docs.sideshift.app/connect/reference/transfers/get-transfer.md): Retrieve details for a specific transfer. - [List transfers](https://docs.sideshift.app/connect/reference/transfers/list-transfers.md): Retrieve a paginated list of transfers. Filter by account, status, direction, or metadata. - [Get verification](https://docs.sideshift.app/connect/reference/verifications/get-verification.md): Get one identity verification for a connected account, including its current status, profile details, and any actions still required from the user. - [List webhook delivery logs](https://docs.sideshift.app/connect/reference/webhooks/list-webhook-delivery-logs.md): Retrieve webhook delivery attempts for your integration. - [SideShift API](https://docs.sideshift.app/index.md): Campaign operations, embedded payments, and social data. - [General analytics overview](https://docs.sideshift.app/platform/api-key/analytics/general-analytics-overview.md): Get comprehensive analytics with filtering capabilities. - [Get comprehensive KPIs](https://docs.sideshift.app/platform/api-key/analytics/get-comprehensive-kpis.md): Retrieve key performance indicators with status breakdowns. - [Get daily recruitment outreach analytics](https://docs.sideshift.app/platform/api-key/analytics/get-daily-recruitment-outreach-analytics.md): Retrieve daily counts for recruitment invites sent and candidate responses received. - [List all tracked accounts](https://docs.sideshift.app/platform/api-key/analytics/list-all-tracked-accounts.md): Retrieve all tracked social media accounts with aggregated analytics. - [List all tracked videos with analytics](https://docs.sideshift.app/platform/api-key/analytics/list-all-tracked-videos-with-analytics.md): Retrieve all tracked videos/posts with comprehensive analytics and filtering. - [List contracts](https://docs.sideshift.app/platform/api-key/contracts/list-contracts.md): Retrieve creator contracts with sensitive payment details hidden. - [List creator collections](https://docs.sideshift.app/platform/api-key/creators/list-creator-collections.md): List the creator collections (saved account groups) for the authenticated company. - [List creators](https://docs.sideshift.app/platform/api-key/creators/list-creators.md): Retrieve creators associated with your company, including their email and a per-campaign contract status map. Use this to determine which creators are active across your campaigns. - [Get a Discover lead](https://docs.sideshift.app/platform/api-key/discover/get-a-discover-lead.md): Retrieve a single Discover lead by ID, including lead-form answers, the lead-form field definitions, and the submitting brand's company profile. Returns 404 if the lead does not belong to the authenticated company. - [List Discover leads](https://docs.sideshift.app/platform/api-key/discover/list-discover-leads.md): List the Discover leads (brand inquiries) submitted to your agency, ordered newest-first. Each lead includes: - [Create and send an invoice](https://docs.sideshift.app/platform/api-key/invoices/create-and-send-an-invoice.md): Create an invoice for a customer and (by default) email the hosted payment link to them. Returns the saved invoice along with the hosted payment URL. - [Email an invoice to its customer](https://docs.sideshift.app/platform/api-key/invoices/email-an-invoice-to-its-customer.md): Re-send the invoice to the customer's email (and any `additionalEmails`). Increments `remindersSentCount` on the invoice. Cannot be used on paid or voided invoices. - [Get invoice](https://docs.sideshift.app/platform/api-key/invoices/get-invoice.md): Retrieve a single invoice by ID. Returns 404 if it does not belong to the authenticated company. - [List invoices](https://docs.sideshift.app/platform/api-key/invoices/list-invoices.md): List invoices for the authenticated company, ordered newest-first. - [Void an unpaid invoice](https://docs.sideshift.app/platform/api-key/invoices/void-an-unpaid-invoice.md): Cancel an invoice. Voiding: - [Get payout wallet stats](https://docs.sideshift.app/platform/api-key/payouts/get-payout-wallet-stats.md): Read-only summary of your company's payout wallet balances and lifetime activity. - [Get pending payouts](https://docs.sideshift.app/platform/api-key/payouts/get-pending-payouts.md): Retrieve list of pending payouts for active contracts. - [List wallet activity](https://docs.sideshift.app/platform/api-key/payouts/list-wallet-activity.md): Read-only access to your company's wallet ledger entries. - [Export posts as CSV](https://docs.sideshift.app/platform/api-key/posts/export-posts-as-csv.md): Generate and download a CSV export of posts. - [Get video details](https://docs.sideshift.app/platform/api-key/posts/get-video-details.md): Retrieve detailed information about a specific post/video. - [Get video metrics history](https://docs.sideshift.app/platform/api-key/posts/get-video-metrics-history.md): Retrieve historical daily metrics data for a specific post/video over time. - [List posts](https://docs.sideshift.app/platform/api-key/posts/list-posts.md): Retrieve social media posts with comprehensive filtering options. - [List programs](https://docs.sideshift.app/platform/api-key/programs/list-programs.md): Retrieve all programs for your company with pagination and filtering. - [Request program invite link](https://docs.sideshift.app/platform/api-key/programs/request-program-invite-link.md): Generate a shareable invite link for a program. - [Platform API](https://docs.sideshift.app/platform/index.md): Run SideShift campaign operations programmatically — programs, contracts, payouts, and analytics. - [Archive or unarchive a client](https://docs.sideshift.app/platform/oauth/agencies/archive-or-unarchive-a-client.md): archive or unarchive a client. Requires the `agencies:write` scope. - [Assign the free client](https://docs.sideshift.app/platform/oauth/agencies/assign-the-free-client.md): assign the token tenant agency's free included client — sets the oldest subaccount as the one client included free. Idempotent (never overwrites an existing free client). Requires per-client billing enabled and the `agency-billing:write` scope. - [Create a client subscription link](https://docs.sideshift.app/platform/oauth/agencies/create-a-client-subscription-link.md): Generate a Stripe Checkout URL to share with an agency subaccount client so it can start its own per-client subscription. Requires the `agency-billing:write` scope. - [Get agency dashboard](https://docs.sideshift.app/platform/oauth/agencies/get-agency-dashboard.md): fetch the agency dashboard (clients, programs, creators, cycle progress). Requires the `agencies:read` scope. - [Get billing profile](https://docs.sideshift.app/platform/oauth/agencies/get-billing-profile.md): Read the authenticated company's invoicing/billing profile — company name, logo, email, phone, billing address, tax id, and brand color. Requires the `agency-billing:read` scope. - [Get cashflow forecast](https://docs.sideshift.app/platform/oauth/agencies/get-cashflow-forecast.md): Agency-wide payout cashflow forecast for the token tenant — current and next-month totals, owed-now, and due-this-week amounts. Requires the `agencies:read` scope. - [Get client notes](https://docs.sideshift.app/platform/oauth/agencies/get-client-notes.md): Fetch dashboard notes for an accessible client/subaccount. - [Get contract notes](https://docs.sideshift.app/platform/oauth/agencies/get-contract-notes.md): Fetch notes for an accessible creator contract. - [Get creator receipts](https://docs.sideshift.app/platform/oauth/agencies/get-creator-receipts.md): fetch ledger receipts for a creator. Requires the `agencies:read` scope. - [Get per-client billing state](https://docs.sideshift.app/platform/oauth/agencies/get-per-client-billing-state.md): Read the token tenant's per-client billing configuration — isAgency, parentCompanyId, separateAgencySubs, and related flags. Requires the `agency-billing:read` scope. - [Get program notes](https://docs.sideshift.app/platform/oauth/agencies/get-program-notes.md): Fetch dashboard notes for an accessible program. - [List agency creators](https://docs.sideshift.app/platform/oauth/agencies/list-agency-creators.md): list all creators across agency + subaccounts. Requires the `agencies:read` scope. - [List creators for a program](https://docs.sideshift.app/platform/oauth/agencies/list-creators-for-a-program.md): list creators for a program. Requires the `agencies:read` scope. - [Toggle per-client subscriptions](https://docs.sideshift.app/platform/oauth/agencies/toggle-per-client-subscriptions.md): turn per-client (separate) subscriptions on/off for the token tenant's agency (config only — moves no money). Owner-only. Requires the `agency-billing:write` scope. - [Update billing profile](https://docs.sideshift.app/platform/oauth/agencies/update-billing-profile.md): Update the authenticated company's invoicing/billing profile — company name, logo, email, phone, billing address, tax id, and brand color. Requires the `agency-billing:write` scope. - [Update client notes](https://docs.sideshift.app/platform/oauth/agencies/update-client-notes.md): update client (subaccount) notes. Requires the `agencies:write` scope. - [Update contract notes](https://docs.sideshift.app/platform/oauth/agencies/update-contract-notes.md): update contract notes. Requires the `agencies:write` scope. - [Update program dashboard notes](https://docs.sideshift.app/platform/oauth/agencies/update-program-dashboard-notes.md): update program dashboard notes. Requires the `agencies:write` scope. - [Update program dashboard status](https://docs.sideshift.app/platform/oauth/agencies/update-program-dashboard-status.md): update program dashboard status. Requires the `agencies:write` scope. - [daily aggregated metrics time series (the data behind the Performance Overview chart) for the token's company](https://docs.sideshift.app/platform/oauth/analytics/daily-aggregated-metrics-time-series-the-data-behind-the-performance-overview-chart-for-the-tokens-company.md): daily aggregated metrics time series (the data behind the Performance Overview chart) for the token's company. Requires the `analytics:read` scope. - [dashboard KPI blocks ({ programs, contracts, posts, creators }) for the token's company](https://docs.sideshift.app/platform/oauth/analytics/dashboard-kpi-blocks--for-the-tokens-company.md): dashboard KPI blocks ({ programs, contracts, posts, creators }) for the token's company. Requires the `analytics:read` scope. - [the composite dashboard snapshot ({ summary, snapshotSummary, topPosts, topCreators, platformBreakdown }) for the…](https://docs.sideshift.app/platform/oauth/analytics/the-composite-dashboard-snapshot--for-the….md): the composite dashboard snapshot ({ summary, snapshotSummary, topPosts, topCreators, platformBreakdown }) for the…. Requires the `analytics:read` scope. - [the tracked-videos list (paginated post rows + window summary) for the token's company](https://docs.sideshift.app/platform/oauth/analytics/the-tracked-videos-list-paginated-post-rows-+-window-summary-for-the-tokens-company.md): the tracked-videos list (paginated post rows + window summary) for the token's company. Requires the `analytics:read` scope. - [tracked social accounts (grouped by creator:platform) with per-account analytics + a cross-account summary, for the…](https://docs.sideshift.app/platform/oauth/analytics/tracked-social-accounts-grouped-by-creator:platform-with-per-account-analytics-+-a-cross-account-summary-for-the….md): tracked social accounts (grouped by creator:platform) with per-account analytics + a cross-account summary, for the…. Requires the `analytics:read` scope. - [Bookmark or unbookmark an applicant](https://docs.sideshift.app/platform/oauth/applicants/bookmark-or-unbookmark-an-applicant.md): bookmark or unbookmark an applicant. Requires the `applicants:write` scope. - [Export applicants as CSV](https://docs.sideshift.app/platform/oauth/applicants/export-applicants-as-csv.md): export applicants as CSV. Requires the `applicants:read` scope. - [Get an applicant's top posts](https://docs.sideshift.app/platform/oauth/applicants/get-an-applicants-top-posts.md): get an applicant's top posts. Requires the `applicants:read` scope. - [Get applicant counts](https://docs.sideshift.app/platform/oauth/applicants/get-applicant-counts.md): get applicant counts by status for a job. Requires the `applicants:read` scope. - [List applicants with advanced filters](https://docs.sideshift.app/platform/oauth/applicants/list-applicants-with-advanced-filters.md): list applicants with advanced profile-dependent filters. Requires the `applicants:read` scope. - [List job applicants](https://docs.sideshift.app/platform/oauth/applicants/list-job-applicants.md): list filtered applicants for a job. Requires the `applicants:read` scope. - [Open an applicant support channel](https://docs.sideshift.app/platform/oauth/applicants/open-an-applicant-support-channel.md): resolve (create) support channel for an applicant. Requires the `applicants:write` scope. - [Update an applicant's status](https://docs.sideshift.app/platform/oauth/applicants/update-an-applicants-status.md): update an applicant's status. Requires the `applicants:write` scope. - [Count pending handle requests](https://docs.sideshift.app/platform/oauth/applications/count-pending-handle-requests.md): count pending handle requests for the token tenant's company. Requires the `applications:read` scope. - [Get a campaign application](https://docs.sideshift.app/platform/oauth/applications/get-a-campaign-application.md): Get a single campaign application (creator handle request) by id. Requires the `applications:read` scope. - [List campaign applications](https://docs.sideshift.app/platform/oauth/applications/list-campaign-applications.md): Creator handle requests to the company's campaigns (the "applications" unit), cursor-paginated, sorted pending → approved → rejected. - [List creator invites](https://docs.sideshift.app/platform/oauth/applications/list-creator-invites.md): list creator invites for the token tenant's company. Requires the `applications:read` scope. - [Respond to a creator invite](https://docs.sideshift.app/platform/oauth/applications/respond-to-a-creator-invite.md): approve or reject a pending creator invite. Requires the `applications:write` scope. - [Review a campaign application](https://docs.sideshift.app/platform/oauth/applications/review-a-campaign-application.md): Approve or reject a creator's handle request. `action` is `approve` or `reject` only — there is no "shortlist" action in the platform. Approving a program contract auto-accepts it and fires a DM + signed PDF + notifications (sensitive). - [Cancel a subscription](https://docs.sideshift.app/platform/oauth/billing/cancel-a-subscription.md): cancel the company's billable Stripe subscriptions (gated on active-programs-with-creators). Requires the `billing:write` scope. - [Get billing history](https://docs.sideshift.app/platform/oauth/billing/get-billing-history.md): Read the token tenant's Stripe billing history — the 20 most-recent invoices and payment intents (amounts, status, dates, hosted invoice URLs/PDFs), the default payment method, and the active subscription. Requires the `billing:read` scope. - [Get subscription status](https://docs.sideshift.app/platform/oauth/billing/get-subscription-status.md): the token tenant's subscription status. Requires the `billing:read` scope. - [List payment methods](https://docs.sideshift.app/platform/oauth/billing/list-payment-methods.md): list the token tenant's saved Stripe payment methods (cards + bank accounts). Requires the `billing:read` scope. - [Mint a browser billing handoff link](https://docs.sideshift.app/platform/oauth/billing/mint-a-browser-billing-handoff-link.md): Mint a short-lived (24h) link + code the agent hands to the human user for the BROWSER-ONLY money / purchase actions: paying for / managing the SideShift subscription (`kind: subscription`), adding funds to the company wallet (`kind: wallet_topup`), setting up an agency subaccount's own per-client s… - [Poll a billing handoff link](https://docs.sideshift.app/platform/oauth/billing/poll-a-billing-handoff-link.md): Poll a billing handoff link by code: its lifecycle (`pending` → `opened`, or `expired`) plus the tenant's LIVE billing state (subscription active, wallet available/pending balance) and the deltas since the link was minted — so an agent can confirm the human finished the browser step before retrying… - [Preview a plan change](https://docs.sideshift.app/platform/oauth/billing/preview-a-plan-change.md): Preview what changing the token tenant's current subscription to a target plan (starter/growth/scale, monthly or annual) would cost, prorated — before the browser-only change. Requires an existing subscription and the `billing:read` scope. - [Set default payment method](https://docs.sideshift.app/platform/oauth/billing/set-default-payment-method.md): set the company's default payment method and sync it across active subscriptions + open auto-charge invoices. Requires the `billing:write` scope. - [Create a brand content page](https://docs.sideshift.app/platform/oauth/brand-content-pages/create-a-brand-content-page.md): Create a brand content page for the token tenant. Requires the `brand-content-pages:write` scope. - [Get a brand content page](https://docs.sideshift.app/platform/oauth/brand-content-pages/get-a-brand-content-page.md): fetch one brand content page (token tenant only). Requires the `brand-content-pages:read` scope. - [List brand content pages](https://docs.sideshift.app/platform/oauth/brand-content-pages/list-brand-content-pages.md): list the token tenant's brand content pages. Requires the `brand-content-pages:read` scope. - [Update a brand content page](https://docs.sideshift.app/platform/oauth/brand-content-pages/update-a-brand-content-page.md): Update one of the token tenant's brand content pages. Requires the `brand-content-pages:write` scope. - [Get brand verification status](https://docs.sideshift.app/platform/oauth/brand-verification/get-brand-verification-status.md): get the company's brand verification status. Requires the `brand-verification:read` scope. - [Add a ghost handle to a campaign](https://docs.sideshift.app/platform/oauth/campaigns/add-a-ghost-handle-to-a-campaign.md): Add one tracked social handle to any campaign using the same ghost-handle flow as the SideShift dashboard. The company tenant comes from the OAuth token. Requires the `campaigns:write` scope. - [Add a ghost video to a campaign](https://docs.sideshift.app/platform/oauth/campaigns/add-a-ghost-video-to-a-campaign.md): Add one tracked social video to any campaign using the same ghost-video flow as the SideShift dashboard. Optionally attach it to an existing creator. Requires the `campaigns:write` scope. - [Archive a campaign](https://docs.sideshift.app/platform/oauth/campaigns/archive-a-campaign.md): Archive a campaign, removing it from active listings while preserving its history. Requires the `campaigns:write` scope. - [Bulk add ghost handles to a campaign](https://docs.sideshift.app/platform/oauth/campaigns/bulk-add-ghost-handles-to-a-campaign.md): Add 1–500 tracked social handles to any campaign. Existing platform and handle pairs are skipped and reported per row. Requires the `campaigns:write` scope. - [Bulk add ghost videos to a campaign](https://docs.sideshift.app/platform/oauth/campaigns/bulk-add-ghost-videos-to-a-campaign.md): Add 1–500 tracked social videos to any campaign from structured JSON. Platform may be omitted when it can be detected from the URL. Existing video URLs are skipped and reported per row. Requires the `campaigns:write` scope. - [Create a campaign](https://docs.sideshift.app/platform/oauth/campaigns/create-a-campaign.md): Create a campaign and return its `id` (the campaign's programId). Campaigns are active by default so they immediately appear in analytics filters; pass `status: draft` explicitly to keep one unpublished. Optional next step of the create-campaign flow: post the campaign to the marketplace by calling… - [Duplicate a campaign](https://docs.sideshift.app/platform/oauth/campaigns/duplicate-a-campaign.md): Duplicate a campaign, creating a new campaign that copies the source's settings and payment structure. Requires the `campaigns:write` scope. - [Get a campaign](https://docs.sideshift.app/platform/oauth/campaigns/get-a-campaign.md): Get a single campaign by id, including its payment structure and settings. Requires the `campaigns:read` scope. - [Get a campaign](https://docs.sideshift.app/platform/oauth/campaigns/get-a-campaign-1.md): get a campaign. Requires the `campaigns:write` scope. - [Get a campaign's payment structure](https://docs.sideshift.app/platform/oauth/campaigns/get-a-campaigns-payment-structure.md): Get a campaign's payment structure — its payment basis, rates, and bonus configuration. Requires the `campaigns:read` scope. - [List campaigns](https://docs.sideshift.app/platform/oauth/campaigns/list-campaigns.md): List the token tenant's campaigns (programs) and their payment structures, cursor-paginated. Optional `status`/`search` filters. Requires the `campaigns:read` scope. - [Update a campaign](https://docs.sideshift.app/platform/oauth/campaigns/update-a-campaign.md): Update an allowlisted set of fields on a campaign and return the applied changes. Requires the `campaigns:write` scope. - [Validate or import pre-tracking campaign analytics history](https://docs.sideshift.app/platform/oauth/campaigns/validate-or-import-pre-tracking-campaign-analytics-history.md): Validate or import cumulative daily observations captured before SideShift began tracking a post. The service resolves `postId` or `postUrl` only within the OAuth token's company and campaign, derives day-over-day deltas, reconciles the first native SideShift snapshot, writes through the posts Fires… - [Create a company](https://docs.sideshift.app/platform/oauth/companies/create-a-company.md): create a company / agency sub-account. Requires the `settings:write` scope. - [Get invoicing profile](https://docs.sideshift.app/platform/oauth/companies/get-invoicing-profile.md): Read the token tenant's invoicing profile shown on the invoices it issues (company name, logo, email, phone, billing address, tax id/type, brand color). Standalone-company equivalent of GET /agency/billing. Requires the `settings:read` scope. - [Get the agency tree](https://docs.sideshift.app/platform/oauth/companies/get-the-agency-tree.md): the full agency tree for the token tenant's active company. Requires the `settings:read` scope. - [Invite team members](https://docs.sideshift.app/platform/oauth/companies/invite-team-members.md): copy members / send team invites for a company. Requires the `settings:write` scope. - [Join additional agency companies](https://docs.sideshift.app/platform/oauth/companies/join-additional-agency-companies.md): join additional agency companies. Requires the `settings:write` scope. - [List companies](https://docs.sideshift.app/platform/oauth/companies/list-companies.md): list the token tenant's companies with Pro/plan status. Requires the `settings:read` scope. - [Set company niche](https://docs.sideshift.app/platform/oauth/companies/set-company-niche.md): set a company's niche and propagate it to its jobs. Requires the `settings:write` scope. - [Set invoicing signed name](https://docs.sideshift.app/platform/oauth/companies/set-invoicing-signed-name.md): set a company's invoicing signed name. Requires the `settings:write` scope. - [Sync company name and logo](https://docs.sideshift.app/platform/oauth/companies/sync-company-name-and-logo.md): sync company name/logo to programs, jobs, and creator experiences. Requires the `settings:write` scope. - [Update invoicing profile](https://docs.sideshift.app/platform/oauth/companies/update-invoicing-profile.md): Update the token tenant's invoicing profile (company name, email, phone, billing address, tax id/type, brand color) with a best-effort Stripe customer sync. Sandbox-rejected. Requires the `settings:write` scope. - [Cancel a contract](https://docs.sideshift.app/platform/oauth/contracts/cancel-a-contract.md): Cancel a contract and return its updated status. Requires the `contracts:write` scope. - [Create/offer a contract](https://docs.sideshift.app/platform/oauth/contracts/createoffer-a-contract.md): Create one program-linked contract offering for a creator — the UI-equivalent of inviting a creator to a campaign. `companyId` is always the token's tenant (never client-supplied); `programId` must belong to it. Standalone (non-program) contracts and the legacy campaign-creation side-channel are int… - [Get a contract](https://docs.sideshift.app/platform/oauth/contracts/get-a-contract.md): Get a single creator contract by id, including its status and payment terms. Requires the `contracts:read` scope. - [Get a contract preview PDF](https://docs.sideshift.app/platform/oauth/contracts/get-a-contract-preview-pdf.md): Get a contract preview PDF. Requires the `contracts:read` scope. - [Get a contract's content](https://docs.sideshift.app/platform/oauth/contracts/get-a-contracts-content.md): Get a contract's content. Requires the `contracts:read` scope. - [Get a contract's history](https://docs.sideshift.app/platform/oauth/contracts/get-a-contracts-history.md): Get a contract's history. Requires the `contracts:read` scope. - [Get a contract's metrics](https://docs.sideshift.app/platform/oauth/contracts/get-a-contracts-metrics.md): Get a contract's metrics. Requires the `contracts:read` scope. - [Get contract details](https://docs.sideshift.app/platform/oauth/contracts/get-contract-details.md): Get contract details. Requires the `contracts:read` scope. - [List contracts](https://docs.sideshift.app/platform/oauth/contracts/list-contracts.md): List the token tenant's creator contracts, cursor-paginated. Optional `status`/`programId`/`creatorId` filters. Requires the `contracts:read` scope. - [Regenerate a contract](https://docs.sideshift.app/platform/oauth/contracts/regenerate-a-contract.md): Regenerate a contract. Requires the `contracts:write` scope. - [Reject a contract](https://docs.sideshift.app/platform/oauth/contracts/reject-a-contract.md): Reject a contract. Requires the `contracts:write` scope. - [Save a contract signature](https://docs.sideshift.app/platform/oauth/contracts/save-a-contract-signature.md): Save a contract signature. Requires the `contracts:write` scope. - [Update a contract's content](https://docs.sideshift.app/platform/oauth/contracts/update-a-contracts-content.md): Update a contract's content. Requires the `contracts:write` scope. - [Update a contract's payment structure](https://docs.sideshift.app/platform/oauth/contracts/update-a-contracts-payment-structure.md): Update a contract's payment structure. Requires the `contracts:write` scope. - [Update a creator contract](https://docs.sideshift.app/platform/oauth/contracts/update-a-creator-contract.md): Safely update a per-creator contract's recurring base retainer and/or exact posting platforms without replacing the full payment structure or requirements object. Unmentioned terms are preserved. The campaign must use per-creator payment terms. A real change follows the same flow as the dashboard: v… - [Update contract fields](https://docs.sideshift.app/platform/oauth/contracts/update-contract-fields.md): Update contract fields. Requires the `contracts:write` scope. - [Add a conversation member](https://docs.sideshift.app/platform/oauth/conversations/add-a-conversation-member.md): Add a member (a Firebase user/creator id) to the conversation's group channel, as the token tenant. Requires the `messages:write` scope. - [Create a conversation](https://docs.sideshift.app/platform/oauth/conversations/create-a-conversation.md): create a new conversation as the token tenant — a 1:1 creator DM (participantId) or a group conversation (groupName + participantIds). Creates a real channel (external side effect), so sandbox/test grants are rejected. Requires the `messages:write` scope. - [Forward a message](https://docs.sideshift.app/platform/oauth/conversations/forward-a-message.md): Forward a message's content from the source conversation to its other member, as the token tenant. Requires the `messages:write` scope. - [Leave a conversation](https://docs.sideshift.app/platform/oauth/conversations/leave-a-conversation.md): leave the GROUP conversation as the token tenant (removes the company from the channel and the conversation membership; the removal is best-effort — see `removed` in the response). Requires the `messages:write` scope. - [React to a message](https://docs.sideshift.app/platform/oauth/conversations/react-to-a-message.md): add an emoji reaction to a message in the conversation, as the token tenant. Requires the `messages:write` scope. - [Rename a conversation](https://docs.sideshift.app/platform/oauth/conversations/rename-a-conversation.md): rename the conversation's group channel as the token tenant. Requires the `messages:write` scope. - [Remove a creator from a collection](https://docs.sideshift.app/platform/oauth/creator-collections/remove-a-creator-from-a-collection.md): remove a creator from a collection. Requires the `creators:write` scope. - [Update a creator collection](https://docs.sideshift.app/platform/oauth/creator-collections/update-a-creator-collection.md): update a creator collection. Requires the `creators:write` scope. - [Update a creator collection](https://docs.sideshift.app/platform/oauth/creator-collections/update-a-creator-collection-1.md): update a creator collection. Requires the `creators:write` scope. - [Create a campaign invite](https://docs.sideshift.app/platform/oauth/creators/create-a-campaign-invite.md): Creates a shareable program-invite link for the campaign — the product's mechanism for inviting creators to a campaign. Returns a `token` + `link` you share with the creators you want to invite. - [Create a creator collection](https://docs.sideshift.app/platform/oauth/creators/create-a-creator-collection.md): Create a creator collection for the token tenant. Requires the `creators:write` scope. - [Create a creator invite link](https://docs.sideshift.app/platform/oauth/creators/create-a-creator-invite-link.md): create a creator invite link for the token tenant. Requires the `creators:write` scope. - [Get a creator](https://docs.sideshift.app/platform/oauth/creators/get-a-creator.md): The company's view of one creator on its roster (tenant-scoped). - [Get creator notes](https://docs.sideshift.app/platform/oauth/creators/get-creator-notes.md): List the company's private notes for one creator on its roster, newest first. - [List creator collections](https://docs.sideshift.app/platform/oauth/creators/list-creator-collections.md): List the token tenant's creator collections. Requires the `creators:read` scope. - [List creators](https://docs.sideshift.app/platform/oauth/creators/list-creators.md): List the creators associated with the token tenant's campaigns, cursor-paginated. Optional `programId`/`search` filters. Requires the `creators:read` scope. - [Create a Discover calendar host](https://docs.sideshift.app/platform/oauth/discover/create-a-discover-calendar-host.md): create (or relabel) the token tenant's secondary Discover calendar host. Requires the `discover:write` scope. - [Delete Discover offer](https://docs.sideshift.app/platform/oauth/discover/delete-discover-offer.md): Delete the token tenant's Discover offer/listing. Requires the `discover:write` scope. - [Get a Discover lead](https://docs.sideshift.app/platform/oauth/discover/get-a-discover-lead.md): fetch one of the token tenant's qualified Discover lead-form submissions by id. Requires the `discover:read` scope. - [Get a Discover offer](https://docs.sideshift.app/platform/oauth/discover/get-a-discover-offer.md): a single published Discover offer by id. Requires the `discover:read` scope. - [Get Discover offer](https://docs.sideshift.app/platform/oauth/discover/get-discover-offer.md): the token tenant's Discover offer/listing. Requires the `discover:read` scope. - [List Discover leads](https://docs.sideshift.app/platform/oauth/discover/list-discover-leads.md): the token tenant's qualified Discover lead-form submissions (the agency-side inbox). Requires the `discover:read` scope. - [Message a Discover agency](https://docs.sideshift.app/platform/oauth/discover/message-a-discover-agency.md): Send a message to a Discover agency (brand-to-agency outreach); the recipient is another company. Requires the `discover:write` scope. - [Save Discover offer](https://docs.sideshift.app/platform/oauth/discover/save-discover-offer.md): Create or update the token tenant's Discover offer/listing. Requires the `discover:write` scope. - [Send lead status reminders](https://docs.sideshift.app/platform/oauth/discover/send-lead-status-reminders.md): Fan out CRM status-reminder prompts to the token tenant's Discover leads (the agency-inbox send-status-reminders action). Requires the `discover:write` scope. - [Submit a Discover lead](https://docs.sideshift.app/platform/oauth/discover/submit-a-discover-lead.md): Submit a qualified Discover lead-form submission for the token tenant (the agency-side inbox). Requires the `discover:write` scope. - [Update a Discover lead](https://docs.sideshift.app/platform/oauth/discover/update-a-discover-lead.md): Update the status of one of the token tenant's qualified Discover lead-form submissions. Requires the `discover:write` scope. - [Get a dispute](https://docs.sideshift.app/platform/oauth/disputes/get-a-dispute.md): fetch one dispute (token tenant only). Requires the `disputes:read` scope. - [List disputes](https://docs.sideshift.app/platform/oauth/disputes/list-disputes.md): list the token tenant's creator-payment disputes. Requires the `disputes:read` scope. - [Prepare a dispute evidence upload](https://docs.sideshift.app/platform/oauth/disputes/prepare-a-dispute-evidence-upload.md): get signed URLs to upload counter-evidence files for a dispute. Requires the `disputes:write` scope. - [Resolve a dispute](https://docs.sideshift.app/platform/oauth/disputes/resolve-a-dispute.md): resolve a dispute (pay / pay_and_cut / counter_evidence). Requires the `disputes:write` scope. - [Delete a Slack template](https://docs.sideshift.app/platform/oauth/integrations/delete-a-slack-template.md): Delete a Slack workflow template for a company. Requires the `integrations:write` scope. - [Get agency Slack config](https://docs.sideshift.app/platform/oauth/integrations/get-agency-slack-config.md): get Slack config across all agency subaccounts (parent-only). Requires the `integrations:read` scope. - [Get Slack integration](https://docs.sideshift.app/platform/oauth/integrations/get-slack-integration.md): fetch the token tenant's Slack integration (bot token redacted). Requires the `integrations:read` scope. - [List Slack channels](https://docs.sideshift.app/platform/oauth/integrations/list-slack-channels.md): list Slack channels for the token tenant's bot. Requires the `integrations:read` scope. - [List Slack templates](https://docs.sideshift.app/platform/oauth/integrations/list-slack-templates.md): list Slack workflow templates for a company. Requires the `integrations:read` scope. - [Remove subaccount workflows](https://docs.sideshift.app/platform/oauth/integrations/remove-subaccount-workflows.md): remove workflows from a subaccount (parent-only). Requires the `integrations:write` scope. - [Save a Slack channel](https://docs.sideshift.app/platform/oauth/integrations/save-a-slack-channel.md): Save a Slack channel for the token tenant's bot. Requires the `integrations:write` scope. - [Save a Slack template](https://docs.sideshift.app/platform/oauth/integrations/save-a-slack-template.md): Save a Slack workflow template for a company. Requires the `integrations:write` scope. - [Save Slack integration](https://docs.sideshift.app/platform/oauth/integrations/save-slack-integration.md): Save the token tenant's Slack integration. Requires the `integrations:write` scope. - [Start Slack OAuth](https://docs.sideshift.app/platform/oauth/integrations/start-slack-oauth.md): initiate Slack OAuth flow and get authorization URL. Requires the `integrations:write` scope. - [Sync agency Slack config](https://docs.sideshift.app/platform/oauth/integrations/sync-agency-slack-config.md): Sync Slack configuration across all of the agency's subaccounts (parent-only). Requires the `integrations:write` scope. - [Test a Slack workflow](https://docs.sideshift.app/platform/oauth/integrations/test-a-slack-workflow.md): test a Slack/Discord workflow by sending a sample payload. Requires the `integrations:write` scope. - [Create an invite link](https://docs.sideshift.app/platform/oauth/invites/create-an-invite-link.md): Create a campaign/program invite link (`programId` in the body). Returns a `token` + `link`. Single-tenant. Team invites are not yet available — a non-`campaign` type is rejected (400). Scope: creators:write. - [List invite links](https://docs.sideshift.app/platform/oauth/invites/list-invite-links.md): List the token tenant's campaign/program invite links (newest first). Read-only. - [Revoke an invite link](https://docs.sideshift.app/platform/oauth/invites/revoke-an-invite-link.md): Revoke a campaign/program invite link (soft delete — the join flow blocks any non-active invite). Idempotent. A cross-tenant token is reported as 404. - [Create + send an invoice](https://docs.sideshift.app/platform/oauth/invoices/create-+-send-an-invoice.md): Create and email an invoice for the token tenant. **`invoices:write`**, sandbox-rejected (fires real Stripe, payment-provider, and Resend side effects). The payload is validated/normalized and gated (subscription + invoicing availability) server-side. - [Get an invoice](https://docs.sideshift.app/platform/oauth/invoices/get-an-invoice.md): Fetch one invoice scoped to the token tenant. A cross-tenant id is reported as 404. - [Get invoice payment record](https://docs.sideshift.app/platform/oauth/invoices/get-invoice-payment-record.md): Resolve the underlying Stripe or payment-provider payment record for the token tenant's invoice, normalized into a single `payment` object. Requires the `invoices:read` scope. - [List invoices](https://docs.sideshift.app/platform/oauth/invoices/list-invoices.md): List the token tenant's invoices, cursor-paginated. Optional `status`/`customerEmail` filters. - [Refund an invoice](https://docs.sideshift.app/platform/oauth/invoices/refund-an-invoice.md): refund a paid invoice for the token tenant. Requires the `invoices:write` scope. - [Resend an invoice email](https://docs.sideshift.app/platform/oauth/invoices/resend-an-invoice-email.md): (Re)send the invoice email for the token tenant's invoice. **`invoices:write`**, sandbox-rejected (sends a real email via Resend; may provision a Stripe wire intent). Returns the refreshed invoice. - [Send an invoice receipt](https://docs.sideshift.app/platform/oauth/invoices/send-an-invoice-receipt.md): email the paid-invoice receipt to the customer for the token tenant's invoice. Requires the `invoices:write` scope. - [Stop invoice reminders](https://docs.sideshift.app/platform/oauth/invoices/stop-invoice-reminders.md): disable payment-reminder emails for the token tenant's invoice (flips `sendReminders=false`). Requires the `invoices:write` scope. - [Verify an invoice payment](https://docs.sideshift.app/platform/oauth/invoices/verify-an-invoice-payment.md): Confirm/settle the payment state of the token tenant's invoice, idempotently transitioning it to `paid` or `pending`. Requires the `invoices:read` scope. - [Void an invoice](https://docs.sideshift.app/platform/oauth/invoices/void-an-invoice.md): Void an unpaid invoice for the token tenant (cancels the plan + any in-flight Stripe wire, best-effort). **`invoices:write`**, sandbox-rejected. Idempotent — voiding an already-void invoice returns its current state; voiding a paid invoice is `409 conflict`. - [Boost a job](https://docs.sideshift.app/platform/oauth/jobs/boost-a-job.md): Apply Staff Pick (1 credit / $125), Top of Feed (2 credits / $250), or Push (4 credits / $500) to one of the token tenant's jobs. Existing credits are redeemed server-side; when more are needed, the response returns a Stripe checkout URL to buy exactly the shortfall at $125 per credit. Sensitive (ch… - [Create or update a job](https://docs.sideshift.app/platform/oauth/jobs/create-or-update-a-job.md): Create or update a job for the token tenant. Passing `programId` (or `programIds`) links the job to that campaign — the "Post & Get Applications" flow that posts an existing campaign to the marketplace so creators can discover it and apply. Requires the `jobs:write` scope. - [Get a job](https://docs.sideshift.app/platform/oauth/jobs/get-a-job.md): fetch one of the token tenant's jobs by id. Requires the `jobs:read` scope. - [List job duplicate targets](https://docs.sideshift.app/platform/oauth/jobs/list-job-duplicate-targets.md): List companies a job can be duplicated into. Requires the `jobs:read` scope. - [List jobs](https://docs.sideshift.app/platform/oauth/jobs/list-jobs.md): list the token tenant's jobs (newest first). Requires the `jobs:read` scope. - [Repost an expired job](https://docs.sideshift.app/platform/oauth/jobs/repost-an-expired-job.md): Repost an expired job. Requires the `jobs:write` scope. - [Update job status](https://docs.sideshift.app/platform/oauth/jobs/update-job-status.md): Update job status (archive, unarchive, delete). Requires the `jobs:write` scope. - [List conversations](https://docs.sideshift.app/platform/oauth/messages/list-conversations.md): List the token tenant's DM conversations, cursor-paginated. Read-only. - [List messages in a conversation](https://docs.sideshift.app/platform/oauth/messages/list-messages-in-a-conversation.md): List a conversation's messages, cursor-paginated. When the conversation is backed by a DM channel this returns the LIVE two-way thread (both parties' messages, `source: 'live'`); conversations without a connected chat — or a failed upstream read — fall back to the stored mirror (`source: 'stored'`,… - [List messages in a support channel](https://docs.sideshift.app/platform/oauth/messages/list-messages-in-a-support-channel.md): List a support channel's messages — the live two-way thread, cursor-paginated (items always have `source: 'live'`; there is no Firestore fallback for support channels). The channel must belong to the token tenant; a channel owned by another company (or that does not exist) is reported as 404 `not_fo… - [List support channels](https://docs.sideshift.app/platform/oauth/messages/list-support-channels.md): List the token tenant's support channels — the primary employer↔creator conversation type (DM conversations are the other; see `GET /conversations`). Live, cursor-paginated. Returns 404 `not_found` when the tenant has no connected messaging account. - [List the merged conversation inbox](https://docs.sideshift.app/platform/oauth/messages/list-the-merged-conversation-inbox.md): The tenant's merged conversation inbox — support channels (the primary employer↔creator conversation type) and DM conversations, merged by last-message recency. The agent-facing equivalent of the web's merged "Home" inbox. Each item's `type` dictates the follow-up messages read: `support_channel` →… - [Send a message](https://docs.sideshift.app/platform/oauth/messages/send-a-message.md): Send a DM as the token tenant. **`messages:write`**, sandbox-rejected (fires a real DM, best-effort, and persists to Firestore). Provide `conversationId` to post into an existing conversation or `creatorId` to start/continue a creator DM. Returns the new message's id + conversation. - [Authorization endpoint](https://docs.sideshift.app/platform/oauth/oauth-authorization/authorization-endpoint.md): RFC 6749 §4.1 authorization endpoint. Validates the client, redirect URI (exact match), scope, and PKCE challenge (S256 required), parks the request, and redirects the browser to the in-session consent page. On approval the consent step redirects back to `redirect_uri` with `code`, `state`, and `iss… - [Load a consent request](https://docs.sideshift.app/platform/oauth/oauth-authorization/load-a-consent-request.md): In-session (Firebase) endpoint backing the consent page. Returns the client metadata, the human-readable scopes (sensitive ones flagged), and a CSRF token bound to this authorization request. Not an RFC 6749 endpoint — errors use a small `{ error, message }` body. - [Record a consent decision](https://docs.sideshift.app/platform/oauth/oauth-authorization/record-a-consent-decision.md): Records the user's allow/deny decision for the chosen company tenant, mints the authorization code on allow, and returns the redirect target. CSRF token and the selected company are validated. Subscription and capability restrictions are enforced when the issued token calls a resource. - [Authorization-server metadata](https://docs.sideshift.app/platform/oauth/oauth-discovery/authorization-server-metadata.md): RFC 8414 authorization-server metadata. Advertises RFC 9207 issuer identification. - [JSON Web Key Set](https://docs.sideshift.app/platform/oauth/oauth-discovery/json-web-key-set.md): The public signing keys (active + non-revoked stored keys) used to verify access tokens. - [Protected-resource metadata](https://docs.sideshift.app/platform/oauth/oauth-discovery/protected-resource-metadata.md): RFC 9728 protected-resource metadata for MCP/automatic discovery of the authorization server. - [Delete a client](https://docs.sideshift.app/platform/oauth/oauth-registration/delete-a-client.md): RFC 7592 delete. Revokes the client and its tokens. - [Read client configuration](https://docs.sideshift.app/platform/oauth/oauth-registration/read-client-configuration.md): RFC 7592 read. Returns the current client metadata. The `client_secret` and `registration_access_token` are never re-exposed. - [Register a client](https://docs.sideshift.app/platform/oauth/oauth-registration/register-a-client.md): Dynamic Client Registration (RFC 7591). Open, per-IP rate-limited. Returns the `client_id`, a one-time `registration_access_token` (for RFC 7592 management), and — for confidential clients — a one-time `client_secret`. The client starts `pending` and activates on first consent by a SideShift company… - [Update client configuration](https://docs.sideshift.app/platform/oauth/oauth-registration/update-client-configuration.md): RFC 7592 update. Re-validates all metadata (same rules as registration). - [Revoke a token](https://docs.sideshift.app/platform/oauth/oauth-token/revoke-a-token.md): RFC 7009 revocation. Revoking a refresh token revokes its whole family; revoking an access token adds its `jti` to the denylist. Always `200` for a well-formed authenticated request, even if the token is unknown (no existence oracle). - [Token endpoint](https://docs.sideshift.app/platform/oauth/oauth-token/token-endpoint.md): RFC 6749 token endpoint. Supports `authorization_code` (PKCE verifier required), `refresh_token` (rotation + reuse detection), and `client_credentials`. Confidential clients authenticate with HTTP Basic or `client_secret_post`. Access tokens are RFC 9068 `at+jwt`, 1h TTL, audience-bound to the resou… - [Execute contract payouts](https://docs.sideshift.app/platform/oauth/payouts/execute-contract-payouts.md): Execute (or dry-run) payouts for the token tenant's contracts. **Sensitive (`payouts:write`)**: the grant must be non-sandbox and an `Idempotency-Key` is **required** (400 without). Per-contract failures come back as `error` results with HTTP 200. Custom amounts disable continued performance (v1 par… - [Get bonus milestone dates](https://docs.sideshift.app/platform/oauth/payouts/get-bonus-milestone-dates.md): the dates each bonus milestone was crossed for a contract, from daily-snapshot data. Requires the `payouts:read` scope. - [Get payout breakdown](https://docs.sideshift.app/platform/oauth/payouts/get-payout-breakdown.md): payment-breakdown details for a historical (or in-progress) payout of a contract. Requires the `payouts:read` scope. - [Get total-owed summary](https://docs.sideshift.app/platform/oauth/payouts/get-total-owed-summary.md): The aggregate total-owed summary for the token tenant — total owed, cycles, and continued-performance breakdown. Requires the `payouts:read` scope. - [Get wallet + payout stats](https://docs.sideshift.app/platform/oauth/payouts/get-wallet-+-payout-stats.md): Wallet balance and lifetime payout summary for the token's company. - [List payout history](https://docs.sideshift.app/platform/oauth/payouts/list-payout-history.md): Wallet ledger entries (payouts + deposits) for the token's company, cursor-paginated, with an aggregate `summary`. - [List payout-table contracts](https://docs.sideshift.app/platform/oauth/payouts/list-payout-table-contracts.md): The payout-table contract list for the token tenant — each active contract with its owed-this-cycle math and campaign context. Requires the `payouts:read` scope. - [List pending payouts](https://docs.sideshift.app/platform/oauth/payouts/list-pending-payouts.md): Calculated pending/overdue payout amounts for active/expired contracts, cursor-paginated, with an aggregate `summary`. - [Preview a Quick Pay](https://docs.sideshift.app/platform/oauth/payouts/preview-a-quick-pay.md): Preview (dry-run) a Quick Pay for the token tenant — validate the recipient and line items and resolve the payout details before sending. Requires the `quick-pay:read` scope. - [Quick Pay by email](https://docs.sideshift.app/platform/oauth/payouts/quick-pay-by-email.md): Pay anyone by email for the token tenant — an immediate transfer when the recipient already has a SideShift account, else a pending payment held until they sign up. **Sensitive (`payouts:write`)**: non-sandbox + `Idempotency-Key` **required** — it is the sole double-pay guard for Quick Pay. - [Recalculate a payout](https://docs.sideshift.app/platform/oauth/payouts/recalculate-a-payout.md): recompute a single contract's owed-this-cycle transfer row (amount + breakdown) for the token tenant. Requires the `payouts:write` scope. - [Retry a reversed payout](https://docs.sideshift.app/platform/oauth/payouts/retry-a-reversed-payout.md): re-attempt a previously reversed payout. Requires the `payouts:write` scope. - [Send a custom bonus](https://docs.sideshift.app/platform/oauth/payouts/send-a-custom-bonus.md): send a wallet-funded, arbitrary-amount bonus to a creator. Requires the `payouts:write` scope. - [Send a one-time payout](https://docs.sideshift.app/platform/oauth/payouts/send-a-one-time-payout.md): send a wallet-funded, arbitrary-amount one-time payout to a creator. Requires the `payouts:write` scope. - [Set a payout start date](https://docs.sideshift.app/platform/oauth/payouts/set-a-payout-start-date.md): set (or clear) a contract's per-creator payout start date. Requires the `payouts:write` scope. - [Skip a payment cycle](https://docs.sideshift.app/platform/oauth/payouts/skip-a-payment-cycle.md): mark a payment cycle's posts as cycle-skipped on a contract (so they don't count toward owed). Requires the `payouts:write` scope. - ["creators like this typically cost $X–$Y": the contracted (cents/post) + realized (cents/1k views) rate bands for a…](https://docs.sideshift.app/platform/oauth/performance/"creators-like-this-typically-cost-$x–$y":-the-contracted-centspost-+-realized-cents1k-views-rate-bands-for-a….md): "creators like this typically cost $X–$Y": the contracted (cents/post) + realized (cents/1k views) rate bands for a…. Requires the `brand-performance:read` scope. - [an OWN campaign vs its segment×niche cohort median (aggregate context only; no other brand is identifiable)](https://docs.sideshift.app/platform/oauth/performance/an-own-campaign-vs-its-segment×niche-cohort-median-aggregate-context-only;-no-other-brand-is-identifiable.md): an OWN campaign vs its segment×niche cohort median (aggregate context only; no other brand is identifiable). Requires the `brand-performance:read` scope. - [an OWN campaign's delivery-vs-schedule pacing verdict](https://docs.sideshift.app/platform/oauth/performance/an-own-campaigns-delivery-vs-schedule-pacing-verdict.md): an OWN campaign's delivery-vs-schedule pacing verdict. Requires the `brand-performance:read` scope. - [Describe the brand-visible performance metrics](https://docs.sideshift.app/platform/oauth/performance/describe-the-brand-visible-performance-metrics.md): Plain-English definitions (meaning, unit, semantics, caveats) for every metric this surface serves. Call before interpreting numbers. Requires the `brand-performance:read` scope + Performance API provisioning. - [early-warning risk flags across the caller's OWN live contracts (brand-scoped by construction)](https://docs.sideshift.app/platform/oauth/performance/early-warning-risk-flags-across-the-callers-own-live-contracts-brand-scoped-by-construction.md): early-warning risk flags across the caller's OWN live contracts (brand-scoped by construction). Requires the `brand-performance:read` scope. - [Get one creator's relationship with the token company](https://docs.sideshift.app/platform/oauth/performance/get-one-creators-relationship-with-the-token-company.md): "This creator, with us": the token company's own track record with one creator (contracts, outcomes, delivery-vs-commitment) plus segment-scoped platform-context signals (percentile + reliability) for the segments they work in. 404s for a creator the token company has no contracts with (existence ma… - [Get one own campaign's performance health](https://docs.sideshift.app/platform/oauth/performance/get-one-own-campaigns-performance-health.md): One campaign's spend/delivery health (spend to date, burn rate, blended CPM, delivery-vs-commitment, approval latency, on-time rate, live pending-approvals count). 404s for campaigns not owned by the token company (existence masked). Requires the `brand-performance:read` scope + Performance API prov… - [Get one own contract's performance scorecard](https://docs.sideshift.app/platform/oauth/performance/get-one-own-contracts-performance-scorecard.md): One contract's outcome/spend/delivery scorecard (final outcome, attributed spend, activation latency, delivery-vs-commitment), each metric labeled from the registry. 404s for contracts not owned by the token company (existence masked). The internal payout-failure metric is not exposed. Requires the… - [Get performance data freshness](https://docs.sideshift.app/platform/oauth/performance/get-performance-data-freshness.md): When the performance numbers were last computed — nightly run ids, data snapshot times, and the stale alarm. Use to diagnose SCORES_STALE / PARTIAL_RUN warnings. Requires the `brand-performance:read` scope + Performance API provisioning. - [Get the agency portfolio health rollup](https://docs.sideshift.app/platform/oauth/performance/get-the-agency-portfolio-health-rollup.md): A live rollup of every client brand in the caller's agency subtree: per-client campaigns, on-time rate, delivery-vs-commitment, pending contracts and worst-delivering-campaign counts, plus an aggregate. The pre-computed roster grain is unavailable in prod, so this fans out per-client brand-health re… - [Get the company's own campaign-portfolio performance health](https://docs.sideshift.app/platform/oauth/performance/get-the-companys-own-campaign-portfolio-performance-health.md): Spend to date, burn rate, blended CPM, delivery-vs-commitment, approval latency, worst-delivering campaigns, and the live pending-approvals count for the token company's own campaigns ("me" semantics — no id parameter). Nightly-computed; numbers are cost/attention/delivery, never ROI/revenue. Requir… - [List performance attention items for the company's own campaigns](https://docs.sideshift.app/platform/oauth/performance/list-performance-attention-items-for-the-companys-own-campaigns.md): Triage entry point — pending approvals past threshold and delivery shortfalls across the company's own campaigns, each item carrying a suggested follow-up call. Tenant-scoped; no brand id parameter exists. Requires the `brand-performance:read` scope + Performance API provisioning. - [tenant-scoped campaign portfolio context for advisor flows](https://docs.sideshift.app/platform/oauth/performance/tenant-scoped-campaign-portfolio-context-for-advisor-flows.md): tenant-scoped campaign portfolio context for advisor flows. Requires the `brand-performance:read` scope. - [the OWN campaign's per-segment standout creators (recognition framing)](https://docs.sideshift.app/platform/oauth/performance/the-own-campaigns-per-segment-standout-creators-recognition-framing.md): the OWN campaign's per-segment standout creators (recognition framing). Requires the `brand-performance:read` scope. - [Bulk update analytics tags](https://docs.sideshift.app/platform/oauth/posts/bulk-update-analytics-tags.md): bulk add / remove / replace analytics tags across the token tenant's posts. Requires the `posts:write` scope. - [Export posts as CSV](https://docs.sideshift.app/platform/oauth/posts/export-posts-as-csv.md): Returns a CSV of the company's posts (optionally filtered, or restricted to `selectedIds`). Read-only — `posts:read`. Responds `text/csv`. - [Get a post](https://docs.sideshift.app/platform/oauth/posts/get-a-post.md): Get a single tracked post by id, including its latest metrics. Requires the `posts:read` scope. - [Get a post's metrics history](https://docs.sideshift.app/platform/oauth/posts/get-a-posts-metrics-history.md): Daily metric snapshots + growth deltas for a post over a window. - [Get re-scrape status](https://docs.sideshift.app/platform/oauth/posts/get-re-scrape-status.md): Read the status of a queued external re-scrape of a contract's posts for the token tenant. Requires the `posts:read` scope. - [Hide a post from analytics](https://docs.sideshift.app/platform/oauth/posts/hide-a-post-from-analytics.md): hide or unhide a post from analytics for the token tenant. Requires the `posts:write` scope. - [List posts](https://docs.sideshift.app/platform/oauth/posts/list-posts.md): Tracked posts for the token's company, cursor-paginated. Single-tenant — the oauth token is bound to one company, so there is no `?scope=agency` union (unlike the legacy `/api/v1/posts`). - [Re-scrape a contract's posts](https://docs.sideshift.app/platform/oauth/posts/re-scrape-a-contracts-posts.md): Queue a real external re-scrape of a contract's posts for the token tenant. Sensitive — a real outbound side-effect, rejected for sandbox/test grants. Requires the `posts:write` scope. - [Set a post's analytics tags](https://docs.sideshift.app/platform/oauth/posts/set-a-posts-analytics-tags.md): set/add/remove a post's analytics tags for the token tenant. Requires the `posts:write` scope. - [Set a post's approval status](https://docs.sideshift.app/platform/oauth/posts/set-a-posts-approval-status.md): set/clear a post's approval status for the token tenant. Requires the `posts:write` scope. - [Set a post's deletion status](https://docs.sideshift.app/platform/oauth/posts/set-a-posts-deletion-status.md): mark or clear a post's deletion status for the token tenant. Requires the `posts:write` scope. - [Cancel a pending Quick Pay](https://docs.sideshift.app/platform/oauth/quick-pay/cancel-a-pending-quick-pay.md): Cancel a pending Quick Pay or claim-link payment (identified by its ledger entry id) and refund the held amount. Requires the `quick-pay:write` scope. - [Cancel a schedule](https://docs.sideshift.app/platform/oauth/quick-pay/cancel-a-schedule.md): soft-cancel a schedule (status='cancelled'); no future runs fire. Requires the `quick-pay:write` scope. - [Create a Quick Pay claim link](https://docs.sideshift.app/platform/oauth/quick-pay/create-a-quick-pay-claim-link.md): Create a shareable Quick Pay claim link. **Sensitive (`quick-pay:write`)** — moves real money: it debits the company wallet immediately and holds the funds as a pending payment until the link is claimed, or it auto-refunds after 7 days. Sandbox/test grants are rejected. `Idempotency-Key` is **requir… - [Create a quick-pay draft](https://docs.sideshift.app/platform/oauth/quick-pay/create-a-quick-pay-draft.md): Create a pending quick-pay draft (parent-agency only). Requires the `quick-pay:write` scope. - [Create an approval request](https://docs.sideshift.app/platform/oauth/quick-pay/create-an-approval-request.md): Create a pending quick-pay approval request. Requires the `quick-pay:write` scope. - [Edit a pending draft's recipients](https://docs.sideshift.app/platform/oauth/quick-pay/edit-a-pending-drafts-recipients.md): edit a pending draft's recipients. Requires the `quick-pay:write` scope. - [Edit a pending draft's recipients](https://docs.sideshift.app/platform/oauth/quick-pay/edit-a-pending-drafts-recipients-1.md): edit a pending draft's recipients. Requires the `quick-pay:write` scope. - [Get approval config](https://docs.sideshift.app/platform/oauth/quick-pay/get-approval-config.md): read the company's quick-pay approval configuration (or the default when unset). Requires the `quick-pay:read` scope. - [List a company's quick-pay templates](https://docs.sideshift.app/platform/oauth/quick-pay/list-a-companys-quick-pay-templates.md): list a company's quick-pay templates. Requires the `quick-pay:read` scope. - [List a company's quick-pay templates](https://docs.sideshift.app/platform/oauth/quick-pay/list-a-companys-quick-pay-templates-1.md): list a company's quick-pay templates. Requires the `quick-pay:write` scope. - [List active+paused recurring schedules](https://docs.sideshift.app/platform/oauth/quick-pay/list-active+paused-recurring-schedules.md): list active+paused recurring schedules. Requires the `quick-pay:read` scope. - [List active+paused recurring schedules](https://docs.sideshift.app/platform/oauth/quick-pay/list-active+paused-recurring-schedules-1.md): list active+paused recurring schedules. Requires the `quick-pay:write` scope. - [List approval requests](https://docs.sideshift.app/platform/oauth/quick-pay/list-approval-requests.md): list a company's PENDING approval requests. Requires the `quick-pay:read` scope. - [List pending payments](https://docs.sideshift.app/platform/oauth/quick-pay/list-pending-payments.md): List pending payments waiting for an email address, with a net-amount total (the claim-page read). Requires the `quick-pay:read` scope. - [List quick-pay drafts](https://docs.sideshift.app/platform/oauth/quick-pay/list-quick-pay-drafts.md): list pending quick-pay drafts (parent-agency only). Requires the `quick-pay:read` scope. - [List recent recipients](https://docs.sideshift.app/platform/oauth/quick-pay/list-recent-recipients.md): the company's 10 most recent unique quick-pay recipients (rolled up from the wallet ledger). Requires the `quick-pay:read` scope. - [Look up a user by email](https://docs.sideshift.app/platform/oauth/quick-pay/look-up-a-user-by-email.md): check whether a user exists by email and return basic recipient info for the Quick Pay flow. Requires the `quick-pay:read` scope. - [Respond to an approval request](https://docs.sideshift.app/platform/oauth/quick-pay/respond-to-an-approval-request.md): approve or reject a pending approval request. Requires the `quick-pay:write` scope. - [Send a quick-pay draft](https://docs.sideshift.app/platform/oauth/quick-pay/send-a-quick-pay-draft.md): Approve a draft and execute each recipient as a quick pay (one payment per recipient). Requires the `quick-pay:write` scope. - [Update a schedule](https://docs.sideshift.app/platform/oauth/quick-pay/update-a-schedule.md): Partially update a recurring schedule — name, frequency, day, recipients, status, or approval requirement. Requires the `quick-pay:write` scope. - [Update a template's name/recipients](https://docs.sideshift.app/platform/oauth/quick-pay/update-a-templates-namerecipients.md): update a template's name/recipients. Requires the `quick-pay:write` scope. - [Update a template's name/recipients](https://docs.sideshift.app/platform/oauth/quick-pay/update-a-templates-namerecipients-1.md): update a template's name/recipients. Requires the `quick-pay:write` scope. - [Update approval config](https://docs.sideshift.app/platform/oauth/quick-pay/update-approval-config.md): Update the company's quick-pay approval configuration. Requires the `quick-pay:write` scope. - [Get a recruit candidate](https://docs.sideshift.app/platform/oauth/recruit/get-a-recruit-candidate.md): fetch one recruit candidate's full enriched profile and top posts by id. Requires the `recruit:read` scope. - [Get bookmarked recruits](https://docs.sideshift.app/platform/oauth/recruit/get-bookmarked-recruits.md): get bookmarked recruits for a job. Requires the `recruit:read` scope. - [Mint an action token](https://docs.sideshift.app/platform/oauth/recruit/mint-an-action-token.md): mint a short-lived load-more action token. Requires the `recruit:read` scope. - [Search recruit students](https://docs.sideshift.app/platform/oauth/recruit/search-recruit-students.md): search recruit students. Requires the `recruit:read` scope. - [Send a recruit invite](https://docs.sideshift.app/platform/oauth/recruit/send-a-recruit-invite.md): send a recruit invite to a candidate. Requires the `recruit:write` scope. - [Update a recruit bookmark](https://docs.sideshift.app/platform/oauth/recruit/update-a-recruit-bookmark.md): add or remove a recruit bookmark. Requires the `recruit:write` scope. - [Get company settings](https://docs.sideshift.app/platform/oauth/settings/get-company-settings.md): The token tenant's current settings (an allowlisted projection of the company profile). - [Get the company profile](https://docs.sideshift.app/platform/oauth/settings/get-the-company-profile.md): The token tenant's read-only company profile (identity). - [Update company settings](https://docs.sideshift.app/platform/oauth/settings/update-company-settings.md): Update an allowlist of profile/contact/socials/signing fields. Plan, billing, subscription, permissions, credits, and verification fields are never settable (mass-assignment guard); unknown/forbidden keys are ignored. A patch with no allowlisted field is 400. - [Accept a team invite](https://docs.sideshift.app/platform/oauth/team/accept-a-team-invite.md): Accept a team invite. Requires the `team:write` scope. - [Add a team member](https://docs.sideshift.app/platform/oauth/team/add-a-team-member.md): add a user to the company's team. Requires the `team:write` scope. - [List team invites](https://docs.sideshift.app/platform/oauth/team/list-team-invites.md): list the company's pending team invitations. Requires the `team:read` scope. - [List team members](https://docs.sideshift.app/platform/oauth/team/list-team-members.md): list the token tenant's team members and seat usage. Requires the `team:read` scope. - [Preview a team invite](https://docs.sideshift.app/platform/oauth/team/preview-a-team-invite.md): Preview a team invite. Requires the `team:read` scope. - [Remove a team member](https://docs.sideshift.app/platform/oauth/team/remove-a-team-member.md): Remove a user from the company's team. Requires the `team:write` scope. - [Resend a team invite](https://docs.sideshift.app/platform/oauth/team/resend-a-team-invite.md): resend a pending team invitation email. Requires the `team:write` scope. - [Send a team invite](https://docs.sideshift.app/platform/oauth/team/send-a-team-invite.md): Create and send a team-member invitation for the company. Requires the `team:write` scope. - [Update member permissions](https://docs.sideshift.app/platform/oauth/team/update-member-permissions.md): update a team member's permissions and role. Requires the `team:write` scope. - [Get verification](https://docs.sideshift.app/platform/oauth/verifications/get-verification.md): Get one identity verification for the authenticated company, including its current status, profile details, and any actions still required. Requires the `verification:read` scope. - [Delete a video submission](https://docs.sideshift.app/platform/oauth/video-submissions/delete-a-video-submission.md): delete a video submission and the posts it created. Requires the `video-submissions:write` scope. - [List video submissions](https://docs.sideshift.app/platform/oauth/video-submissions/list-video-submissions.md): List creator video submissions for the token tenant's campaigns, filterable by status, contractId, or programId. Requires the `video-submissions:read` scope. - [Review a video submission](https://docs.sideshift.app/platform/oauth/video-submissions/review-a-video-submission.md): record a company review of a video submission. Requires the `video-submissions:write` scope. - [Get agency wallet balance](https://docs.sideshift.app/platform/oauth/wallet/get-agency-wallet-balance.md): aggregated balance + pending payouts across the token tenant's agency (parent + subaccounts). Requires the `wallet:read` scope. - [Get wallet balance](https://docs.sideshift.app/platform/oauth/wallet/get-wallet-balance.md): the token tenant's simple wallet balance (balanceCents + dollars). Requires the `wallet:read` scope. - [Get wallet balance summary](https://docs.sideshift.app/platform/oauth/wallet/get-wallet-balance-summary.md): the token tenant's available + pending wallet balance. Requires the `wallet:read` scope. - [Get wallet ledger](https://docs.sideshift.app/platform/oauth/wallet/get-wallet-ledger.md): the token tenant's enriched wallet ledger (joins profiles / withdrawals / pending-payment claim status). Requires the `wallet:read` scope. - [Transfer wallet balance](https://docs.sideshift.app/platform/oauth/wallet/transfer-wallet-balance.md): Move wallet funds between the token tenant's agency wallet and one of its OWN subaccount wallets (fund a subaccount before payouts, or sweep it back). Sensitive money move — sandbox-rejected, Idempotency-Key required. 400 on insufficient funds in the source wallet. Requires the `wallet:write` scope. - [Quickstart](https://docs.sideshift.app/quickstart.md): Make your first SideShift API request. - [Scraper](https://docs.sideshift.app/scraper/index.md): Profiles, posts, and metrics from seven social platforms through one API. - [TikTok — audience locations](https://docs.sideshift.app/scraper/reference/audience/tiktok-—-audience-locations.md): Returns the creator's audience distribution by country. This request costs **25 credits**. - [Facebook — recent posts (single page)](https://docs.sideshift.app/scraper/reference/posts/facebook-—-recent-posts-single-page.md): Returns the Page/profile's recent content (**~6 posts, single page — no pagination**). Accepts a vanity username, a numeric `profile_id`, or a full profile URL as `username`. 1 credit. - [Instagram — recent posts (paginated)](https://docs.sideshift.app/scraper/reference/posts/instagram-—-recent-posts-paginated.md): Returns one page of the creator's recent Instagram posts/reels (**~12 per page**). 1 credit per page. - [LinkedIn — recent posts](https://docs.sideshift.app/scraper/reference/posts/linkedin-—-recent-posts.md): Returns one page of recent posts from a person or company. 1 credit per page. - [Snapchat — recent Spotlights (single page)](https://docs.sideshift.app/scraper/reference/posts/snapchat-—-recent-spotlights-single-page.md): Returns the creator's recent Spotlight snaps (**~7 posts, single page — no pagination**). 1 credit. - [TikTok — recent posts (paginated)](https://docs.sideshift.app/scraper/reference/posts/tiktok-—-recent-posts-paginated.md): Returns one page of the creator's recent TikTok videos (**~27 per page**). Pass back `next_cursor` as `cursor` for the next page. 1 credit per page. - [X — recent posts](https://docs.sideshift.app/scraper/reference/posts/x-—-recent-posts.md): Returns one page of recent posts from an X account. 1 credit per page. - [YouTube — recent Shorts/videos (paginated)](https://docs.sideshift.app/scraper/reference/posts/youtube-—-recent-shortsvideos-paginated.md): Returns one page of a channel's recent content (**~30 per page**). Accepts a `@handle` or a `UC…` channel id as `username`, plus an optional `contentType` (`shorts` default, or `video`). YouTube posts listings omit `videoUrl` and `comments` (use `/scrape/youtube/post` for those). 1 credit per page. - [Facebook — page info](https://docs.sideshift.app/scraper/reference/profile/facebook-—-page-info.md): Accepts a vanity username, a numeric `profile_id`, or a full profile URL. 1 credit. - [Instagram — profile info](https://docs.sideshift.app/scraper/reference/profile/instagram-—-profile-info.md) - [LinkedIn — profile or company info](https://docs.sideshift.app/scraper/reference/profile/linkedin-—-profile-or-company-info.md): Accepts a profile slug (`jane-doe`) or company identifier (`company/acme`). 1 credit. - [Snapchat — creator info](https://docs.sideshift.app/scraper/reference/profile/snapchat-—-creator-info.md) - [TikTok — profile info](https://docs.sideshift.app/scraper/reference/profile/tiktok-—-profile-info.md): Display name, bio, follower/following counts, profile picture, and post count for a creator. 1 credit. - [X — profile info](https://docs.sideshift.app/scraper/reference/profile/x-—-profile-info.md): Accepts an X handle, with or without `@`. 1 credit. - [YouTube — channel info](https://docs.sideshift.app/scraper/reference/profile/youtube-—-channel-info.md): For YouTube, `follower_count` is the subscriber count; `following_count`, `profile_picture`, and `post_count` are often unavailable. Accepts a `@handle` or a `UC…` channel id. 1 credit. - [Facebook — single video/reel/post by URL](https://docs.sideshift.app/scraper/reference/single-post/facebook-—-single-videoreelpost-by-url.md) - [Instagram — single post/reel by URL](https://docs.sideshift.app/scraper/reference/single-post/instagram-—-single-postreel-by-url.md) - [LinkedIn — single post by URL](https://docs.sideshift.app/scraper/reference/single-post/linkedin-—-single-post-by-url.md) - [Snapchat — single Spotlight by URL](https://docs.sideshift.app/scraper/reference/single-post/snapchat-—-single-spotlight-by-url.md) - [TikTok — single post by URL](https://docs.sideshift.app/scraper/reference/single-post/tiktok-—-single-post-by-url.md) - [X — single post by URL](https://docs.sideshift.app/scraper/reference/single-post/x-—-single-post-by-url.md) - [YouTube — single video/Short by URL](https://docs.sideshift.app/scraper/reference/single-post/youtube-—-single-videoshort-by-url.md): Returns full detail including `comments` and a short-lived `googlevideo.com` `videoUrl` (these are not present in the posts listing). ## OpenAPI Specs - [scraper](https://docs.sideshift.app/openapi/scraper.yaml) - [platform-apikey](https://docs.sideshift.app/openapi/platform-apikey.yaml) - [oauth](https://docs.sideshift.app/openapi/oauth.yaml) - [connect](https://docs.sideshift.app/openapi/connect.yaml) - [openapi](https://docs.sideshift.app/api-reference/openapi.json)