# API Reference Technical reference for Rox AI API endpoints. ## Base URL ``` https://Rox-Turbo-API.hf.space ``` --- ## Endpoints ### POST /chat - Rox Core ### POST /turbo - Rox 2.1 Turbo ### POST /coder - Rox 3.5 Coder ### POST /turbo45 - Rox 4.5 Turbo ### POST /ultra - Rox 5 Ultra ### POST /dyno - Rox 6 Dyno ### POST /coder7 - Rox 7 Coder ### POST /vision - Rox Vision Max ### POST /hf/generate - HuggingFace Compatible All endpoints use the same request/response format. #### Request **URL**: `/chat` **Method**: `POST` **Content-Type**: `application/json` **Body Parameters**: | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `messages` | Array | Yes | - | Array of conversation messages | | `temperature` | Float | No | 0.7 | Controls randomness (0.0 - 2.0) | | `top_p` | Float | No | 0.95 | Nucleus sampling parameter (0.0 - 1.0) | | `max_tokens` | Integer | No | 8192 | Maximum tokens in response | | `stream` | Boolean | No | false | Enable streaming responses | **Message Object**: ```typescript { role: "user" | "assistant", content: string } ``` **Example Request**: ```json { "messages": [ { "role": "user", "content": "What is artificial intelligence?" } ], "temperature": 0.7, "top_p": 0.95, "max_tokens": 8192, "stream": false } ``` #### Response **Standard Response** (200 OK): ```json { "content": "Artificial intelligence (AI) refers to..." } ``` **Streaming Response** (200 OK): When `stream: true` is set, the response is sent as Server-Sent Events: ``` data: {"content": "Artificial"} data: {"content": " intelligence"} data: {"content": " (AI)"} data: {"content": " refers"} data: {"content": " to"} data: {"content": "..."} data: [DONE] ``` Each line starts with `data: ` followed by a JSON object containing a `content` field with the next token. The stream ends with `data: [DONE]`. **Response Fields**: | Field | Type | Description | |-------|------|-------------| | `content` | String | The generated response from Rox Core | **Error Responses**: **500 Internal Server Error**: ```json { "detail": "Internal server error while calling Rox Core." } ``` **502 Bad Gateway**: ```json { "detail": "Bad response from upstream model provider." } ``` **422 Unprocessable Entity**: ```json { "detail": [ { "loc": ["body", "messages"], "msg": "field required", "type": "value_error.missing" } ] } ``` #### Example Usage **Standard Request (cURL)**: ```bash curl -X POST https://Rox-Turbo-API.hf.space/chat \ -H "Content-Type: application/json" \ -d '{ "messages": [ {"role": "user", "content": "Hello!"} ], "temperature": 0.7, "max_tokens": 8192 }' ``` **Streaming Request (cURL)**: ```bash curl -X POST https://Rox-Turbo-API.hf.space/chat \ -H "Content-Type: application/json" \ -d '{ "messages": [ {"role": "user", "content": "Hello!"} ], "stream": true }' ``` **Standard Request (JavaScript)**: ```javascript const response = await fetch('https://Rox-Turbo-API.hf.space/chat', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ messages: [{ role: 'user', content: 'Hello!' }], temperature: 0.7, max_tokens: 8192 }) }); const data = await response.json(); console.log(data.content); ``` **Streaming Request (JavaScript)**: ```javascript const response = await fetch('https://Rox-Turbo-API.hf.space/chat', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ messages: [{ role: 'user', content: 'Hello!' }], stream: true }) }); const reader = response.body.getReader(); const decoder = new TextDecoder(); while (true) { const { done, value } = await reader.read(); if (done) break; const chunk = decoder.decode(value, { stream: true }); const lines = chunk.split('\n'); for (const line of lines) { if (line.startsWith('data: ')) { const data = line.slice(6).trim(); if (data === '[DONE]') break; try { const parsed = JSON.parse(data); if (parsed.content) { process.stdout.write(parsed.content); } } catch (e) {} } } } ``` **Standard Request (Python)**: ```python import requests response = requests.post('https://Rox-Turbo-API.hf.space/chat', json={ 'messages': [{'role': 'user', 'content': 'Hello!'}], 'temperature': 0.7, 'max_tokens': 8192 }) print(response.json()['content']) ``` **Streaming Request (Python)**: ```python import requests import json response = requests.post( 'https://Rox-Turbo-API.hf.space/chat', json={ 'messages': [{'role': 'user', 'content': 'Hello!'}], 'stream': True }, stream=True ) for line in response.iter_lines(): if line: line = line.decode('utf-8') if line.startswith('data: '): data = line[6:] if data == '[DONE]': break try: parsed = json.loads(data) if 'content' in parsed: print(parsed['content'], end='', flush=True) except json.JSONDecodeError: pass ``` --- ### POST /hf/generate Hugging Face compatible text generation endpoint for single-turn interactions. #### Request **URL**: `/hf/generate` **Method**: `POST` **Content-Type**: `application/json` **Body Parameters**: | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `inputs` | String | Yes | - | The input text/prompt | | `parameters` | Object | No | {} | Generation parameters | **Parameters Object**: | Field | Type | Required | Default | Description | |-------|------|----------|---------|-------------| | `temperature` | Float | No | 1.0 | Controls randomness (0.0 - 2.0) | | `top_p` | Float | No | 0.95 | Nucleus sampling (0.0 - 1.0) | | `max_new_tokens` | Integer | No | 8192 | Maximum tokens to generate | **Example Request**: ```json { "inputs": "Write a haiku about technology", "parameters": { "temperature": 0.7, "top_p": 0.95, "max_new_tokens": 256 } } ``` #### Response **Success Response** (200 OK): ```json [ { "generated_text": "Silicon dreams awake\nCircuits pulse with electric life\nFuture in our hands" } ] ``` **Response Format**: Returns an array with a single object containing the generated text. | Field | Type | Description | |-------|------|-------------| | `generated_text` | String | The generated response | **Error Responses**: Same as `/chat` endpoint (500, 502, 422). #### Example Usage **cURL**: ```bash curl -X POST https://Rox-Turbo-API.hf.space/hf/generate \ -H "Content-Type: application/json" \ -d '{ "inputs": "Explain quantum computing", "parameters": { "temperature": 0.7, "max_new_tokens": 256 } }' ``` **JavaScript**: ```javascript const response = await fetch('https://Rox-Turbo-API.hf.space/hf/generate', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ inputs: 'Explain quantum computing', parameters: { temperature: 0.7, max_new_tokens: 256 } }) }); const data = await response.json(); console.log(data[0].generated_text); ``` **Python**: ```python import requests response = requests.post('https://Rox-Turbo-API.hf.space/hf/generate', json={ 'inputs': 'Explain quantum computing', 'parameters': { 'temperature': 0.7, 'max_new_tokens': 256 } }) print(response.json()[0]['generated_text']) ``` --- ## Parameters ### temperature Controls output randomness. - **Range**: 0.0 to 2.0 - **Default**: 1.0 - **Lower** (0.1-0.5): Focused, deterministic - **Medium** (0.6-1.0): Balanced - **Higher** (1.1-2.0): Creative, varied Examples: - `0.3`: Math problems, factual questions, code generation - `0.7`: General conversation, explanations - `1.2`: Creative writing, brainstorming, storytelling **Example**: ```json { "messages": [{"role": "user", "content": "What is 2+2?"}], "temperature": 0.2 } ``` ### top_p Nucleus sampling parameter. - **Range**: 0.0 to 1.0 - **Default**: 0.95 (/hf/generate), 1.0 (/chat) - **Lower**: More focused - **Higher**: More diverse Example: ```json { "messages": [{"role": "user", "content": "Tell me a story"}], "top_p": 0.9 } ``` ### max_tokens / max_new_tokens Maximum tokens in response. - **Range**: 1 to 32768 - **Default**: 8192 Token estimation: - ~1 token ≈ 4 characters - ~1 token ≈ 0.75 words Example: ```json { "messages": [{"role": "user", "content": "Brief summary of AI"}], "max_tokens": 150 } ``` ### stream Enable streaming responses for real-time token delivery. - **Type**: Boolean - **Default**: false - **Values**: true or false When enabled, responses are sent as Server-Sent Events instead of a single JSON response. This allows you to display tokens as they are generated rather than waiting for the complete response. Benefits of streaming: - Lower perceived latency - Better user experience for long responses - Ability to cancel generation early - Real-time feedback Example: ```json { "messages": [{"role": "user", "content": "Write a story"}], "stream": true } ``` Response format when streaming is enabled: ``` data: {"content": "Once"} data: {"content": " upon"} data: {"content": " a"} data: {"content": " time"} data: [DONE] ``` --- ## Error Handling ### Status Codes | Code | Meaning | Description | |------|---------|-------------| | 200 | OK | Request successful | | 422 | Unprocessable Entity | Invalid request format | | 500 | Internal Server Error | Server-side error | | 502 | Bad Gateway | Upstream model error | ### Error Response Format ```json { "detail": "Error message here" } ``` ### Common Errors Missing field: ```json { "detail": [ { "loc": ["body", "messages"], "msg": "field required", "type": "value_error.missing" } ] } ``` Invalid type: ```json { "detail": [ { "loc": ["body", "temperature"], "msg": "value is not a valid float", "type": "type_error.float" } ] } ``` Example error handler: ```javascript async function safeRequest(endpoint, body) { try { const response = await fetch(endpoint, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) }); if (!response.ok) { const error = await response.json(); throw new Error(error.detail || `HTTP ${response.status}`); } return await response.json(); } catch (error) { console.error('API Error:', error); throw error; } } ``` --- ## Rate Limiting No enforced rate limits. Implement client-side limiting as needed. --- ## Client Wrapper Example ```javascript class RoxAI { constructor(baseURL = 'https://Rox-Turbo-API.hf.space') { this.baseURL = baseURL; } async chat(messages, options = {}) { const response = await fetch(`${this.baseURL}/chat`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ messages, temperature: options.temperature || 0.7, top_p: options.top_p || 0.95, max_tokens: options.max_tokens || 8192, stream: false }) }); if (!response.ok) { throw new Error(`HTTP ${response.status}`); } const data = await response.json(); return data.content; } async chatStream(messages, onToken, options = {}) { const response = await fetch(`${this.baseURL}/chat`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ messages, temperature: options.temperature || 0.7, top_p: options.top_p || 0.95, max_tokens: options.max_tokens || 8192, stream: true }) }); if (!response.ok) { throw new Error(`HTTP ${response.status}`); } const reader = response.body.getReader(); const decoder = new TextDecoder(); let fullContent = ''; while (true) { const { done, value } = await reader.read(); if (done) break; const chunk = decoder.decode(value, { stream: true }); const lines = chunk.split('\n'); for (const line of lines) { if (line.startsWith('data: ')) { const data = line.slice(6).trim(); if (data === '[DONE]') break; try { const parsed = JSON.parse(data); if (parsed.content) { fullContent += parsed.content; onToken(parsed.content); } } catch (e) {} } } } return fullContent; } async generate(text, options = {}) { const response = await fetch(`${this.baseURL}/hf/generate`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ inputs: text, parameters: options }) }); if (!response.ok) { throw new Error(`HTTP ${response.status}`); } const data = await response.json(); return data[0].generated_text; } } // Standard usage const rox = new RoxAI(); const response = await rox.chat([ { role: 'user', content: 'Hello!' } ]); console.log(response); // Streaming usage await rox.chatStream( [{ role: 'user', content: 'Tell me a story' }], (token) => process.stdout.write(token) ); ``` --- --- Built by Mohammad Faiz