# Chatsax > Search infrastructure for agents. One Chatsax key provides Reader, Search, Embeddings, Reranker, Classifier, Segmenter, DeepSearch and Jina VLM through a Cloudflare Worker. ## Connect - API base URL: https://chatsax.com - Authentication: Authorization: Bearer $CHATSAX_API_KEY - [Automatic browser API key](https://chatsax.com/api-dashboard): anonymous visitors receive a limited guest key; signed-in users receive their account browser key without clicking Create. Copy it as CHATSAX_API_KEY. Login is optional for the basic guest trial. - [Account registration and keys](https://chatsax.com/api-dashboard/key-manager): email verification, Google or GitHub sign-in; account keys share an account token balance. - [CLI](https://chatsax.com/cli.mjs): Node.js 22+, set CHATSAX_API_KEY and run `node cli.mjs --help`. - [Interactive API reference](https://chatsax.com/scalar) - [Model reference for agents](https://chatsax.com/models/llms.txt) - [OpenAPI contract](https://chatsax.com/openapi.json) - [Developer guide](https://chatsax.com/docs) - [MCP endpoint](https://chatsax.com/mcp): stateless Streamable HTTP, POST JSON-RPC, requires the same key. - [Available models](https://chatsax.com/v1/models): public GET. - [Capabilities](https://chatsax.com/api/capabilities): public GET. ## APIs - POST /v1/read {"url":"https://example.com"}; Reader option headers are supported. GET /r/https://example.com is an alias. r.chatsax.com/https://example.com uses the same Worker. - POST /v1/search {"q":"your query"}; X-Respond-With:no-content requests snippets. GET /s/encoded-query is an alias. s.chatsax.com uses the same Worker. - POST /v1/embeddings {"model":"jina-embeddings-v5-text-nano","input":["text"]} - POST /v1/rerank {"model":"jina-reranker-v3.5","query":"question","documents":["document"]} - POST /v1/classify {"model":"jina-embeddings-v5-text-small","input":["text"],"labels":["one","two"]} - GET /v1/segment?content=hello counts tokens without inference-token charges; it still requires segment scope and uses the key’s request quota. GET content appears in the URL. - POST /v1/segment {"content":"text","return_chunks":true,"return_tokens":true}; head and tail are mutually exclusive. - POST /api/tools/token-count {"items":[{"text":"Hello"}]} counts text, imageBase64 and audioBase64 data URLs across model tokenizers. Requires segment scope; uses shared RPM/day quota but no inference-token charges. See the separate limits below. - POST /v1/deepsearch {"model":"jina-deepsearch-v1","messages":[{"role":"user","content":"question"}],"stream":true} - POST /v1/chat/completions with model jina-vlm or jina-deepsearch-v1. These use different upstream services. - POST /v1/train creates a classifier. Access defaults to private. Use classifier_id with /v1/classify. GET /v1/classifiers; DELETE /v1/classifiers/{id}. - POST /v1/batch/embeddings creates a batch. GET /v1/batches; GET or DELETE /v1/batch/{id}; GET /v1/batch/{id}/output or /errors. - GET /api/me returns key metadata and 30-day usage; guest responses also include current ledger balance minus reservations. It never returns a raw key. Administrator operations: /api/admin/keys and /api/admin/upstream. ## Playground workflows - [Playground](https://chatsax.com/api-dashboard/playground) contains 14 tools with real input and result workflows. - Semantic Highlighter composes Reader HTML extraction and passage reranking. Listwise Search caches corpus embeddings, retrieves candidates and optionally reranks them. Pairwise Similarity imports CSV pairs and recomputes model-specific cosine scores on edits. - Image Ranking uses multimodal embeddings or the m0 reranker. Visual Question Answering uploads/pastes images and reads streamed jina-vlm answers. Reader Speed compares seven Reader configurations with actual response timing and content. - Omni Provisioning and Config License are local reference estimators. GPU performance, cloud prices and license amounts are assumptions, not live quotes, purchases or granted model licenses. License selections can prefill Contact Sales. - Integrate generates capability-specific instructions from this site’s llms.txt and OpenAPI. Third-party native support and model weight licenses remain subject to the relevant provider. ## Browser bootstrap POST /api/browser-key is same-origin JSON with browser cookies and no Authorization header. Anonymous first use sends {"device_id":""}; existing guest-cookie or signed-in account requests can send {}. Never log or put the device nonce in a URL. Success returns kind (guest/account), key, key_prefix, balance (total_tokens, available_tokens, reserved_tokens; guest also granted_tokens), limits, scopes, expires_at (ISO timestamp or null), and login_required:false. Responses are no-store. POST /api/guest-key is an anonymous-compatible entry. Reusing a nonce/cookie recovers the same key and never replenishes its credit. Revoked account browser keys are not silently recreated. Guests default to one 10M-token grant, 7-day expiry, 10 requests/minute, 100/day, 256 KiB input and a 2M-token request budget. New trials are limited to 3 per source IP per UTC day and 20 globally; IPv6 uses a /64 budget. Guest scopes are read/search/embeddings/rerank/classify/segment/deepsearch/chat. Training, batch operations, account/billing management and administrative privileges require the corresponding account or administrator authorization. Limits are server configurable and available in the bootstrap response. Expiry, exhaustion and issuance-cap errors should lead to a login/use-another-key option, not repeated creation attempts. ## Account and billing Account administration requires the secure browser session cookie, not a model API key. GET /api/account/overview returns wallet, recent ledger and payments. GET/POST /api/account/keys and PATCH/DELETE /api/account/keys/{id} manage your keys. GET /api/billing/plans lists actual prices, currencies and payment availability. Purchase, card setup and automatic recharge endpoints are documented in OpenAPI. Creating a checkout does not credit tokens; verified provider payment is required. Automatic recharge defaults off and requires a saved card plus explicit authorization. Verified new accounts receive a single 10M-token trial. Request budgets reserve balance before execution and settle using authoritative upstream usage. Uncertain usage stays reserved for review. Request-budget estimates are conservative for common text workflows, not a hard upper bound for all multimodal inputs or remote batch files. ## Constraints Never send the underlying Jina provider key to this website or include it in frontend code. Application keys have API scopes, per-minute request limits and UTC daily limits. Honor Retry-After on 429 responses. Inputs must be public HTTP(S) targets. Inference routes limit JSON bodies to 8 MiB; account keys default to 2 MiB and a 10M-token request budget. Provider output is passed through; inspect X-Request-ID when debugging. Batch and classifier ownership is isolated per key. Existing provider resources require administrator access. Token Counter uses separate non-inference limits: 40 MiB JSON total, 262,144 text characters, 128 text/media items, 12 MiB per image and 24 MiB per audio file. Supported formats are PNG/JPEG/GIF/WebP and WAV/MP3/M4A/OGG/FLAC, encoded as data URLs. It sends only input items to the fixed token-count service, with no user/provider credentials. Inspect supportsInput, missingModalities and tokenizerFallback alongside totals; fallback or unsupported rows are not authoritative billing estimates. Chatsax is independently operated. Model inference currently uses Jina AI. Grounding is implemented by asking DeepSearch for schema-constrained fact checking; there is no advertised legacy g.jina.ai proxy. Model weight licenses differ from software licenses; consult each model card before self-hosting commercially.