Legacy API (/api/v1)
These endpoints keep working for existing integrations, but new projects should use the v1 platform API, which is compatible with the OpenAI and Anthropic SDKs.
Base URL
https://api.arioron.com/api/v1
Quick Start (cURL)
curl -X POST "https://api.arioron.com/api/v1/ai/generate" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "perceptix-vex-amber-2.0", "prompt": "Hello"}'
Quick Start (Python)
import requests
response = requests.post(
"https://api.arioron.com/api/v1/ai/generate",
headers={"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
json={"model": "perceptix-vex-amber-2.0", "prompt": "Hello"}
)
print(response.json())
Authentication
Pass your API key in the X-API-Key request header. Keys are created
from the Dashboard.
X-API-Key: ar_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Models
Use the model field with one of these IDs in AI requests.
| Model ID | Multimodal |
|---|---|
| perceptix-vex-amber-2.0 | Yes |
| perceptix-vex-amber-latest | Yes |
| photon-lite-latest | Yes |
AI Generation
/api/v1/ai/generate
Single-turn text generation with optional tool calling and safety settings.
Request Body
{
"model": "perceptix-vex-amber-2.0",
"prompt": "Your prompt",
"system_prompt": "optional",
"enable_tools": true,
"tools": ["web_search", "calculate"],
"safety_harassment": "BLOCK_NONE",
"safety_hate": "BLOCK_NONE",
"safety_sexual": "BLOCK_NONE",
"safety_dangerous": "BLOCK_NONE"
}
Response
{"model", "response", "tool_calls", "finish_reason"}
/api/v1/ai/stream
Streaming text generation via SSE. Same body as /ai/generate. Returns token-by-token via Server-Sent Events.
Response
SSE stream: data: {"token": "..."} ... data: {"done": true}
/api/v1/ai/generate-with-tools
Multi-turn generation with automatic tool calling. Tools are executed server-side and the final answer is returned.
Request Body
{
"model": "perceptix-vex-amber-2.0",
"messages": [{"role": "user", "content": "Who is the CEO of
Tesla?"}],
"tools": null,
"temperature": 0.7,
"top_p": 1.0,
"max_tokens": 2048
}
/api/v1/ai/stream-with-tools
Streaming generation with tool calls (SSE). Same body as generate-with-tools. Returns tool call events and text chunks.
/api/v1/responses
Fully agentic endpoint: multi-step reasoning, automatic tool execution (up to 10 iterations). Supports streaming (SSE) or JSON.
Request Body
{
"model": "perceptix-vex-amber-2.0",
"messages": [{"role": "user", "content": "Compare weather in
Tokyo and London"}],
"tools": null,
"temperature": 0.7,
"max_tokens": 2048,
"system_prompt":
"...",
"stream": true
}
Response
SSE: event: tool_call / data: {"token": "..."} / data: {"done": true}. JSON: {"model", "response", "tool_calls", "finish_reason"}
/api/v1/ai/tools/available
Returns the list of all available tools for AI tool calling, including name, description, and syntax.
Response
{"tools": [{"name": "web_search", "description": "...", "syntax": "..."}]}
Search & News
/api/v1/search
Web search across several engines, merged and ranked. Query params: q (required), limit (default 10, max 50), offset, engines (comma-separated: google, yahoo, yandex, duckduckgo, brave, mojeek), time_range (day, week, month, year), safesearch (on, moderate, off), region (e.g. us-en), summary=true (adds a short answer citing the results).
Response
{"query": "...", "count": 10, "results": [{"position": 1, "title": "...", "url": "...", "domain": "...", "snippet": "...", "score": 1.0, "engines": ["google", "yandex"]}], "engines": {"google": 10, "yandex": 10}}
/api/v1/search/news
News articles about a topic, newest first. Query params: q (required), limit, time_range (day, week, month), region, safesearch.
Response
{"query": "...", "results": [{"title": "...", "url": "...", "source": "BBC", "published": "2026-10-04T09:12:00+00:00", "snippet": "...", "image": "..."}]}
/api/v1/search/images
Image search. Query params: q (required), limit, safesearch.
Response
{"query": "...", "results": [{"title": "...", "image_url": "...", "thumbnail_url": "...", "page_url": "...", "source": "..."}]}
/api/v1/search/autocomplete
Autocomplete suggestions. Query params: q (required).
Response
{"query": "...", "suggestions": [...]}
/api/v1/news
Headlines from major publishers. GET ?q=topic searches news; ?category= (latest, technology, ai, business, world, general) returns one section; no params returns every section. limit, offset and keywords (comma-separated filter) apply to all. POST {"feed_urls": [...up to 10 RSS/Atom URLs], "keywords": ["ai"], "limit": 20, "offset": 0} merges feeds you choose.
Response
{"Latest": [...], "Technology": [...], ...} or {"category": "technology", "results": [...]} or {"count": n, "results": [...]}
Web Tools
/api/v1/tools/scrape
Scrape webpage content with optional link and image extraction.
Request Body
{"url": "https://example.com", "extract_links": true, "extract_images": false}
/api/v1/tools/extract-article
Extract clean article content (title, author, text) from a URL.
Request Body
{"url": "https://example.com/article"}
/api/v1/tools/metadata
Get page metadata including Open Graph, Twitter Card, and other meta tags.
Request Body
{"url": "https://example.com"}
/api/v1/tools/check-url
Check URL status, availability, and response headers.
Request Body
{"url": "https://example.com"}
/api/v1/tools/web-search
Perform a web search (convenience endpoint for tool use).
Request Body
{"query": "search terms", "limit": 10, "engines": ["google"]}
Code & Math
/api/v1/tools/code/execute
Execute Python code in a sandboxed environment (like OpenAI Code Interpreter).
Request Body
{"code": "print(2 + 2)", "timeout": 30}
Response
{"output": "4", "error": null, "execution_time": 0.01}
/api/v1/tools/code/validate
Validate Python code syntax without executing it.
Request Body
{"code": "def foo(): return 42"}
Response
{"valid": true, "errors": []}
/api/v1/tools/calculator/eval
Evaluate a mathematical expression safely.
Request Body
{"expression": "sqrt(144) + 3^2"}
Response
{"result": 21.0, "expression": "sqrt(144) + 3^2"}
/api/v1/tools/calculator/convert
Convert between units (length, weight, temperature, etc.).
Request Body
{"value": 100, "from_unit": "celsius", "to_unit": "fahrenheit"}
Response
{"result": 212.0, "from": "100 celsius", "to": "212.0 fahrenheit"}
Utility Endpoints
/api/v1/tools/weather
Current conditions and forecast. location takes a place name ("Paris", "Portland, Maine") or "lat,lon". Optional: units (metric or imperial), days (0-16, default 3), hours (0-48 hourly forecast).
Request Body
{"location": "Tokyo", "units": "metric", "days": 3}
Response
{"success": true, "location": {"name": "Tokyo", "country": "Japan", ...}, "units": {"temperature": "°C", ...}, "current": {"temperature": 17.9, "feels_like": 18.6, "condition": "partly cloudy", "humidity": 79, "wind_speed": 9.4, ...}, "daily": [{"date": "2026-10-04", "temperature_max": 22.1, "temperature_min": 15.3, "precipitation_probability": 10, ...}]}
/api/v1/tools/time/current
Get current time in UTC or a specific timezone.
Request Body
{"timezone": "America/New_York"}
Response
{"utc": "...", "local": "...", "timezone": "America/New_York"}
/api/v1/tools/time/diff
Calculate the difference between two ISO timestamps.
Request Body
{"time1": "2024-01-01T00:00:00Z", "time2": "2024-06-15T12:30:00Z"}
Response
{"days": 166, "hours": 12, "minutes": 30, ...}
/api/v1/tools/file/create
Create a text file in the sandbox.
Request Body
{"filename": "notes.txt", "content": "Hello World", "encoding": "utf-8"}
Response
{"filename": "notes.txt", "size": 11, "created": true}
/api/v1/tools/file/read
Read a text file from the sandbox.
Request Body
{"filename": "notes.txt", "encoding": "utf-8"}
Response
{"filename": "notes.txt", "content": "Hello World", "size": 11}
Public Services
/api/v1/services/weather
Weather by query string. Params: q (location, required), units, days, hours. Same response as the weather tool above.
Response
{"success": true, "location": {...}, "current": {...}, "daily": [...]}
/api/v1/services/geolocation
IP geolocation lookup. Query param: ip (optional, defaults to caller IP).
Response
{"ip": "...", "country": "...", "city": "...", "lat": ..., "lon": ...}
Rate Limits
Limits are enforced per API key. Your tier defines RPM
(requests/minute) and RPD (requests/day). Per-model overrides take precedence.
Purchased credits add to your daily limit via rpd_bonus.
Error Codes
| Code | Meaning |
|---|---|
| 400 | Bad request — missing or invalid body/params |
| 401 | API key missing in X-API-Key header |
| 403 | Invalid or inactive API key |
| 404 | Model not found or inactive |
| 429 | Rate limit exceeded (RPM or RPD) |
| 500 | Internal server error |