second studioDocs llms.txtGet started

Team

One account, many people. Each member has their own API key (so their agent or MCP client shows who they are), a role, and an optional monthly credit cap. Everything anyone makes (brand kits, stored characters, styles, uploads, finished videos, posts) belongs to the account and is shared with the team, with the member who made it recorded on it.

Roles

role can
admin Everything: invite and remove members, mint and revoke keys, approve posts, change account settings, plus all of creator.
manager Everything a creator can, plus run one team: give teammates credit budgets, cap their keys, read the team's audit log. Needs governance (below).
creator Make things (analyze, edit, record, generate, explainers, brand kits, characters) and draft posts.
reviewer Read everything, approve or reject posts, file reports. Cannot create or spend.

Account-level keys from before teams existed keep working: an admin key acts as admin, an agent key as creator.

Invite someone: POST /v1/members (admin)

{ "name": "Urav", "email": "urav@example.com", "role": "creator", "monthlyCreditCap": 500 }

Returns the member, their API key once, and a claimUrl. Send the person the claim link: it shows them the key one time and expires in 72 hours, so the key never passes through chat. They put it in their own MCP client (SECOND_STUDIO_API_KEY) and are up: GET /v1/me shows their name, role and spend. Keys made by an admin are active immediately.

First member: an account that has no members yet may create its first one from any account-level key. It becomes the account's admin. That is how a new customer bootstraps their team on day one.

Member fields: role, email, monthlyCreditCap, monthlyUsdCap, perJobUsdCap, allowedSocialAccounts (accountIds this person may post to), webhookUrl (POSTed a job.finished event when their jobs end).

Spend control

Three caps, all checked before a job starts, from its estimate, with a 402 member_cap that says which cap, what's spent and what the job would cost:

GET /v1/members shows spentThisMonth: { credits, usd } per person; refunds for failed and canceled jobs net out for the same person.

Teams, budgets and audit (governance)

Teams and credit budgets are two separate switches. Accounts created from now on have both on. Accounts created earlier keep exactly their current behavior until we enable one or both for them (ask us); until then the endpoints for that feature answer 403 governance_disabled.

With either on, people can also sign in (through Clerk, with Google, GitHub, Apple or email) to manage the account; agents keep using API keys. A sign-in links to the member with the same verified email. Apps use Clerk with Convex's ConvexProviderWithClerk:

<ClerkProvider publishableKey={CLERK_PUBLISHABLE_KEY}>
  <ConvexProviderWithClerk client={convex} useAuth={useAuth}>
    <App />
  </ConvexProviderWithClerk>
</ClerkProvider>

Teams. Group members and give each team a manager. Admins create, rename and delete teams; naming a manager makes that member a manager of the team. Deleting a team keeps its members on the account, without a team, and revokes the team's budgets.

Invites (teams on). Admins invite anyone, into any team; a manager invites creators and reviewers into their own team. Every invite is in the audit log.

Credit budgets. A budget is a spend limit on the account balance, not extra credits. Give one to a member or a whole team, per month ("period": "month", resets on the 1st, UTC) or in total ("period": "total"). Admins can budget anyone and any team; a manager can budget members of their own team, but not themselves and not the team as a whole. Budgets are checked on the server when a job or post is accepted, in the same step as the charge; going over answers 402 budget_exceeded with the scope (member, team or key), budget, amount spent and cost. Refunds for failed jobs give the budget back.

Key caps. POST /v1/keys/{id}/cap { "creditCap": 200 } sets a monthly credit cap on one API key (null removes it), handy for an agent that should never spend more than a set amount. Admins, or a manager for keys of their team.

Audit log. GET /v1/audit lists who changed what, newest first: governance switched on, team changes, member roles and teams, budgets granted and revoked, key caps, Google sign-in links. Admins see everything; managers see entries about their team.

Your accounts. GET /v1/me/memberships lists the accounts the person behind this key belongs to (through their Google sign-in), with role and team.

Who may change what

Everything is visible to every member. Changing or deleting a brand kit, skill, character or voice is for admins and the member who created it. Removing a member keeps what they made.

Any member except a reviewer can connect a repository and run an index, within their budget and the account's team, key, and monthly caps. Reviewers can read the docs and skills. A private skill is visible to its author and to admins. Deleting a repository is for an admin, the member who connected it, or that team's manager.

Shared library: GET /v1/library

One call that lists what the team can reuse by id: brand kits, stored characters (with sheet URLs), analyzed styles, finished videos and uploads. Each with createdBy. Agents should look here before creating something that may already exist: Urav's character sheet, the brand kit, last week's launch style.

Attribution

memberId (who made it) is on jobs, assets, brand kits, characters, posts and reports; posts also carry decidedBy and decidedAt for the approval. GET /v1/reports shows who filed each one.

Your own provider keys

Approved accounts connect their own Higgsfield and ElevenLabs keys themselves: POST /v1/providers/higgsfield { keyId, secret }, POST /v1/providers/elevenlabs { apiKey } (admin, over TLS; verified with the provider, stored encrypted, never returned; DELETE to disconnect; GET /v1/providers shows what is connected). With your own key, jobs cost the platform fee in credits and the provider bills you. Ask us to enable it on your account.

Through MCP

library, list_members, invite_member, update_member, remove_member, create_member_key, list_keys, revoke_key, list_providers, connect_provider, disconnect_provider. Reviewer keys see every tool but can only run the read-only ones plus approve_post, reject_post and report_issue.

Governance tools (teams or budgets on): list_invites, invite_by_email, create_invite_link, revoke_invite, my_memberships, list_teams, create_team, update_team, delete_team, set_member_team, list_budgets, allocate_budget, revoke_budget, set_key_credit_cap, list_audit. They run through the same permission checks as the REST endpoints.

Agents: this page is also available as Markdown; the whole reference is in llms-full.txt.