curl --request POST \
--url https://app.clipstake.com/api/v1/creator/clips \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"campaign_id": "cmp_8a1d4e2f6b7c4d9e8f0a1b2c3d4e5f60",
"account_id": "acct_1c2d3e4f5a6b4c7d8e9f0a1b2c3d4e5f",
"media_id": "17912345678901234"
}
'{
"id": "clip_5b6c7d8e9f0a4b1c8d2e3f4a5b6c7d8e",
"campaign_id": "cmp_8a1d4e2f6b7c4d9e8f0a1b2c3d4e5f60",
"account_id": "acct_1c2d3e4f5a6b4c7d8e9f0a1b2c3d4e5f",
"platform": "instagram",
"status": "pending",
"review_note": null,
"views": 1200,
"likes": 85,
"comments": 4,
"shares": 2,
"posted_at": "2026-09-18T17:05:00.000Z",
"created_at": "2026-09-18T17:20:00.000Z",
"post_url": "https://www.instagram.com/reel/C9xYz12AbCd/",
"thumbnail_url": "https://cdn.clipstake.example/thumbnails/C9xYz12AbCd.jpg",
"paid_cents": 0
}{
"error": {
"code": "invalid_request",
"message": "An Instagram account takes `media_id`, not `post_url`. List its posts with `GET /accounts/{account_id}/media`.",
"request_id": "6f1c2a9e-4b7d-4c1a-9e2f-3a8b5c7d9e10"
}
}{
"error": {
"code": "unauthorized",
"message": "Provide a valid API key as `Authorization: Bearer cc_live_...`.",
"request_id": "0b7e4d2c-9a1f-4e3b-8c6d-5f2a1b9c7e34"
}
}{
"error": {
"code": "not_found",
"message": "No such campaign.",
"request_id": "3c9a8b7d-2e1f-4a6b-9c8d-7e6f5a4b3c21"
}
}{
"error": {
"code": "conflict",
"message": "This post is already a clip. Each post can be submitted once.",
"request_id": "7a6b5c4d-3e2f-4a1b-8c9d-0e1f2a3b4c5d"
}
}{
"error": {
"code": "submission_refused",
"message": "This is an invite-only campaign. Accept your invite before submitting.",
"request_id": "2d3e4f5a-6b7c-4d8e-9f0a-1b2c3d4e5f6a"
}
}{
"error": {
"code": "rate_limited",
"message": "This Instagram account is near its rate limit. Try again after the time in `Retry-After`.",
"request_id": "8d2e1f3a-6b5c-4d7e-9f8a-1b2c3d4e5f67"
}
}{
"error": {
"code": "internal_error",
"message": "An unexpected error occurred.",
"request_id": "5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c19"
}
}{
"error": {
"code": "unavailable",
"message": "ClipStake is undergoing scheduled maintenance. Try again shortly.",
"request_id": "9e8d7c6b-5a4f-4e3d-8c2b-1a0f9e8d7c6b"
}
}Submit a clip
Submits one of your posts to a campaign. For an Instagram account, send media_id from GET /accounts/{account_id}/media. For an X account, send post_url. The campaign must accept the platform of the account (see platforms on the campaign), or the request returns 422. The campaign runs the same checks as in the ClipStake app. A clip starts as pending.
curl --request POST \
--url https://app.clipstake.com/api/v1/creator/clips \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"campaign_id": "cmp_8a1d4e2f6b7c4d9e8f0a1b2c3d4e5f60",
"account_id": "acct_1c2d3e4f5a6b4c7d8e9f0a1b2c3d4e5f",
"media_id": "17912345678901234"
}
'{
"id": "clip_5b6c7d8e9f0a4b1c8d2e3f4a5b6c7d8e",
"campaign_id": "cmp_8a1d4e2f6b7c4d9e8f0a1b2c3d4e5f60",
"account_id": "acct_1c2d3e4f5a6b4c7d8e9f0a1b2c3d4e5f",
"platform": "instagram",
"status": "pending",
"review_note": null,
"views": 1200,
"likes": 85,
"comments": 4,
"shares": 2,
"posted_at": "2026-09-18T17:05:00.000Z",
"created_at": "2026-09-18T17:20:00.000Z",
"post_url": "https://www.instagram.com/reel/C9xYz12AbCd/",
"thumbnail_url": "https://cdn.clipstake.example/thumbnails/C9xYz12AbCd.jpg",
"paid_cents": 0
}{
"error": {
"code": "invalid_request",
"message": "An Instagram account takes `media_id`, not `post_url`. List its posts with `GET /accounts/{account_id}/media`.",
"request_id": "6f1c2a9e-4b7d-4c1a-9e2f-3a8b5c7d9e10"
}
}{
"error": {
"code": "unauthorized",
"message": "Provide a valid API key as `Authorization: Bearer cc_live_...`.",
"request_id": "0b7e4d2c-9a1f-4e3b-8c6d-5f2a1b9c7e34"
}
}{
"error": {
"code": "not_found",
"message": "No such campaign.",
"request_id": "3c9a8b7d-2e1f-4a6b-9c8d-7e6f5a4b3c21"
}
}{
"error": {
"code": "conflict",
"message": "This post is already a clip. Each post can be submitted once.",
"request_id": "7a6b5c4d-3e2f-4a1b-8c9d-0e1f2a3b4c5d"
}
}{
"error": {
"code": "submission_refused",
"message": "This is an invite-only campaign. Accept your invite before submitting.",
"request_id": "2d3e4f5a-6b7c-4d8e-9f0a-1b2c3d4e5f6a"
}
}{
"error": {
"code": "rate_limited",
"message": "This Instagram account is near its rate limit. Try again after the time in `Retry-After`.",
"request_id": "8d2e1f3a-6b5c-4d7e-9f8a-1b2c3d4e5f67"
}
}{
"error": {
"code": "internal_error",
"message": "An unexpected error occurred.",
"request_id": "5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c19"
}
}{
"error": {
"code": "unavailable",
"message": "ClipStake is undergoing scheduled maintenance. Try again shortly.",
"request_id": "9e8d7c6b-5a4f-4e3d-8c2b-1a0f9e8d7c6b"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Campaign ID. Format: cmp_ followed by 32 lowercase hexadecimal characters.
"cmp_8a1d4e2f6b7c4d9e8f0a1b2c3d4e5f60"
Account ID. Format: acct_ followed by 32 lowercase hexadecimal characters.
"acct_1c2d3e4f5a6b4c7d8e9f0a1b2c3d4e5f"
For an Instagram account: the media_id of the post, from GET /accounts/{account_id}/media. Leave it out for an X account.
1 - 64"17912345678901234"
For an X account: the link to the post, like https://x.com/you/status/123. Leave it out for an Instagram account.
512"https://x.com/northwind/status/1845123456789012345"
Response
Successful response
A clip that you submitted.
Clip ID.
^clip_[0-9a-f]{32}$"clip_5b6c7d8e9f0a4b1c8d2e3f4a5b6c7d8e"
Campaign ID.
^cmp_[0-9a-f]{32}$"cmp_8a1d4e2f6b7c4d9e8f0a1b2c3d4e5f60"
The account that posted the clip. Null for an old clip with no linked account.
^acct_[0-9a-f]{32}$"acct_1c2d3e4f5a6b4c7d8e9f0a1b2c3d4e5f"
The platform: instagram or x. More values can be added. Accept values that you do not know.
"instagram"
pending: the clip waits for review. approved: the clip earns from its views. paid: a payout was released for the clip, and it can still earn. rejected: the clip does not earn; see review_note. not_qualified: the clip does not meet the campaign rules. initial_account_verification: your account must be checked before review. disconnected: you removed the account that posted the clip, so it stopped earning.
pending, approved, rejected, not_qualified, paid, initial_account_verification, disconnected "pending"
Why the clip was rejected, or other notes from the review. Null when there are none.
null
Views on the clip at the last reading.
-9007199254740991 <= x <= 900719925474099148200
Likes on the clip at the last reading.
-9007199254740991 <= x <= 90071992547409912600
Comments on the clip at the last reading.
-9007199254740991 <= x <= 9007199254740991140
Shares of the clip at the last reading.
-9007199254740991 <= x <= 900719925474099195
When you published the post. Null if it is not known.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$"2026-09-18T17:05:00.000Z"
When you submitted the clip.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$"2026-09-18T17:20:00.000Z"
The public link to the post.
"https://www.instagram.com/reel/C9xYz12AbCd/"
A preview image of the clip. Null if there is none. The link can expire.
"https://cdn.clipstake.example/thumbnails/C9xYz12AbCd.jpg"
The amount paid to you for this clip so far, in cents, after the platform fee. 0 when nothing was paid yet.
-9007199254740991 <= x <= 90071992547409910