# FullsendAI > FullsendAI is an AI workspace where agents get their own computer: each agent works in an isolated cloud box with a real desktop, a browser, a terminal and files, which you can watch live and take control of at any time. Any AI model works through one API key (OpenAI- and Anthropic-compatible, models hosted in the US, billed per token), and one prepaid balance pays for AI tokens and box time. Point any OpenAI or Anthropic SDK (or Claude Code, Cursor, Cline and other agents) at https://fullsendai.com/v1 and use a FullsendAI key. ## The workspace - Chat with an agent at https://fullsendai.com/chat; pick any model, switch between messages. - Boxes: isolated machines with a desktop, browser, terminal and files. Take control, point at things, copy and paste, move files, sound, rewind and recording. Agents can run several boxes at once. - Workspaces are temporary (start clean), persistent (files saved encrypted, box sleeps when idle) or always on. - Boxes run in the location nearest you, chosen automatically. - Pricing: plans from $0 with usage included; boxes billed per second while they run (one-minute minimum); persistent and always-on boxes have a monthly fee; dedicated servers monthly or hourly. Every price: https://fullsendai.com/pricing - Base URL (OpenAI SDKs): https://fullsendai.com/v1 - Base URL (Anthropic SDKs, Claude Code): https://fullsendai.com - Auth: `Authorization: Bearer fs_live_…` or `x-api-key: fs_live_…` - Every response has an `x-request-id` header (also in error bodies); quote it to support. - OpenAPI 3.1 spec: https://fullsendai.com/openapi.json ## Endpoints - POST /v1/chat/completions: OpenAI chat completions, streaming, tools, images, reasoning_effort, prompt caching (cached input is cheaper) - POST /v1/responses: OpenAI Responses API on every model (Codex CLI, the Agents SDK): stateless, streaming, function and freeform tools, reasoning summaries - POST /v1/messages: Anthropic Messages API on every model: streaming, tools, images, PDFs, cache_control, extended thinking - POST /v1/messages/count_tokens: input token estimate - POST /v1/embeddings: OpenAI embeddings on embedding models - POST /v1/rerank: Cohere/Jina-style reranking on reranker models - GET /v1/models: live models with kind (chat, embedding, rerank), context length and prices per 1M tokens - GET /v1/key: the calling key's limits, usage and the account balance ## Docs - [Getting started](https://fullsendai.com/docs/getting-started): sign up, start a chat, watch the agent work - [The agent's computer](https://fullsendai.com/docs/computer): desktop, browser, terminal, taking control, rewind - [Workspaces](https://fullsendai.com/docs/workspaces): temporary, persistent and always-on - [Dedicated servers](https://fullsendai.com/docs/dedicated-servers): sizes, monthly or hourly - [API quickstart](https://fullsendai.com/docs): first call in a minute - [OpenAI compatibility](https://fullsendai.com/docs/openai): chat completions with OpenAI's SDKs - [Anthropic compatibility](https://fullsendai.com/docs/anthropic): the Messages API, Claude Code - [Authentication](https://fullsendai.com/docs/authentication): keys, limits and locks - [Models](https://fullsendai.com/docs/models): every live model and its price - [Embeddings](https://fullsendai.com/docs/embeddings): POST /v1/embeddings - [Rerank](https://fullsendai.com/docs/rerank): POST /v1/rerank - [Key info and balance](https://fullsendai.com/docs/key): GET /v1/key - [Reliability and routing](https://fullsendai.com/docs/routing): failover, precision guarantee, fullsend/auto - [Errors](https://fullsendai.com/docs/errors): error codes and what to do - [Pricing and billing](https://fullsendai.com/docs/billing): plans, allowance, box time, monthly fees, top-ups - [Coding agents](https://fullsendai.com/docs/agents): Claude Code, Cursor, Cline and others ## Optional - [Full API reference for LLMs](https://fullsendai.com/llms-full.txt) - [Pricing](https://fullsendai.com/pricing) - [Benchmarks](https://fullsendai.com/docs/benchmarks) - [FullsendAI vs OpenRouter](https://fullsendai.com/compare/openrouter.md) - [FullsendAI vs DeepInfra](https://fullsendai.com/compare/deepinfra.md) - [DeepInfra vs OpenRouter](https://fullsendai.com/compare/deepinfra-vs-openrouter.md) - [OpenRouter vs Requesty vs Portkey vs FullsendAI](https://fullsendai.com/compare/llm-gateways.md) - [Together vs Fireworks vs Groq](https://fullsendai.com/compare/together-fireworks-groq.md) - [Best OpenRouter alternatives (2026)](https://fullsendai.com/alternatives/openrouter.md) - [Best Groq alternatives (2026)](https://fullsendai.com/alternatives/groq.md) - [LLM API price comparison](https://fullsendai.com/pricing/llm-api-price-comparison.md) - [How we compare providers](https://fullsendai.com/compare/methodology.md) ## Plans | plan | price a month | usage included a month | boxes at once | |---|---|---|---| | Pay as you go | $0 | $0 | 5 | | Team | $39 per seat (min 2) | $0 per seat | 25 + 10 per seat | Enterprise: custom limits and dedicated servers; contact sales. ## Box prices Boxes run in the location nearest the customer and are billed per second while running (one-minute minimum), from the plan allowance first, then the balance. Persistent boxes add a flat monthly fee; always-on boxes are one flat monthly price. Exact prices for a visitor: https://fullsendai.com/pricing | size | per hour, from | always on, per month, from | |---|---|---| | 2 vCPU, 4 GB | $0.08 | $39 | | 4 vCPU, 8 GB | $0.16 | $79 | | 8 vCPU, 16 GB | $0.38 | $179 | # Full reference All prices are US dollars per 1M tokens. Calls are charged from the account's plan allowance first, then its prepaid balance. Input read from the provider's prompt cache is billed at the model's cached-input price where it has one (else as ordinary input). `service_tier` and `prompt_cache_options` are accepted and ignored. ## Chat completions (OpenAI) POST https://fullsendai.com/v1/chat/completions ```json { "model": "MODEL_ID", "messages": [{ "role": "user", "content": "Hello" }], "max_tokens": 256, "stream": false } ``` Returns a `chat.completion` (or, with `"stream": true`, server-sent `chat.completion.chunk` events ending in `data: [DONE]`; the last chunk carries `usage`). `usage.prompt_tokens_details.cached_tokens` is the cached input. Reasoning models take `reasoning_effort` and return `reasoning_content`. ```python from openai import OpenAI client = OpenAI(base_url="https://fullsendai.com/v1", api_key="fs_live_...") print(client.chat.completions.create(model="MODEL_ID", messages=[{"role": "user", "content": "Hello"}]).choices[0].message.content) ``` ## Messages (Anthropic) POST https://fullsendai.com/v1/messages (Anthropic SDK base URL: https://fullsendai.com) ```json { "model": "MODEL_ID", "max_tokens": 1024, "system": [{ "type": "text", "text": "…", "cache_control": { "type": "ephemeral" } }], "messages": [{ "role": "user", "content": "Hello" }], "thinking": { "type": "enabled", "budget_tokens": 2048 } } ``` - `cache_control` on system and content blocks is passed to the provider; `usage.cache_read_input_tokens` reports cached input (`input_tokens` excludes it). - `thinking` maps to the model's reasoning level (budget < 4096 low, < 16384 medium, else high); reasoning returns as `thinking` blocks, streamed as `thinking_delta`. - PDF `document` blocks (base64) work on models that read PDFs; others answer 400. - Errors: `{ "type": "error", "error": { "type", "message" }, "request_id" }`. ## Embeddings POST https://fullsendai.com/v1/embeddings ```json { "model": "EMBEDDING_MODEL_ID", "input": ["first text", "second text"], "encoding_format": "float" } ``` Returns `{ "object": "list", "data": [{ "object": "embedding", "index": 0, "embedding": [ … ] }], "model", "usage": { "prompt_tokens", "total_tokens" } }`. `input` is a string or up to 2048 strings; `dimensions` is passed to models that support it. ## Rerank POST https://fullsendai.com/v1/rerank ```json { "model": "RERANK_MODEL_ID", "query": "capital of France", "documents": ["Paris is the capital of France.", "Bananas are yellow."], "top_n": 1, "return_documents": true } ``` Returns `{ "id", "model", "results": [{ "index": 0, "relevance_score": 0.99, "document": { "text": "…" } }], "usage": { "prompt_tokens", "total_tokens" } }`, most relevant first. ## Models and key - GET https://fullsendai.com/v1/models (optional `?kind=chat|embedding|rerank`): `{ "object": "list", "data": [{ "id", "name", "kind", "context_length", "max_output_tokens", "images", "reasoning", "pricing": { "input", "output", "cached_input" } }] }` - GET https://fullsendai.com/v1/key: `{ "data": { "label", "balance", "plan_allowance_remaining", "limit", "usage", "limit_remaining", "rate_limit", "allowed_models", "expires_at", "project" } }` ## Errors (OpenAI-style endpoints) `{ "error": { "message", "type", "code", "request_id" } }`. Codes: 400 invalid_request_error / invalid_model_kind, 401 invalid_api_key / key_expired, 402 insufficient_quota, 403 model_not_allowed / ip_not_allowed / account_suspended, 404 model_not_found, 429 rate_limit_exceeded / key_limit_reached / project_budget_reached, 502 upstream_error, 503 overloaded, 504 upstream_timeout. ## Live chat models | id | context | input | cached input | output | | --- | --- | --- | --- | --- | | deepseek-v4.1-flash-1017 | 1048576 | $0.20 | $0.0060 | $0.60 | | kimi-k3 | 1048576 | $2.85 | $0.2850 | $14.25 | | nef-4.0 | 1048576 | $0.60 | $0.0180 | $2.40 | | sifu-3.5 | 1048575 | $0.30 | $0.06 | $1.00 | ## Live embedding models | id | context | input | | --- | --- | --- | | (none live right now) | ## Live rerankers | id | context | input | | --- | --- | --- | | (none live right now) |