Submissions
Read the content creators submitted, with engagement, payout state and review history.
2 endpoints, generated from openapi.yaml. New to the API? Start with the Overview.
Bounty campaigns use one endpoint, video campaigns use the other, and the campaign's campaignType tells you which: social is a bounty campaign, clipping and ugc are video campaigns. Call the wrong one and you get an error naming the right one.
Read Reading the numbers before reading a row. tokenReward is not what was paid, and username is not the Airaa username.
https://app.airaa.xyzEvery tool is a POST to /api/ai/mcp/tools/{tool}/execute with arguments wrapped in an args object, authorised with Authorization: Bearer airaa_<key>.
get_bounty_campaign_submissions
List bounty campaign submissions
Which creators submitted to this bounty campaign, and what are they owed?
Bounty campaigns only, the type the product has also called social campaigns or instant tasks. One row per creator, with every task they claimed nested underneath, each carrying its own status, URL and engagement counts. On OFFERS-claim campaigns, creators who were offered a slot but have not submitted yet are included too.
username here is the creator's handle on the posting platform, not their Airaa username.
Arguments
projectCampaignIdstringrequiredThe campaign id, from get_project_campaigns. Must be a bounty campaign (campaignType: "social").
pageintegerPage number, 1-indexed
limitintegerItems per page, max 100
sortByobjectOrder rows by the creator's follower counts, or by when they claimed.
sortOrderobjectSort order
statusByobjectNarrow to submissions in one status.
userIdobjectNarrow to one creator, by their Airaa user id.
Returns
Fields inside result.
submissionsarray of BountySubmissionmetadataMetadataStandard pagination envelope.
campaignTypestringErrors
400An argument is missing or failed validation; the message names the field. Also returned when a required projectId is omitted.401The key is missing or not valid.403The key is valid but you do not administer that community.404No such tool, or no campaign with that id.429Too many requests. Tool execution is limited to 120 calls per minute per user.
Request
curl -X POST https://app.airaa.xyz/api/ai/mcp/tools/get_bounty_campaign_submissions/execute \
-H "Authorization: Bearer $AIRAA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"args": {"projectCampaignId": "c14e7b90-5a23-4f81-b6d7-90e3ac215f42","limit": 10}}'const res = await fetch("https://app.airaa.xyz/api/ai/mcp/tools/get_bounty_campaign_submissions/execute", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AIRAA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"args": {
"projectCampaignId": "c14e7b90-5a23-4f81-b6d7-90e3ac215f42",
"limit": 10
}
}),
});
const { result } = await res.json();import os
import requests
res = requests.post(
"https://app.airaa.xyz/api/ai/mcp/tools/get_bounty_campaign_submissions/execute",
headers={"Authorization": f"Bearer {os.environ['AIRAA_API_KEY']}"},
json={
"args": {
"projectCampaignId": "c14e7b90-5a23-4f81-b6d7-90e3ac215f42",
"limit": 10
}
},
)
res.raise_for_status()
result = res.json()["result"]Response
One row per creator. username is the X handle; userUsername is the Airaa username.
{
"result": {
"campaignType": "social",
"submissions": [
{
"submissionId": "e91c40a8-2b76-4d35-9107-c58a3e60fb27",
"userId": "5e9c1a47-3d20-4b68-9f15-8c7e2a04d3b1",
"userUsername": "marasolace",
"username": "mara_writes",
"name": "Mara S.",
"profileImageUrl": "https://cdn.airaa.xyz/users/mara.jpg",
"profileId": "b47e1f92-0c3d-4a56-91e8-73d0a6f4c218",
"followersCount": 18400,
"viewCount": 41200,
"initialViewCount": 0,
"currentViewCount": 41200,
"deltaViewCount": 41200,
"offerInfo": null,
"tokenAmount": "20.00",
"auraPointsAmount": "150",
"estimatedPayout": "20.00",
"tasks": [
{
"taskId": "48f0d2b7-6a19-4c53-b8e0-71c9a35d6f42",
"submissionId": "e91c40a8-2b76-4d35-9107-c58a3e60fb27",
"taskType": "QUOTE",
"taskUrl": "https://x.com/mara_writes/status/1892047713004556801",
"submissionStatus": "PAID",
"submissionReason": null,
"aiReview": {
"verdict": "pass",
"score": 0.94
},
"claimedAt": "2026-08-11T10:04:00.000Z",
"submittedAt": "2026-08-11T13:47:22.000Z",
"submissionContent": {
"url": "https://x.com/mara_writes/status/1892047713004556801",
"externalId": "1892047713004556801",
"text": "the focus timer finally clicked for me",
"viewCount": 41200,
"replyCount": 38,
"favoriteCount": 612
}
}
]
},
{
"submissionId": "0a7d3f52-9e18-4b60-a4c7-2f36bd0951ec",
"userId": "2c8f45d1-6e93-40a7-b25c-1d3e9f7a6b08",
"userUsername": "devonbuilds",
"username": "devon.codes",
"name": "Devon K.",
"profileImageUrl": "https://cdn.airaa.xyz/users/devon.jpg",
"profileId": "6cf2a8d1-9b47-4e30-8c15-2fa9e70b3d84",
"followersCount": 5120,
"viewCount": 0,
"initialViewCount": 0,
"currentViewCount": 0,
"deltaViewCount": 0,
"offerInfo": {
"offerAmount": "20.00",
"counterOfferAmount": "35.00",
"offerStatus": "BRAND_OFFERED"
},
"tokenAmount": "0",
"auraPointsAmount": "0",
"estimatedPayout": "20.00",
"tasks": [
{
"taskId": "48f0d2b7-6a19-4c53-b8e0-71c9a35d6f42",
"submissionId": "0a7d3f52-9e18-4b60-a4c7-2f36bd0951ec",
"taskType": "QUOTE",
"taskUrl": null,
"submissionStatus": "PENDING",
"submissionReason": null,
"aiReview": {},
"claimedAt": "2026-08-26T08:15:31.000Z",
"submittedAt": null,
"submissionContent": {
"url": null,
"externalId": null,
"text": null,
"viewCount": 0,
"replyCount": 0,
"favoriteCount": 0
}
}
]
}
],
"metadata": {
"page": 1,
"limit": 10,
"totalItems": 56,
"totalPages": 6
}
}
}get_video_campaign_submissions
List video campaign submissions
Which clips were submitted to this video campaign, what did they earn, and what is still owed?
Video campaigns only, both clipping and UGC. One row per clip rather than per creator, so a creator who posted four clips is four rows. This is where the view counts, the payout ledger (submissionActions) and the demographics review live.
The money and view fields do not mean what their names suggest: tokenReward is a configured rate, not an amount paid.
Arguments
projectCampaignIdstringrequiredThe campaign id, from get_project_campaigns. Must be a video campaign (campaignType: "clipping" or "ugc").
pageintegerPage number, 1-indexed
limitintegerItems per page, max 100
platformIdobjectNarrow to clips posted on one platform. Platform ids come back on the campaign's tasks.
statusByobjectNarrow to submissions in one status.
sortByobjectOrder rows by paying views (views), likes, or submission time.
sortOrderobjectSort order
Returns
Fields inside result.
rowsarray of VideoSubmissionbudgetobjectmetadataMetadataStandard pagination envelope.
Errors
400An argument is missing or failed validation; the message names the field. Also returned when a required projectId is omitted.401The key is missing or not valid.403The key is valid but you do not administer that community.404No such tool, or no campaign with that id.429Too many requests. Tool execution is limited to 120 calls per minute per user.
Request
curl -X POST https://app.airaa.xyz/api/ai/mcp/tools/get_video_campaign_submissions/execute \
-H "Authorization: Bearer $AIRAA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"args": {"projectCampaignId": "a7d2f61c-08b5-4e3a-9c14-5f8b73d20e69","sortBy": "views","sortOrder": "DESC","limit": 10}}'const res = await fetch("https://app.airaa.xyz/api/ai/mcp/tools/get_video_campaign_submissions/execute", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AIRAA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"args": {
"projectCampaignId": "a7d2f61c-08b5-4e3a-9c14-5f8b73d20e69",
"sortBy": "views",
"sortOrder": "DESC",
"limit": 10
}
}),
});
const { result } = await res.json();import os
import requests
res = requests.post(
"https://app.airaa.xyz/api/ai/mcp/tools/get_video_campaign_submissions/execute",
headers={"Authorization": f"Bearer {os.environ['AIRAA_API_KEY']}"},
json={
"args": {
"projectCampaignId": "a7d2f61c-08b5-4e3a-9c14-5f8b73d20e69",
"sortBy": "views",
"sortOrder": "DESC",
"limit": 10
}
},
)
res.raise_for_status()
result = res.json()["result"]Response
videoUrl and demographicsVideoUrl are creator-uploaded files on the Airaa CDN: the archived clip, and the creator's screen recording of their audience demographics. Both are private to the brand; do not share the links outside it.
{
"result": {
"rows": [
{
"submissionId": "b52f8c14-70a3-49de-81b6-3c0f7a95e2d8",
"taskId": "7b3e19a2-c845-4d70-9e16-a2f5c80b31d4",
"platformId": "f0a4c927-51d8-4b63-9a72-e8d1c3406b5f",
"platformName": "TikTok",
"platformSlug": "tiktok",
"creatorUserId": "5e9c1a47-3d20-4b68-9f15-8c7e2a04d3b1",
"creatorUsername": "marasolace",
"creatorPhotoUrl": "https://cdn.airaa.xyz/users/mara.jpg",
"followersCount": 18400,
"status": "PAID",
"rejectionReason": null,
"submittedAt": "2026-08-09T18:22:05.000Z",
"expiresAt": "2099-01-01T00:00:00.000Z",
"contentId": "c806b3e9-1d47-4a90-8b23-e5f0742c169b",
"contentUrl": "https://www.tiktok.com/@mara.clips/video/7401882910345",
"contentTitle": "the two-second hook that sold me",
"thumbnailUrl": "https://cdn.airaa.xyz/submissions/b52f8c14/thumb.jpg",
"videoUrl": "https://cdn.airaa.xyz/submissions/b52f8c14/clip.mp4",
"commentCount": 402,
"engagement": {
"views": 312800,
"initialViews": 1200,
"currentViews": 314000,
"deltaViews": 312800,
"likes": 24100,
"comments": 402
},
"estimatedPayout": "0",
"tokenReward": "0",
"auraPointsReward": "400",
"basePaidAmount": "437.92",
"bonusPaidAmount": "50.00",
"totalPaidAmount": "487.92",
"cumulativePaidAmount": "487.92",
"lastPaidAt": "2026-08-25T06:00:11.000Z",
"accruedUnpaid": "0",
"accruedBaseAmount": "0",
"accruedBonusAmount": "0",
"maxPayoutPerClip": 250,
"submissionActions": [
{
"actionType": "MILESTONE_BONUS_PAID",
"amount": "50.00",
"viewsSnapshot": 314000,
"deltaViews": 312800,
"reason": "100k view milestone",
"createdAt": "2026-08-25T06:00:11.000Z"
},
{
"actionType": "PAID",
"amount": "437.92",
"viewsSnapshot": 314000,
"deltaViews": 312800,
"reason": null,
"createdAt": "2026-08-25T06:00:10.000Z"
},
{
"actionType": "APPROVED",
"amount": null,
"viewsSnapshot": 1200,
"deltaViews": 0,
"reason": null,
"createdAt": "2026-08-09T19:40:02.000Z"
}
],
"demographicsVideoUrl": "https://cdn.airaa.xyz/demographics/b52f8c14/proof.mp4",
"demographicsReviewResult": "APPROVED"
},
{
"submissionId": "1f47e0b6-8d92-4a53-b7c0-e51947d3628a",
"taskId": "7b3e19a2-c845-4d70-9e16-a2f5c80b31d4",
"platformId": "f0a4c927-51d8-4b63-9a72-e8d1c3406b5f",
"platformName": "TikTok",
"platformSlug": "tiktok",
"creatorUserId": "2c8f45d1-6e93-40a7-b25c-1d3e9f7a6b08",
"creatorUsername": "devonbuilds",
"creatorPhotoUrl": "https://cdn.airaa.xyz/users/devon.jpg",
"followersCount": 5120,
"status": "APPROVED",
"rejectionReason": null,
"submittedAt": "2026-08-24T11:03:40.000Z",
"expiresAt": null,
"contentId": "4a19f7c3-62b8-4e01-9d75-8f30c4e12ba6",
"contentUrl": "https://www.tiktok.com/@devon.codes/video/7409113277001",
"contentTitle": "3 settings I changed on day one",
"thumbnailUrl": "https://cdn.airaa.xyz/submissions/1f47e0b6/thumb.jpg",
"videoUrl": "https://cdn.airaa.xyz/submissions/1f47e0b6/clip.mp4",
"commentCount": 27,
"engagement": {
"views": 18600,
"initialViews": 400,
"currentViews": 19000,
"deltaViews": 18600,
"likes": 1340,
"comments": 27
},
"estimatedPayout": "26.04",
"tokenReward": "0",
"auraPointsReward": "0",
"basePaidAmount": "0",
"bonusPaidAmount": "0",
"totalPaidAmount": "0",
"cumulativePaidAmount": "0",
"lastPaidAt": null,
"accruedUnpaid": "26.04",
"accruedBaseAmount": "26.04",
"accruedBonusAmount": "0",
"maxPayoutPerClip": 250,
"submissionActions": [
{
"actionType": "APPROVED",
"amount": null,
"viewsSnapshot": 400,
"deltaViews": 0,
"reason": null,
"createdAt": "2026-08-24T12:11:09.000Z"
}
],
"demographicsVideoUrl": null,
"demographicsReviewResult": null
}
],
"budget": {
"remainingPool": "7420.15",
"accruedUnpaid": "612.40"
},
"metadata": {
"page": 1,
"limit": 10,
"totalItems": 128,
"totalPages": 13
}
}
}