- Projects & Rooms: Create projects, manage rooms, and mint room connection tokens
- Room grants : Persist per-user permissions to manage participant access and available actions
- Project storage: Upload/download project files by path
- Services: Manage project-wide and room-scoped services
- Secrets: Manage key-based and image-pull secrets
- Project settings & integrations: Update project settings, model routing configuration, webhooks, API keys, and OAuth clients
- Shares: Create share links for Rooms
- Mailboxes: Manage mailboxes mapped to Rooms
- Operations: Understand sessions (events/spans/metrics) and create/manage scheduled tasks
- Billing & usage: Get insight into your account balance, transactions, subscriptions, and usage reporting
Getting started
To call the MeshAgent REST API, authenticate with a project API key. The simplest path is:- Set up a Python environment with the MeshAgent SDK installed (requires Python 3.13)
- Use the MeshAgent CLI to create and activate an API key, then store it in a
.envfile - Load the key from
.envand create aMeshagent()client
MeshAgent requires Python 3.13. We recommend usinguv, which manages Python versions, virtual environments, and dependencies automatically. To learn more aboutuvsee the Machine Setup Guide for Python
1. Set up the SDK
Install uv, then create a project and virtual environment with MeshAgent installed:Note: You’ll know your virtual environment is active when you seeTo upgrade dependencies later, run:(.venv)at the start of your terminal prompt. When the environment is activated, you can run commands directly (e.g.meshagent setuporpython main.py). If the environment is not activated, prefix commands withuv run(e.g.uv run meshagent setuporuv run python main.py).
2. Create a new API key and store it in .env
.env file in your project and paste the key value:
3. Create a MeshAgent client
Now we can create the MeshAgent client and use it to do something like list all the rooms in our project.Client configuration
TheMeshagent() client accepts a base_url and token.
base_url: defaults toMESHAGENT_API_URL(defaults to https://api.meshagent.com)token: a bearer token for the Authorization header.- This will default to
MESHAGENT_API_KEY. API keys are scoped to a specific project, so most REST calls will also require aproject_id.
- This will default to
meshagent.api.RoomException on non-2xx responses. Many methods also validate responses with typed models, while others still return plain JSON dicts or lists directly.
Projects, Rooms, and managed agents
Create and manage projects, Rooms, and managed agent identities. Room and agent connection methods return signed connection information for the target runtime.| SDK method | HTTP route | What it does |
|---|---|---|
create_project(name, settings?) | POST /accounts/projects | Create a project. |
list_projects() | GET /accounts/projects | List projects you can access. |
get_project(project_id) | GET /accounts/projects/{project_id} | Fetch one project. |
update_project_settings(project_id, settings) | PUT /accounts/projects/{project_id}/settings | Update project settings. |
get_project_status(project_id) | GET /accounts/projects/{project_id}/status | Check whether the project is enabled. |
get_project_role(project_id) | GET /accounts/projects/{project_id}/role | Get your role in the project. |
add_user_to_project(project_id, user_id, …) | POST /accounts/projects/{project_id}/users | Add a user (optionally admin/developer/can_create_rooms/can_use_llm_proxy). |
remove_user_from_project(project_id, user_id) | DELETE /accounts/projects/{project_id}/users/{user_id} | Remove a user from the project. |
get_users_in_project(project_id) | GET /accounts/projects/{project_id}/users | List users in the project. |
get_user_profile(user_id) | GET /accounts/profiles/{user_id} | Fetch a user profile. |
update_user_profile(user_id, first_name, last_name) | PUT /accounts/profiles/{user_id} | Update basic profile fields. |
create_room(project_id, name, metadata?, permissions?, if_not_exists?) | POST /accounts/projects/{project_id}/rooms | Create a room (supports metadata + optional initial permissions). |
list_rooms(project_id, limit?, offset?, order_by?) | GET /accounts/projects/{project_id}/rooms | List rooms with pagination. |
get_room(project_id, room_name) | GET /accounts/projects/{project_id}/rooms/{room_name} | Fetch a room by name. |
update_room(project_id, room_id, name, metadata?) | PUT /accounts/projects/{project_id}/rooms/{room_id} | Rename/update a room. |
delete_room(project_id, room_id) | DELETE /accounts/projects/{project_id}/rooms/{room_id} | Delete a room. |
connect_room(project_id, room_name) | POST /accounts/projects/{project_id}/rooms/{room_name}/connect | Return RoomConnectionInfo (jwt, room_url, etc.). |
create_agent(project_id, configuration, if_not_exists?, permissions?) | POST /accounts/projects/{project_id}/agents | Create a managed agent identity. |
get_agent(project_id, name) | GET /accounts/projects/{project_id}/agents/{agent_name} | Fetch a managed agent by name. |
update_agent(project_id, agent_id, configuration) | PUT /accounts/projects/{project_id}/agents/{agent_id} | Update a managed agent. |
delete_agent(project_id, agent_id) | DELETE /accounts/projects/{project_id}/agents/{agent_id} | Delete a managed agent. |
connect_agent(project_id, agent) | POST /accounts/projects/{project_id}/agents/{agent_name}/connect | Return AgentConnectionInfo. |
Room grants
Room grants store per-user permissions (ApiScopes) for a specific room. They are persisted as ProjectRoomGrant { room, user_id, permissions } records and are used when minting room connection tokens (see participant tokens).
| SDK method | HTTP route | What it does |
|---|---|---|
create_room_grant(project_id, room_id, user_id, permissions) | POST /accounts/projects/{project_id}/room-grants | Create a grant for a user. |
create_room_grant_by_email(project_id, room_id, email, permissions) | POST /accounts/projects/{project_id}/room-grants | Create a grant targeting a user by email. |
update_room_grant(project_id, room_id, user_id, permissions, grant_id?) | PUT /accounts/projects/{project_id}/room-grants/{grant_id} | Replace permissions for an existing grant. |
delete_room_grant(project_id, room_id, user_id) | DELETE /accounts/projects/{project_id}/room-grants/{room_id}/{user_id} | Delete a grant. |
get_room_grant(project_id, room_id, user_id) | GET /accounts/projects/{project_id}/room-grants/{room_id}/{user_id} | Fetch a grant (ProjectRoomGrant). |
list_room_grants(project_id, limit?, offset?, order_by?) | GET /accounts/projects/{project_id}/room-grants | List all grants in a project. |
list_room_grants_by_user(project_id, user_id, …) | GET /accounts/projects/{project_id}/room-grants/by-user/{user_id} | List rooms a user can access. |
list_room_grants_by_room(project_id, room_name, …) | GET /accounts/projects/{project_id}/room-grants/by-room/{room_name} | List users with access to a room. |
list_unique_rooms_with_grants(project_id, …) | GET /accounts/projects/{project_id}/room-grants/by-room | Count grants per room. |
list_unique_users_with_grants(project_id, …) | GET /accounts/projects/{project_id}/room-grants/by-user | Count grants per user. |
Agent grants
Agent grants store per-user permissions for managed agents. Agent-room grants store the rooms a managed agent can access.| SDK method | HTTP route | What it does |
|---|---|---|
create_agent_grant(project_id, agent_id, user_id, permissions?) | POST /accounts/projects/{project_id}/agent-grants | Create a user grant for an agent. |
create_agent_grant_by_email(project_id, agent_id, email, permissions?) | POST /accounts/projects/{project_id}/agent-grants | Create an agent grant targeting an email. |
update_agent_grant(project_id, agent_id, user_id, permissions?, grant_id?) | PUT /accounts/projects/{project_id}/agent-grants/{grant_id} | Replace permissions for an agent grant. |
delete_agent_grant(project_id, agent_id, user_id) | DELETE /accounts/projects/{project_id}/agent-grants/{agent_id}/{user_id} | Delete a user grant for an agent. |
get_agent_grant(project_id, agent_id, user_id) | GET /accounts/projects/{project_id}/agent-grants/{agent_id}/{user_id} | Fetch an agent grant. |
create_agent_room_grant(project_id, agent_id, room_id, permissions?) | POST /accounts/projects/{project_id}/agent-room-grants | Grant an agent access to a room. |
update_agent_room_grant(project_id, agent_id, room_id, permissions?, grant_id?) | PUT /accounts/projects/{project_id}/agent-room-grants/{grant_id} | Replace an agent-room grant. |
delete_agent_room_grant(project_id, agent_id, room_id) | DELETE /accounts/projects/{project_id}/agent-room-grants/{agent_id}/{room_id} | Delete an agent-room grant. |
get_agent_room_grant(project_id, agent_id, room_id) | GET /accounts/projects/{project_id}/agent-room-grants/{agent_id}/{room_id} | Fetch an agent-room grant. |
list_agent_room_grants_by_agent(project_id, agent_name, limit?, offset?) | GET /accounts/projects/{project_id}/agent-room-grants/by-agent/{agent_name} | List rooms available to an agent. |
list_agent_room_grants_by_room(project_id, room_name, limit?, offset?) | GET /accounts/projects/{project_id}/agent-room-grants/by-room/{room_name} | List agents with access to a room. |
Project Storage
MeshAgent allows you to use both project wide and room specific storage. For room-scoped storage see the Storage API documentation.| SDK method | HTTP route | What it does |
|---|---|---|
upload(project_id, path, data) | POST /projects/{project_id}/storage/upload?path=… | Upload raw bytes (Content-Type: application/octet-stream). |
download(project_id, path) | GET /projects/{project_id}/storage/download?path=… | Download raw bytes. |
Services
Create and manage project and room services. Project services are available to all rooms in your project while room services are scoped to a specific room.Project Services
| SDK method | HTTP route | What it does |
|---|---|---|
create_service(project_id, service) | POST /accounts/projects/{project_id}/services | Create a project-level service. |
create_service_from_template(project_id, template, values) | POST /accounts/projects/{project_id}/services | Create a project service from a template payload. |
list_services(project_id) | GET /accounts/projects/{project_id}/services | List project services. |
get_service(project_id, service_id) | GET /accounts/projects/{project_id}/services/{service_id} | Fetch a service spec. |
update_service(project_id, service_id, service) | PUT /accounts/projects/{project_id}/services/{service_id} | Update a service. |
update_service_from_template(project_id, service_id, template, values) | PUT /accounts/projects/{project_id}/services/{service_id} | Update a service from a template payload. |
delete_service(project_id, service_id) | DELETE /accounts/projects/{project_id}/services/{service_id} | Delete a service. |
Room Services
| SDK method | HTTP route | What it does |
|---|---|---|
create_room_service(project_id, room_name, service) | POST /accounts/projects/{project_id}/rooms/{room_name}/services | Create a room-scoped service. |
create_room_service_from_template(project_id, room_name, template, values) | POST /accounts/projects/{project_id}/rooms/{room_name}/services | Create a room service from a template payload. |
list_room_services(project_id, room_name) | GET /accounts/projects/{project_id}/rooms/{room_name}/services | List room services. |
get_room_service(project_id, room_name, service_id) | GET /accounts/projects/{project_id}/rooms/{room_name}/services/{service_id} | Fetch a room service spec. |
update_room_service(project_id, room_name, service_id, service) | PUT /accounts/projects/{project_id}/rooms/{room_name}/services/{service_id} | Update a room service. |
update_room_service_from_template(project_id, room_name, service_id, template, values) | PUT /accounts/projects/{project_id}/rooms/{room_name}/services/{service_id} | Update a room service from a template payload. |
delete_room_service(project_id, room_name, service_id) | DELETE /accounts/projects/{project_id}/rooms/{room_name}/services/{service_id} | Delete a room service. |
Secrets
Create and manage project, room, and agent secrets. You can configure key based secrets as well as image pull secrets.| SDK method | HTTP route | What it does |
|---|---|---|
create_secret(project_id, secret) | POST /accounts/projects/{project_id}/secrets | Create a secret (PullSecret or KeysSecret). |
create_project_secret(project_id, name, type, data) | POST /accounts/projects/{project_id}/secrets | Create a project secret from raw bytes. |
list_secrets(project_id) | GET /accounts/projects/{project_id}/secrets | List secrets and read values through the compatibility helper. |
list_project_secrets(project_id) | GET /accounts/projects/{project_id}/secrets | List project secret metadata. |
get_project_secret(project_id, secret_id) | GET /accounts/projects/{project_id}/secrets/{secret_id} | Fetch one project secret. |
update_secret(project_id, secret) | PUT /accounts/projects/{project_id}/secrets/{secret_id} | Update a secret. |
update_project_secret(project_id, secret_id, name, type, data) | PUT /accounts/projects/{project_id}/secrets/{secret_id} | Update a project secret from raw bytes. |
delete_secret(project_id, secret_id) | DELETE /accounts/projects/{project_id}/secrets/{secret_id} | Delete a secret. |
delete_project_secret(project_id, secret_id) | DELETE /accounts/projects/{project_id}/secrets/{secret_id} | Delete a project secret. |
create_room_secret(project_id, room_name, data, secret_id?, name?, type?, delegated_to?) | POST /accounts/projects/{project_id}/rooms/{room_name}/secrets | Create a room-scoped secret. |
list_room_secrets(project_id, room_name) | GET /accounts/projects/{project_id}/rooms/{room_name}/secrets | List room secret metadata. |
get_room_secret(project_id, room_name, secret_id, delegated_to?) | GET /accounts/projects/{project_id}/rooms/{room_name}/secrets/{secret_id} | Fetch one room secret. |
update_room_secret(project_id, room_name, secret_id, data, name?, type?, delegated_to?) | PUT /accounts/projects/{project_id}/rooms/{room_name}/secrets/{secret_id} | Update a room secret. |
delete_room_secret(project_id, room_name, secret_id, delegated_to?) | DELETE /accounts/projects/{project_id}/rooms/{room_name}/secrets/{secret_id} | Delete a room secret. |
create_agent_secret(project_id, agent_id, data, secret_id?, name?, type?, delegated_to?) | POST /accounts/projects/{project_id}/agents/{agent_id}/secrets | Create an agent-scoped secret. |
list_agent_secrets(project_id, agent_id) | GET /accounts/projects/{project_id}/agents/{agent_id}/secrets | List agent secret metadata. |
get_agent_secret(project_id, agent_id, secret_id, delegated_to?) | GET /accounts/projects/{project_id}/agents/{agent_id}/secrets/{secret_id} | Fetch one agent secret. |
update_agent_secret(project_id, agent_id, secret_id, data, name?, type?, delegated_to?) | PUT /accounts/projects/{project_id}/agents/{agent_id}/secrets/{secret_id} | Update an agent secret. |
delete_agent_secret(project_id, agent_id, secret_id, delegated_to?) | DELETE /accounts/projects/{project_id}/agents/{agent_id}/secrets/{secret_id} | Delete an agent secret. |
Routes
Create and manage project routes that map domains to rooms, ports, and route specs.| SDK method | HTTP route | What it does |
|---|---|---|
create_route(project_id, spec? or domain, room_name, port) | POST /accounts/projects/{project_id}/routes | Create a route. |
update_route(project_id, domain, spec? or room_name, port) | PUT /accounts/projects/{project_id}/routes/{domain} | Update a route. |
get_route(project_id, domain) | GET /accounts/projects/{project_id}/routes/{domain} | Fetch a route. |
list_routes(project_id, count?, offset?, filter?) | GET /accounts/projects/{project_id}/routes | List project routes. |
list_room_routes(project_id, room_name, count?, offset?, filter?) | GET /accounts/projects/{project_id}/rooms/{room_name}/routes | List routes for a room. |
delete_route(project_id, domain) | DELETE /accounts/projects/{project_id}/routes/{domain} | Delete a route. |
Feeds and subscriptions
Create project feeds, publish messages, and fan them out into room storage through subscriptions.| SDK method | HTTP route | What it does |
|---|---|---|
create_feed(project_id, name, description?, visibility?, paused?, annotations?, message_schema?) | POST /accounts/projects/{project_id}/feeds | Create a feed. |
update_feed(project_id, feed_id, name, description?, paused?, annotations?, message_schema?) | PUT /accounts/projects/{project_id}/feeds/{feed_id} | Update a feed. |
get_feed(project_id, feed_id) | GET /accounts/projects/{project_id}/feeds/{feed_id} | Fetch a feed. |
list_feeds(project_id, count?, offset?, filter?) | GET /accounts/projects/{project_id}/feeds | List project feeds. |
list_room_feeds(project_id, room_name, count?, offset?, filter?) | GET /accounts/projects/{project_id}/rooms/{room_name}/feeds | List feeds visible to a room. |
delete_feed(project_id, feed_id) | DELETE /accounts/projects/{project_id}/feeds/{feed_id} | Delete a feed. |
publish_feed_message(project_id, feed_id, message) | POST /accounts/projects/{project_id}/feeds/{feed_id}/messages | Publish one message. |
publish_feed_batch(project_id, feed_id, messages) | POST /accounts/projects/{project_id}/feeds/{feed_id}/messages/batch | Publish a batch. |
create_feed_subscription(project_id, feed_id, room, path, filename_datetime_format?, annotations?) | POST /accounts/projects/{project_id}/feeds/{feed_id}/subscriptions | Create a subscription. |
update_feed_subscription(project_id, feed_id, subscription_id, filename_datetime_format?, annotations?) | PUT /accounts/projects/{project_id}/feeds/{feed_id}/subscriptions/{subscription_id} | Update a subscription. |
get_feed_subscription(project_id, feed_id, subscription_id) | GET /accounts/projects/{project_id}/feeds/{feed_id}/subscriptions/{subscription_id} | Fetch a subscription. |
list_feed_subscriptions(project_id, feed_id) | GET /accounts/projects/{project_id}/feeds/{feed_id}/subscriptions | List subscriptions. |
delete_feed_subscription(project_id, feed_id, subscription_id) | DELETE /accounts/projects/{project_id}/feeds/{feed_id}/subscriptions/{subscription_id} | Delete a subscription. |
LLM loggers
Create project LLM loggers that copy LLM proxy events into destination feeds. Use these when you need a feed-backed stream of LLM request metadata for processing or analysis.| SDK method | HTTP route | What it does |
|---|---|---|
create_llm_logger(project_id, destination_feed_id, filter_expression, paused?, annotations?) | POST /accounts/projects/{project_id}/llm-loggers | Create an LLM logger. |
update_llm_logger(project_id, logger_id, destination_feed_id, filter_expression, paused?, annotations?) | PUT /accounts/projects/{project_id}/llm-loggers/{logger_id} | Update an LLM logger. |
get_llm_logger(project_id, logger_id) | GET /accounts/projects/{project_id}/llm-loggers/{logger_id} | Fetch an LLM logger. |
list_llm_loggers(project_id) | GET /accounts/projects/{project_id}/llm-loggers | List LLM loggers. |
delete_llm_logger(project_id, logger_id) | DELETE /accounts/projects/{project_id}/llm-loggers/{logger_id} | Delete an LLM logger. |
Registries
Create and manage project-owned image repositories.| SDK method | HTTP route | What it does |
|---|---|---|
create_repository(project_id, repository) | POST /accounts/projects/{project_id}/repositories | Create a project repository. |
update_repository(project_id, repository_id, repository) | PUT /accounts/projects/{project_id}/repositories/{repository_id} | Update a repository. |
get_repository(project_id, repository_id) | GET /accounts/projects/{project_id}/repositories/{repository_id} | Fetch a repository. |
list_repositories(project_id) | GET /accounts/projects/{project_id}/repositories | List repositories. |
delete_repository(project_id, repository_id) | DELETE /accounts/projects/{project_id}/repositories/{repository_id} | Delete a repository. |
create_repository_token(project_id, repository_id, request) | POST /accounts/projects/{project_id}/repositories/{repository_id}/token | Create a repository token. |
Webhooks
| SDK method | HTTP route | What it does |
|---|---|---|
create_webhook(project_id, …) | POST /accounts/projects/{project_id}/webhooks | Create a webhook. |
list_webhooks(project_id) | GET /accounts/projects/{project_id}/webhooks | List webhooks. |
update_webhook(project_id, webhook_id, …) | PUT /accounts/projects/{project_id}/webhooks/{webhook_id} | Update a webhook. |
delete_webhook(project_id, webhook_id) | DELETE /accounts/projects/{project_id}/webhooks/{webhook_id} | Delete a webhook. |
API Keys
| SDK method | HTTP route | What it does |
|---|---|---|
create_api_key(project_id, name, description) | POST /accounts/projects/{project_id}/api-keys | Issue a new API key (returns value once). |
list_api_keys(project_id) | GET /accounts/projects/{project_id}/api-keys | List keys (does not list key value). |
delete_api_key(project_id, id) | DELETE /accounts/projects/{project_id}/api-keys/{id} | Revoke a key. |
OAuth clients
Manage OAuth Clients for connections with other services.| SDK method | HTTP route | What it does |
|---|---|---|
create_oauth_client(project_id, …) | POST /accounts/projects/{project_id}/oauth/clients | Create an OAuth client (includes secret). |
list_oauth_clients(project_id) | GET /accounts/projects/{project_id}/oauth/clients | List OAuth clients. |
get_oauth_client(project_id, client_id) | GET /accounts/projects/{project_id}/oauth/clients/{client_id} | Fetch one client. |
update_oauth_client(project_id, client_id, …) | PUT /accounts/projects/{project_id}/oauth/clients/{client_id} | Update a client. |
delete_oauth_client(project_id, client_id) | DELETE /accounts/projects/{project_id}/oauth/clients/{client_id} | Delete a client. |
External OAuth registrations
Manage project and room external OAuth registrations. These records are separate from project OAuth clients: OAuth clients let your app authenticate users through MeshAgent, while external OAuth registrations connect MeshAgent-managed integrations to external OAuth providers.| SDK method | HTTP route | What it does |
|---|---|---|
create_project_external_oauth_registration(project_id, registration) | POST /accounts/projects/{project_id}/external-oauth | Create a project external OAuth registration. |
update_project_external_oauth_registration(project_id, registration_id, registration) | PUT /accounts/projects/{project_id}/external-oauth/{registration_id} | Update a project external OAuth registration. |
list_project_external_oauth_registrations(project_id) | GET /accounts/projects/{project_id}/external-oauth | List project external OAuth registrations. |
delete_project_external_oauth_registration(project_id, registration_id) | DELETE /accounts/projects/{project_id}/external-oauth/{registration_id} | Delete a project external OAuth registration. |
create_room_external_oauth_registration(project_id, room_name, registration) | POST /accounts/projects/{project_id}/rooms/{room_name}/external-oauth | Create a room external OAuth registration. |
update_room_external_oauth_registration(project_id, room_name, registration_id, registration) | PUT /accounts/projects/{project_id}/rooms/{room_name}/external-oauth/{registration_id} | Update a room external OAuth registration. |
list_room_external_oauth_registrations(project_id, room_name) | GET /accounts/projects/{project_id}/rooms/{room_name}/external-oauth | List room external OAuth registrations. |
delete_room_external_oauth_registration(project_id, room_name, registration_id) | DELETE /accounts/projects/{project_id}/rooms/{room_name}/external-oauth/{registration_id} | Delete a room external OAuth registration. |
Shares
Manage share records for a project.| SDK method | HTTP route | What it does |
|---|---|---|
create_share(project_id, settings?) | POST /accounts/projects/{project_id}/shares | Create a share token. |
list_shares(project_id) | GET /accounts/projects/{project_id}/shares | List shares. |
update_share(project_id, share_id, settings?) | PUT /accounts/projects/{project_id}/shares/{share_id} | Update share settings. |
delete_share(project_id, share_id) | DELETE /accounts/projects/{project_id}/shares/{share_id} | Delete a share. |
Mailboxes
Create and manage mailboxes that can be used by Agents or Rooms.| SDK method | HTTP route | What it does |
|---|---|---|
create_mailbox(project_id, address, room, queue, public?) | POST /accounts/projects/{project_id}/mailboxes | Create a mailbox mapping. |
list_mailboxes(project_id) | GET /accounts/projects/{project_id}/mailboxes | List mailboxes. |
list_room_mailboxes(project_id, room_name) | GET /accounts/projects/{project_id}/rooms/{room_name}/mailboxes | List mailboxes for a room. |
get_mailbox(project_id, address) | GET /accounts/projects/{project_id}/mailboxes/{address} | Get a mailbox. |
update_mailbox(project_id, address, room, queue, public?) | PUT /accounts/projects/{project_id}/mailboxes/{address} | Update mapping. |
delete_mailbox(project_id, address) | DELETE /accounts/projects/{project_id}/mailboxes/{address} | Delete mapping. |
Sessions
Inspect active/recent sessions and fetch diagnostics, or terminate sessions.| SDK method | HTTP route | What it does |
|---|---|---|
list_active_sessions(project_id) | GET /accounts/projects/{project_id}/sessions/active | List active sessions. |
list_recent_sessions(project_id) | GET /accounts/projects/{project_id}/sessions | List recent sessions. |
get_session(project_id, session_id) | GET /accounts/projects/{project_id}/sessions/{session_id} | Fetch session metadata. |
list_session_events(project_id, session_id) | GET /accounts/projects/{project_id}/sessions/{session_id}/events | Session event stream. |
list_session_spans(project_id, session_id) | GET /accounts/projects/{project_id}/sessions/{session_id}/spans | Trace spans. |
list_session_metrics(project_id, session_id) | GET /accounts/projects/{project_id}/sessions/{session_id}/metrics | Metrics data. |
get_session_participant_counts(project_id, session_id) | GET /accounts/projects/{project_id}/sessions/{session_id}/participants | Participant counts. |
list_active_agent_sessions(project_id) | GET /accounts/projects/{project_id}/agents/sessions/active | List active agent sessions. |
list_recent_agent_sessions(project_id, limit?, agent_id?) | GET /accounts/projects/{project_id}/agents/sessions | List recent agent sessions. |
terminate(project_id, session_id) | POST /accounts/projects/{project_id}/sessions/{session_id}/terminate | Terminate a session. |
Scheduled Tasks
Scheduled tasks let you automate room workflows by sending queued messages on a schedule (cron or one-time).| SDK method | HTTP route | What it does |
|---|---|---|
create_scheduled_task(project_id, room_name, …) | POST /accounts/projects/{project_id}/rooms/{room_name}/scheduled-tasks | Create a scheduled task. |
update_scheduled_task(project_id, task_id, …) | PUT /accounts/projects/{project_id}/scheduled-tasks/{task_id} | Update a task. |
delete_scheduled_task(project_id, task_id) | DELETE /accounts/projects/{project_id}/scheduled-tasks/{task_id} | Delete a task. |
list_scheduled_tasks(project_id, room_id?, task_id?, active?, limit?, offset?) | GET /accounts/projects/{project_id}/scheduled-tasks | List tasks with filters. |
list_scheduled_task_runs(project_id, task_id, limit?, offset?) | GET /accounts/projects/{project_id}/scheduled-tasks/{task_id}/runs | List task runs. |
Billing & usage
Checkout balances, transactions, subscriptions, and usage reports.| SDK method | HTTP route | What it does |
|---|---|---|
get_pricing() | GET /pricing | Fetch pricing metadata. |
get_balance(project_id) | GET /accounts/projects/{project_id}/balance | Fetch current balance and auto-recharge config, including the monthly auto-recharge budget. |
get_recent_transactions(project_id) | GET /accounts/projects/{project_id}/transactions | List recent transactions. |
set_auto_recharge(project_id, enabled, amount, threshold, monthly_budget?) | POST /accounts/projects/{project_id}/recharge | Configure auto-recharge and an optional monthly auto-recharge budget. |
get_checkout_url(project_id, success_url, cancel_url) | POST /accounts/projects/{project_id}/subscription | Create subscription checkout; returns checkout_url. |
get_credits_checkout_url(project_id, success_url, cancel_url, quantity) | POST /accounts/projects/{project_id}/credits | Purchase credits checkout; returns checkout_url. |
get_subscription(project_id) | GET /accounts/projects/{project_id}/subscription | Fetch subscription info. |
get_usage(project_id, start?, end?, interval?, report?, users?, room?, provider?, model?, usage_type?) | GET /accounts/projects/{project_id}/usage | Usage reporting with optional filters. |
What’s next?
- Explore the Room API overview to work with live collaborative rooms.
- Review the
ApiScopereference for details on permission shape. - Learn how room connections inherit grants in participant tokens.