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.

Base URL
https://app.airaa.xyz

Every 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

POST/api/ai/mcp/tools/get_bounty_campaign_submissions/execute

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

projectCampaignIdstringrequired

The campaign id, from get_project_campaigns. Must be a bounty campaign (campaignType: "social").

pageinteger

Page number, 1-indexed

min 1 · defaults to 1
limitinteger

Items per page, max 100

1 to 100 · defaults to 10
sortByobject

Order rows by the creator's follower counts, or by when they claimed.

sortOrderobject

Sort order

statusByobject

Narrow to submissions in one status.

userIdobject

Narrow to one creator, by their Airaa user id.

Returns

Fields inside result.

submissionsarray of BountySubmission
metadataMetadata

Standard pagination envelope.

campaignTypestring

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_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}}'

Response

One row per creator. username is the X handle; userUsername is the Airaa username.

200
{
  "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

POST/api/ai/mcp/tools/get_video_campaign_submissions/execute

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

projectCampaignIdstringrequired

The campaign id, from get_project_campaigns. Must be a video campaign (campaignType: "clipping" or "ugc").

pageinteger

Page number, 1-indexed

min 1 · defaults to 1
limitinteger

Items per page, max 100

1 to 100 · defaults to 10
platformIdobject

Narrow to clips posted on one platform. Platform ids come back on the campaign's tasks.

statusByobject

Narrow to submissions in one status.

sortByobject

Order rows by paying views (views), likes, or submission time.

sortOrderobject

Sort order

Returns

Fields inside result.

rowsarray of VideoSubmission
budgetobject
metadataMetadata

Standard 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}}'

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.

200
{
  "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
    }
  }
}