Docs/API

Overview

Read your campaigns, submissions, members and leaderboards over HTTP or MCP with an airaa_ key.

The Airaa API gives you programmatic access to your own communities: campaigns, creator submissions, engagement, members, leaderboards, payout tokens and the creator inbox.

It is the same set of tools an AI assistant sees when you connect Airaa over MCP. Anything Claude or Cursor can read through the connector, you can read with a single HTTP call.


What you can read

Thirteen tools, grouped the way the endpoint pages are.

AreaTools
Communitieslist_manageable_projects, get_project_info
Campaignsget_project_campaigns, get_campaign_details
Submissionsget_bounty_campaign_submissions, get_video_campaign_submissions
Peopleget_project_members_detailed, get_project_earnings_leaderboard
Accountget_user_info, get_tokens, get_current_datetime
Chatget_chat_threads, get_chat_messages

Each area above has its own page documenting every argument and every response field.


The words this API uses

The product has used more than one name for the same thing. The docs settle on one each, while the wire format keeps the older name in some fields.

TermOn the wireWhat it means
CommunityprojectId, projectThe brand space campaigns and members belong to.
Bounty campaigncampaignType: "social"Discrete tasks: quote, reply, post. Also called social campaigns or instant tasks.
Video campaigncampaignType: "clipping" or "ugc"Short-form video paid per view. Clipping and UGC are one surface here.
CreatoruserId, creatorUserIdSomeone who submits to a campaign.
Chat threadprojectId + creatorUserIdOne conversation, per creator, per community.

So when you see projectId, read "the community id".


Get a key

  1. Open the Airaa dashboard.
  2. Go to Profile then API key.
  3. Create a key. It looks like airaa_00000000-0000-0000-0000-000000000000.

Your key acts as you. It can only reach communities where you are already an admin or a moderator, so it can never see another brand's data. You can rotate it whenever you want.


Your first call

Every endpoint is a POST to the same shape, with arguments wrapped in an args object.

curl -X POST https://app.airaa.xyz/api/ai/mcp/tools/list_manageable_projects/execute \
  -H "Authorization: Bearer $AIRAA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"args": {}}'
{
  "result": {
    "projects": [
      {
        "projectId": "3f2a9c7e-1b84-4d5a-9e60-7c1af2b83d41",
        "slug": "lumenlabs",
        "name": "Lumen Labs",
        "role": "ADMIN"
      }
    ]
  }
}

Successful responses always return a single result key.


Connect an agent

Claude Code, Claude Desktop and Cursor speak MCP natively, so they pick the tools up with no code.

claude mcp add --transport http --scope user airaa \
  https://app.airaa.xyz/api/mcp \
  --header "Authorization: Bearer airaa_<your-key>"

For editors that use a JSON config file:

{
  "mcpServers": {
    "airaa": {
      "type": "http",
      "url": "https://app.airaa.xyz/api/mcp",
      "headers": {
        "Authorization": "Bearer airaa_<your-key>"
      }
    }
  }
}

Then ask in plain language: "Who earned the most in my community this month?"


Choosing a community

Most tools need a projectId, which is the community id. If you do not already have one, call list_manageable_projects first and use an id from that response.

  • No results means the key cannot reach any community data.
  • One result means you can use it directly.
  • Several results means you pick the one you want by name, slug or projectId.

Passing a projectId you do not administer returns 403. Omitting a required one returns 400.

projectId is required by get_project_info, get_project_campaigns, get_project_members_detailed, get_project_earnings_leaderboard, get_chat_threads and get_chat_messages. On get_tokens it is optional and narrows the result to one community's token.


Pagination

Most paginated tools take page (starting at 1) and limit (1 to 100). What comes back alongside the rows differs per tool, so check which shape you are dealing with before writing a pager.

ShapeTools
metadata with page, limit, totalItems, totalPagesget_bounty_campaign_submissions, get_video_campaign_submissions, get_project_earnings_leaderboard
counts with live, draft, ended, spentget_project_campaigns
page, limit, hasMore at the top levelget_chat_threads
A bare array, no envelope at allget_project_members_detailed, get_chat_messages

With a bare array, nothing in the response tells you whether more pages exist. Page until a request returns fewer rows than limit.

get_chat_messages does not page by offset at all. It takes before and after as ISO timestamps: before walks further back through the thread, after catches up on what has arrived since.


Errors

StatusMeaning
400An argument is missing or failed validation. The message names the field.
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.
405Execute endpoints accept POST only.
429Too many requests. Tool execution is limited to 120 calls per minute.
500An id argument was not a valid UUID.

Reference

Full request and response schemas for all thirteen tools, with examples:

First, what the money and view fields actually mean

Read the endpoint reference