Credentials and account protection
Separate browser confirmation, project execution and owner automation.
Three credentials serve different jobs: a browser login opens the company workspace, a Model API key authorizes inference, and an owner-managed Partner token authorizes provisioning. They are not interchangeable.
Request authentication
OpenAI-compatible calls use a bearer header:
Authorization: Bearer mg_live_...
Content-Type: application/json
For Anthropic Messages, the native headers are also accepted:
x-api-key: mg_live_...
anthropic-version: 2023-06-01
Content-Type: application/json
Request:
curl https://api.b2b-llm.com/v1/models \
-H "Authorization: Bearer $B2B_API_KEY"
Response, with an empty catalog shown only as a structural example:
{"object":"list","data":[]}
Who a request represents
A long-lived credential retains its assigned user identity. That user's status, API IP restrictions and per-user ceilings apply; the company remains responsible for billing. A shared project key selected in Playground instead produces a short-lived browser credential bound to the signed-in employee. Group execution permission is required, and the employee's personal restrictions remain effective. Selecting an owner's project key does not borrow the owner's financial visibility.
Reusable secrets belonging to another member are not exposed to project developers. Owner/organization administrator credential management remains separate from permission to use Playground. Use a dedicated application credential for server integrations and durable batch/async work; temporary browser sessions are foreground-only.
Authenticator confirmation
TOTP enrollment uses six-digit, 30-second authenticator codes. Sensitive workspace actions accept a recent successful second-factor confirmation for 60 minutes by default. That confirmation interval is not the lifetime of an individual code. The pending confirmation form has its own short expiry, and codes cannot be replayed.
The organization can require an authenticator for members. Recovery codes are single-use and shown only when generated. Changes to security credentials or policy invalidate stale browser sessions. Model API requests do not ask applications to submit authenticator codes.
Sessions and network policy
Default browser login limits are 12 hours of inactivity and seven days absolute age; browser cookie behavior can end a session sooner. An expired login produces an authentication prompt. A stale page security token requires refresh. Failed mutations are not automatically replayed after login.
Personal and company API allowlists both apply when configured. Add the actual outbound IPv4/IPv6 address or CIDR, including NAT egress. Login allowlists are separate. Keep production secrets in a protected secret store, rotate exposed values, and never include bearer headers in support attachments.
Staff changes and shared integrations
Use Team for managed employee accounts. Account role and project role are separate decisions: company billing can inspect the company wallet without automatically joining a project, while a project developer can execute permitted requests without seeing company finance. A company administrator manages ordinary employees, not the owner, a fellow administrator or themselves. Only the owner appoints company administrators, changes account roles and edits company-wide security policy.
Every sensitive action first presents its current impact. Review the account, the role or project change and any affected credentials, then confirm. If another manager or the employee changes the state before confirmation, the operation stops without applying part of the change. Reload Team and inspect Activity log rather than repeating an uncertain network submission. The same second-factor freshness interval described above applies to these actions.
Deactivate account retains the employee record and email address, their support conversations, request attribution and accounting. It blocks access, revokes project grants and invalidates the employee's sessions and credentials. The deactivated archive is searchable and paginated. Invite again creates a fresh invitation and password; choose the intended role explicitly. Previously revoked grants and keys stay revoked after acceptance and must be replaced or granted separately. Freeze is temporary suspension of an active member; Unfreeze does not recreate revoked secrets. Team cannot lift an independent platform restriction. A frozen record from before restoration provenance was recorded needs platform review first.
A key assigned to the departing employee might also serve teammates or a server integration. Before deactivation, Hand over shared credentials can assign the non-revoked set to another active company member who can execute in every affected project. This action rotates all affected secrets. Install replacements through the separately permissioned API Keys screen; do not assume old application configuration will continue working. Key identifiers, spending limits and accumulated charges are retained, and historical requests keep their original attribution. There is no automatic transfer to a generic service account.
Bulk freeze or deactivation is limited to 50 selected accounts and uses one confirmation for the entire set. One stale or unauthorized selection prevents the whole batch. Company-security and credential changes are recorded without exposing passwords or tokens in the activity view. Cached authorization may remain effective briefly within the configured cache interval, and requests already running are not retroactively cancelled.
A change of the legal/billing owner is not a Team role edit. The current owner can open Company → Prepare ownership-change request, review the prefilled Support message and submit it. Merely opening that form changes nothing. Ownership, funds and historical documents require a separate authorized review and transfer process; there is no automatic wallet transfer.
Project quota operations
Treat throughput and budget controls as distinct layers. An RPM ceiling counts requests over time; a concurrency ceiling bounds simultaneous work. The credential's usage quota and its project's usage quota both apply alongside the company's available funds. A zero setting disables that layer only.
Usage Limit, USD measures the running valuation counter. It does not compare against the lifetime billing total. A custodian may override the project's valuation basis or multiplier when authorized; the resulting amount contributes to both counters without a second debit from the corporate wallet.
On the project page, Reset usage belongs to the company owner and uses the standard recent-security confirmation. Credential quota resets remain with authorized key managers. Each operation resets only its own counter, preserving the other layer, balances and accounting history. The interface reports the remaining allowance and UTC reset timestamp.
Allowance updates follow periodic settlement rather than advance reservation. Work already admitted may exceed a ceiling, and a request completing after a reset contributes to the new interval. Merely viewing or executing through a shared credential does not grant quota-management permission.
Dedicated Images permission
The Business Images tab issues a separate short mg_image_ permission bound to the actual employee, session, project key and API profile. Its scopes are read, one sealed create or one-operation download retry. Accepted jobs retain an actor identity, not a reusable credential, and require fresh dispatch permission. The company secret is never exposed. This exception does not authorize generic async/Batch with the old browser sessions.