One creator can have several attached ghost handles, within one campaign or across
campaigns. Call the operation once per ghost contract with the same
creatorId.
Each ghost contract has one creator assignment. These endpoints do not move a
handle from one real creator to another or merge two existing creator contracts.
Before you start
Use a scoped Platform API key or OAuth access token. Both usehttps://app.sideshift.app/api/oauth/v1. Legacy API keys for /api/v1
cannot call these routes. Your company must have an active subscription.
You need three SideShift IDs:
- Campaign ID: the campaign that contains the ghost handle.
- Ghost contract ID: the
contractIdreturned when that handle was created. - Creator ID: the creator’s user ID, such as an
idreturned by List creators. Do not use a social handle, a contract ID, or an ID from your previous provider.
companyId in the body.
Attach for analytics
x-api-key with Authorization: Bearer YOUR_ACCESS_TOKEN.
Send only one authentication method.
creatorId when you
add the ghost handle
instead of making a separate attachment request.
Convert to a creator contract
Use the same body and authentication with the/convert endpoint and a new
idempotency key:
isGhostHandle: false and contractStatus: "pending".
It uses the campaign’s payment terms. It does not sign or activate the contract,
send an invitation message, or pay the creator. The creator must accept through
the normal platform flow. Normal approval and seat checks apply at activation.
Complete any required brand-owned document fields before conversion. The API
does not accept signatures, payment terms, or arbitrary contract fields in this
request. If the creator already has an active or pending real contract in the
campaign, conversion returns 409 without changing either contract. Use analytics
attachment if you only need the extra handles attributed to that creator.
Existing posts and tracking dates are preserved. Review the campaign’s payment
terms and payout start before activation: conversion does not reset historical
content or create a new tracking period.
Batch migrations and retries
Keep a mapping of your previous provider’s record, campaign ID, ghost contract ID, and creator ID. Process one handle per request and record each successful response.- Use a distinct
Idempotency-Keyfor each operation and ghost contract. Keys must contain 1–200 characters. - After a timeout or
500, retry with the same key, IDs, and body. A completed keyed request returns its original response. - Reusing a key with a different campaign, contract, or body returns
409 idempotency_conflict. - A request still in progress returns
409. Wait before retrying it. ARESOURCE_CHANGEDconflict can be retried with the same request after the campaign or contract change is complete. - Respect
Retry-Afteron429. Process conversions in a campaign sequentially to reduce conflicts from concurrent campaign updates.
Supported contracts
These endpoints support unpaid, active or pending, tracking-only ghost handle contracts with at most 450 posts each. A larger contract is rejected before any write. Contact support for larger migrations. Ghost videos, retired creator contracts, and contracts with payment or acceptance history are not supported. Sandbox credentials cannot make these changes.
See API errors for the standard error envelope.