Let’s build something.
A familiar Responses API, with a few thoughtful defaults. You’re only a few steps away from your first request.
01. Make yourself at home
Create an account, add credits in Billing, then create an API key. You can view and copy your key anytime from the API keys page.
/v1 02. Send your first request
Authentication
Send Authorization: Bearer YOUR_ROOTEX_KEY with API requests. Keep keys on your backend. View, copy, revoke, or delete your keys from API keys. Deleting a key stops access while preserving past usage and billing.
GET /v1/models lists the public model IDs available to your account. Use those IDs for requests.
Rootex CLI & agent authentication
Install Rootex from the download page, open your project folder and run rootex. Enter your website API key on first launch and choose workspace permissions. Use /model, /parameters, /permissions and /usage to manage your session.
Choose API key authentication in your agent. Enter this site's base URL, your public model ID, and a rootexAI API key. No browser connection or OAuth step is required. Your agent must support the Responses API.
GET /v1/me validates a Bearer key and returns account access and that key's limits. GET /v1/models discovers public model IDs. All agent API requests go to this site's gateway. Upstream credentials, URLs, model IDs, and error details stay on the server.
Use a different key per agent or project. Set an optional lifetime budget, daily budget, or both when creating the key. Daily limits reset at 00:00 UTC. Successful billed spend and pending reservations count toward each key's limits. The account balance also applies. Administrator requests remain unbilled.
Open a key's Analytics page to review its model breakdown, requests, tokens, spend, latency, status, and CSV exports. Request contents are not logged. Budget refusals return 429 before reaching the provider.
Responses API
POST /v1/responses accepts a model ID and text input, or an input array with user/assistant messages and function tool items. Read generated text from output[].content[].text.
Requests are stateless. Include your conversation history with each request. System and developer instructions are managed by the platform and cannot be overridden through request fields.
Make it yours
| Parameter | What it does |
|---|---|
| temperature | Sampling creativity, within the model’s configured range. |
| top_p | Nucleus sampling, within the model’s configured range. |
| max_output_tokens | Output budget within the model’s configured limit. |
| reasoning | JSON controls, such as {"effort":"high"}, when supported. |
| text | Text formatting and structured JSON output. |
| tools / tool_choice | User-defined function tools and tool selection. |
| stream | Return live Responses SSE events, with a JSON-provider fallback. |
Additional compatible parameters can be passed as JSON. Model support varies; unsupported combinations can be rejected by the upstream API. Routing, persistence, identity, and system fields are reserved.
Every request, accounted for
Cost = input tokens × input rate + output tokens × output rate. Rates are per 1 million tokens. We reserve a conservative text input budget plus the requested output budget, then release unused credits. Charged cost never exceeds that reservation.
If token usage is missing from a provider response, billing uses a conservative byte-based estimate, clearly marked in your usage history. Failed requests receive the reserved balance back. Usage dates and reports use UTC.
When something needs a second look
400 Invalid parameters · 401 Invalid key · 402 Insufficient credits · 403 Access denied · 429 Rate limit · 502 Model request failed · 503 Model not configured.
API errors contain error.message. Your dashboard records completed and failed requests without storing prompt or response contents.
