Chat

Read a community's creator inbox: the thread list, and the messages inside one thread.

2 endpoints, generated from openapi.yaml. New to the API? Start with the Overview.

These are real direct messages between a brand and its creators. A creator wrote them expecting a conversation with the brand, not an API feed.

The media attachments and videoUrl archives are creator-uploaded files served from the Airaa CDN. Those links are private to the brand and should not be shared or republished.

Both tools are read-only. The API cannot send a message, mark a thread read, or delete anything; those stay in the dashboard. Your key reaches only communities you administer, so it can never read another brand's inbox.

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_chat_threads

List chat threads

POST/api/ai/mcp/tools/get_chat_threads/execute

Who has been messaging this community, and who is waiting on a reply?

One community's chat inbox, the same list the dashboard shows a brand: one thread per creator who has messaged or submitted there. Each thread carries the creator's identity, a preview of the last message, and two counts. Take creatorUserId from a thread here and pass it to get_chat_messages to read the conversation.

projectId is required. This tool only ever reads a community you administer; it never reads the key owner's own creator inbox.

unreadCount is messages the brand has not opened. pendingReviewCount is submissions from that creator awaiting review, not messages at all.

Arguments

projectIdstringrequired

The community whose inbox to read, from list_manageable_projects.

projectCampaignIdstring | null

Only threads with a non-rejected submission in this campaign

searchstring | null

Matches creator name/username, project name and campaign titles

onlyPendingReviewboolean | null

Only threads with submissions awaiting review

pageinteger

Page number, 1-indexed

min 1 · defaults to 1
limitinteger

Threads per page, max 100

1 to 100 · defaults to 20

Returns

Fields inside result.

threadsarray of ChatThread
pageinteger
limitinteger
hasMoreboolean

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_chat_threads/execute \
  -H "Authorization: Bearer $AIRAA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"args": {"projectId": "3f2a9c7e-1b84-4d5a-9e60-7c1af2b83d41","limit": 20}}'

Response

pendingReviewCount is submissions awaiting review, not unread messages. Paginates with page/limit/hasMore rather than a metadata object.

200
{
  "result": {
    "threads": [
      {
        "creatorUserId": "5e9c1a47-3d20-4b68-9f15-8c7e2a04d3b1",
        "projectId": "3f2a9c7e-1b84-4d5a-9e60-7c1af2b83d41",
        "username": "marasolace",
        "userDisplayName": "Mara S.",
        "userPhotoUrl": "https://cdn.airaa.xyz/users/mara.jpg",
        "lastMessagePreview": "sent the second cut, let me know if the hook lands",
        "lastMessageType": "text",
        "lastMessageAt": "2026-08-27T16:42:19.000Z",
        "unreadCount": 2,
        "pendingReviewCount": 1
      },
      {
        "creatorUserId": "2c8f45d1-6e93-40a7-b25c-1d3e9f7a6b08",
        "projectId": "3f2a9c7e-1b84-4d5a-9e60-7c1af2b83d41",
        "username": "devonbuilds",
        "userDisplayName": "Devon K.",
        "userPhotoUrl": "https://cdn.airaa.xyz/users/devon.jpg",
        "lastMessagePreview": "Submission received for Launch week clips",
        "lastMessageType": "system",
        "lastMessageAt": "2026-08-24T11:03:40.000Z",
        "unreadCount": 0,
        "pendingReviewCount": 0
      }
    ],
    "page": 1,
    "limit": 20,
    "hasMore": true
  }
}

get_chat_messages

Read a chat thread

POST/api/ai/mcp/tools/get_chat_messages/execute

What did this creator and the brand actually say to each other?

One creator's thread inside one community, oldest message first. Both projectId and creatorUserId are required; take creatorUserId from get_chat_threads.

This returns a bare array rather than a paginated envelope. Page with the before and after ISO timestamps rather than page and limit offsets: before walks further back through history, after catches up on what arrived since.

Read-only. There is no way to send a message, mark the thread read, or delete anything through the API.

Arguments

projectIdstringrequired

The community the thread belongs to.

creatorUserIdstringrequired

The creator whose thread to read, from get_chat_threads.

projectCampaignIdstring | null

Scopes the lookup to one campaign, for threads that belong to a campaign rather than to the community at large.

limitinteger

Messages per page, max 100

1 to 100 · defaults to 50
beforestring | null

ISO timestamp. Returns only messages older than this.

afterstring | null

ISO timestamp. Returns only messages newer than this.

Returns

Fields inside result.

Array item
idstring
creatorUserIdstring
projectCampaignIdstring | null

Set when the message is campaign-scoped.

campaignTitlestring | null
senderTypeenum

airaa marks an automated system message.

creatorbrandairaa
senderDisplayNamestring | null
senderUsernamestring | null
senderPhotoUrlstring | null
messageTypeenum
textimagevideosystemdraft_submission
contentstring
mediaobject

Attachment. Private to the brand.

videoUrlstring | null

Archived clip on the Airaa CDN, when a submission is linked. Private to the brand.

replyToMessageIdstring | null
replyToMessageChatReply | null

The quoted message, when this one is a reply.

isReadByBrandboolean
isReadByCreatorboolean
createdAtstring

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_chat_messages/execute \
  -H "Authorization: Bearer $AIRAA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"args": {"projectId": "3f2a9c7e-1b84-4d5a-9e60-7c1af2b83d41","creatorUserId": "5e9c1a47-3d20-4b68-9f15-8c7e2a04d3b1","limit": 50}}'

Response

A bare array, oldest first. These are private messages between the brand and the creator; media and videoUrl are creator-uploaded files on the Airaa CDN and should not be shared outside the brand.

200
{
  "result": [
    {
      "id": "9c04b7e2-3a15-4d68-b029-71f5e8c34ab6",
      "creatorUserId": "5e9c1a47-3d20-4b68-9f15-8c7e2a04d3b1",
      "projectCampaignId": "a7d2f61c-08b5-4e3a-9c14-5f8b73d20e69",
      "campaignTitle": "Launch week clips",
      "senderType": "airaa",
      "senderDisplayName": null,
      "senderUsername": null,
      "senderPhotoUrl": null,
      "messageType": "system",
      "content": "Mara S. claimed a TikTok slot on Launch week clips.",
      "media": {},
      "videoUrl": null,
      "replyToMessageId": null,
      "replyToMessage": null,
      "isReadByBrand": true,
      "isReadByCreator": true,
      "createdAt": "2026-08-09T18:20:41.000Z"
    },
    {
      "id": "d17e5f80-64c9-4b23-a05e-8f21c740b93d",
      "creatorUserId": "5e9c1a47-3d20-4b68-9f15-8c7e2a04d3b1",
      "projectCampaignId": "a7d2f61c-08b5-4e3a-9c14-5f8b73d20e69",
      "campaignTitle": "Launch week clips",
      "senderType": "creator",
      "senderDisplayName": "Mara S.",
      "senderUsername": "marasolace",
      "senderPhotoUrl": "https://cdn.airaa.xyz/users/mara.jpg",
      "messageType": "draft_submission",
      "content": "first cut, hook is at 0:02",
      "media": {},
      "videoUrl": "https://cdn.airaa.xyz/submissions/b52f8c14/clip.mp4",
      "replyToMessageId": null,
      "replyToMessage": null,
      "isReadByBrand": true,
      "isReadByCreator": true,
      "createdAt": "2026-08-09T18:22:05.000Z"
    },
    {
      "id": "3b8a24d6-f051-4e97-8c16-2a5d90e7cb48",
      "creatorUserId": "5e9c1a47-3d20-4b68-9f15-8c7e2a04d3b1",
      "projectCampaignId": "a7d2f61c-08b5-4e3a-9c14-5f8b73d20e69",
      "campaignTitle": "Launch week clips",
      "senderType": "brand",
      "senderDisplayName": "Priya R.",
      "senderUsername": "priyanotes",
      "senderPhotoUrl": "https://cdn.airaa.xyz/users/priya.jpg",
      "messageType": "text",
      "content": "hook works, approved.",
      "media": {},
      "videoUrl": null,
      "replyToMessageId": "d17e5f80-64c9-4b23-a05e-8f21c740b93d",
      "replyToMessage": {
        "id": "d17e5f80-64c9-4b23-a05e-8f21c740b93d",
        "senderType": "creator",
        "senderDisplayName": "Mara S.",
        "senderUsername": "marasolace",
        "messageType": "draft_submission",
        "content": "first cut, hook is at 0:02",
        "media": {}
      },
      "isReadByBrand": true,
      "isReadByCreator": true,
      "createdAt": "2026-08-09T19:40:02.000Z"
    }
  ]
}