Yapper API
Team-scoped API for Yapper generation, assets, credits, and MCP clients.
The Yapper Public API lets you drive Yapper's media generation from your own code. API keys are scoped to a team and spend that team's workspace credits — the same balance the team uses inside the Yapper app.
Get your API key: Open Account → API, create a key, and save the secret immediately. The full secret is only shown once.
Status: live.
What's live today
| Endpoint | Purpose |
|---|---|
POST /api/v1/processes | Start a media generation process |
GET /api/v1/processes | List team processes |
GET /api/v1/processes/{processId} | Poll a process |
GET /api/v1/assets | List normalized team assets |
GET /api/v1/assets/{assetId} | Fetch one asset |
POST /api/v1/assets/import | Import an external image, video, or audio URL |
POST /api/v1/assets/uploads | Create a signed upload for a local file |
GET /api/v1/models | List public-safe model metadata |
GET /api/v1/credits | Read shared team credits |
GET /api/v1/usage | Read team and acting-member usage state |
GET /api/v1/usage/breakdown | Credit spend by model and source over time |
GET /api/v1/usage/cycle | This billing cycle's credits and the next refill |
GET /api/v1/usage/agent | Included agent allowance and usage by agent model |
GET /api/v1/usage/ledger | Individual credit charges and refunds |
GET /api/v1/usage/sessions | Sessions with their all-time spend |
GET /api/v1/usage/members | Every member's spend (owner or admin keys) |
GET /api/v1/usage/storage | Stored bytes and asset counts by type |
GET /api/v1/me | The connected team and your role in it |
GET /api/v1/members | Team members with their roles |
Usage breakdowns
GET /api/v1/usage/breakdown returns the same figures as the Credit Spend
card on the account usage page, net of refunds.
range:week,month(default), orquarterreturn one bucket per UTC day.yearreturns the last 12 months andallreturns every month since the first with spend.memberIds: comma-separated user ids, up to 30. Omit it for the whole workspace. Your own id is always allowed. Other members need an owner or admin key.source: one of the sources below. The figures cover only that source, split by model whenmodelsAvailableistrue.sessionId: one session's spend. Any key may read it. It cannot be combined withmemberIds.
Each response carries totals (net credits, creditsSpent,
creditsRefunded, runs, refunds), one entry per bucket with byModel and
bySource, and ranked models and sources. Sources are web, ios,
agent, agent-chat, api, and mcp.
GET /api/v1/usage/storage returns live bytes and assetCount, byType
(image, video, audio, file, document), and trashed items that have not been
purged yet. Pass memberId for the assets one member created, under the same
owner or admin rule.
Both return usage_breakdown_unavailable (409) until the workspace's usage
history has been indexed.
The rest of the usage page
Every card on the account usage page has an endpoint under the usage:read
scope.
| Endpoint | Card | Returns |
|---|---|---|
GET /api/v1/usage/cycle | Workspace Credits | The billing period, credits spent in it, share remaining, and the next refill |
GET /api/v1/usage/agent | Agent Usage | Included allowance, pay-as-you-go overflow, and usage by agent model |
GET /api/v1/usage/ledger | Credit Log | Individual charges and refunds, newest first |
GET /api/v1/usage/sessions | Sessions | Sessions with their all-time spend, runs, and top model |
GET /api/v1/usage/members | Member Spending | Every member's spend in a range, with their monthly cap |
GET /api/v1/usage/ledger takes range (default month) or
createdAfter/createdBefore, plus memberIds, sessionId, and source
(api or mcp). GET /api/v1/usage/sessions takes sort (spend, runs, or
newest) and memberId. Both page with limit and cursor like the other
list endpoints.
Figures that name who spent are for team owners and admins:
/usage/members, other members' /usage/ledger entries, and contributors
on /usage/sessions. Any other key reads its own by passing actor.userId
from GET /api/v1/me as memberIds or memberId. Session totals are open to
every key.
/usage/sessions and /usage/members return usage_breakdown_unavailable
(409) until the workspace's usage history has been indexed.
MCP
| Hosted connector | https://yapper.so/mcp/connector |
Base URL and auth
GET https://yapper.so/api/v1/credits
Authorization: Bearer yap_live_...API keys are created in Account → API.
Machine-readable docs
- OpenAPI 3.1:
/api/v1/openapi.json - AI index:
/api/v1/llms.txt - Full AI context:
/api/v1/llms-full.txt
Error shape
Every error uses the same envelope:
{
"error": {
"code": "insufficient_credits",
"message": "This team does not have enough credits to start the process.",
"requestId": "req_..."
}
}