Caricamento
Caricamento
Integra Vortixy Chat nei tuoi progetti con una chiave Bearer. Stesse quote del tuo piano. Crea chiave in Dashboard → La tua API
Vortixy è un workspace IA calmo per studio, scrittura, ricerca, pianificazione e lavoro quotidiano. L’API pubblica espone la stessa Chat che usi su /chat così puoi chiamarla dalla tua app, script o workspace. Ogni chiave eredita i limiti del tuo piano attuale — Free, Go $2, Pro $5 o Max $9 — e tutte le quote sono condivise tra web e API.
https://www.vortixy.net/api/v1Authorization: Bearer vtx_live_...application/jsonInvia la tua chiave nell'header Authorization. Non esporla mai nel codice client o nei query params.
curl https://www.vortixy.net/api/v1/chat \
-H "Authorization: Bearer vtx_live_abc123..." \
-H "Content-Type: application/json" \
-d '{"message":"Hello Vortixy"}'Scopes: chat, images, search, tasks, usage. Le chiavi condividono le quote del tuo piano.
Invia un messaggio con cronologia opzionale, abilita la ricerca web o regola la profondità di ragionamento. Conta verso i limiti giornalieri di messaggi e token del tuo piano.
Pronto per chatbot: aggiungi system per la persona del tuo bot (8k chars), stream:true per delta NDJSON, webSearch per fonti live. Ogni chiamata scala token, richieste e ricerche web — condivisi con il web (reset 00:00 UTC).
Tutti i campi JSON per POST /api/v1/chat. Solo message è obbligatorio — il resto è opzionale.
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| message | string | yes | Messaggio utente (1–32.000 caratteri). |
| history | array | no | Turni precedenti: [{ role: 'user' | 'assistant', content: string }] (max 20). |
| system | string | no | Persona del bot / istruzioni (max 8k). Accetta anche alias instructions. |
| provider | string | no | gemini (gestito, predefinito). Per BYOK, salva la chiave in Dashboard → Impostazioni → Chiavi IA e poi usa provider openai / anthropic / deepseek / gemini con un model id BYOK. |
| model | string | no | ID modello — vedi tabella sotto. Deve essere consentito per provider + piano. |
| thinkingLevel | enum | no | none | low | medium | high | xhigh | max (xhigh/max solo per GPT-5.6). |
| webSearch | boolean | no | true per attivare la ricerca web live. Conta nella quota giornaliera. |
| stream | boolean | no | true per streaming NDJSON (delta → done). Default false (JSON). |
Suggerimento: ometti provider/model per usare il modello migliore del tuo piano. Imposta stream:true per i chatbot.
Reasoning is now automatic per mode — Fast uses low, Smart uses high, Auto chooses intelligently based on your question. You no longer need to pick a level. The API still accepts thinkingLevel but it is optional and overridden by the mode.
| Level | Descrizione |
|---|---|
| none | Nessun ragionamento — più veloce, consumo minimo. |
| low | Ragionamento leggero — risposte rapide con un po' di riflessione. |
| medium | Ragionamento bilanciato — buono per la maggior parte dei task. |
| high | Ragionamento profondo — per analisi e pianificazione complesse. |
| xhigh | Molto profondo — solo modelli frontier, per problemi difficili. |
| max | Massimo — usa tutto il budget di ragionamento, più lento e costoso. |
Fast → low/medium, Smart → medium/high, Auto → chooses low→high per query. No user selector needed — the system is intelligent per moment.
Pick a mode, not a model. Vortixy routes intelligently to make the most of your quota — no need to choose a specific model. All modes share your plan quotas (00:00 UTC).
| Mode | When to use | Thinking | Speed |
|---|---|---|---|
| Fast | Quick answers for simple tasks — fastest, most efficient. | low / medium | Fastest |
| Smart | Thorough reasoning for complex tasks — deeper, step-by-step. | medium / high | Thorough |
| Auto | Vortixy chooses the best mode automatically per question (heuristic, zero extra cost). | auto (low → high) | Auto-chooses |
Smart has an animated glow when selected (shimmer border). Auto is the default — recommended for most tasks.
Save your provider key once in Dashboard → Settings → AI keys (AES-256-GCM encrypted, never exposed) — then call with provider + model. Same 00:00 UTC quotas as managed.
| Modello | Provider | Access | Ragionamento | Contesto |
|---|---|---|---|---|
| gemini-3.8-flash:byok | gemini | Free — needs key | none, low, medium, high | 1049k |
| gemini-3.7-flash:byok | gemini | Free — needs key | none, low, medium, high | 1049k |
| gemini-3.6-flash:byok | gemini | Free — needs key | none, low, medium, high | 256k |
| gpt-5.6-sol | openai | Free — needs key | none, low, medium, high, xhigh, max | 256k |
| gpt-5.6-terra | openai | Free — needs key | none, low, medium, high, xhigh, max | 256k |
| gpt-5.6-luna | openai | Free — needs key | none, low, medium, high, xhigh, max | 256k |
| claude-fable-5 | anthropic | Free — needs key | none, high | 256k |
| claude-opus-5 | anthropic | Free — needs key | none, high | 256k |
| claude-sonnet-5 | anthropic | Free — needs key | none, high | 256k |
| claude-haiku-4-5 | anthropic | Free — needs key | none, high | 200k |
| deepseek-v4-pro | deepseek | Free — needs key | none, high | 256k |
| deepseek-v4-flash | deepseek | Free — needs key | none, high | 256k |
BYOK catalog: gpt-5.6-sol/terra/luna (openai), claude-opus-5/fable-5/sonnet-5/haiku-4-5 (anthropic), deepseek-v4-pro/flash (deepseek), gemini-3.8-flash:byok / gemini-3.7-flash:byok (gemini). All available on Free when key is present — no upgrade needed.
Le finestre di contesto variano in base al modello e arrivano a 1M (3.8/3.7) / 256k token. Ogni richiesta è inoltre limitata dal piano: Free 10k, Go 20k, Pro 35k o Max 50k token. Oltre l’85% del budget applicabile, i turni meno recenti vengono compattati automaticamente. L’API pubblica è stateless: reinvia la cronologia in `history` a ogni chiamata.
Il contesto utilizzabile è il valore minore tra il limite del piano (10k/20k/35k/50k token) e la finestra del modello (fino a 1M (3.8/3.7) / 256k (altri)). Nelle integrazioni, invia solo la cronologia che rientra nel budget e riassumi i turni più vecchi; richieste troppo grandi possono essere rifiutate.
// Basic — only required field
{ "message": "Explain quantum computing simply" }
// With system persona (chatbot) — 8k chars
{
"message": "What do you sell?",
"system": "You are a friendly shop assistant for Acme. Answer briefly in Spanish."
}
// With history — multi-turn conversation
{
"message": "And what about entanglement?",
"history": [
{ "role": "user", "content": "Hi" },
{ "role": "assistant", "content": "Hello! How can I help?" },
{ "role": "user", "content": "Explain quantum computing" }
]
}
// Full request — all variants together
{
"message": "Latest AI breakthroughs with sources",
"history": [{ "role": "user", "content": "Hi" }],
"system": "You are Acme support. Be concise.",
"provider": "gemini", // managed (default) — BYOK dashboard-only for other providers
"model": "gemini-3.5-flash", // any available managed model from the table above
"thinkingLevel": "high", // none | low | medium | high | xhigh | max
"webSearch": true, // true = live web grounding + sources[]
"stream": false // false = JSON, true = NDJSON deltas
}// 200 OK — non-streaming response
{
"answer": "Quantum computing uses qubits...",
"model": "gemini-3.5-flash",
"usage": { "tokensEstimated": 42, "tokensReserved": 42, "webSearch": true },
"sources": [{ "title": "Quantum computing — Wikipedia", "url": "https://en.wikipedia.org/wiki/Quantum_computing" }],
"plan": "pro"
}// Streaming (NDJSON) — ideal for chatbots
const res = await fetch("https://www.vortixy.net/api/v1/chat", {
method: "POST",
headers: { Authorization: "Bearer " + process.env.VORTIXY_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ message: "Hello!", system: "Be concise.", stream: true, thinkingLevel: "medium" })
});
for await (const line of res.body.pipeThrough(new TextDecoderStream()).pipeThrough(splitNDJSON())) {
const evt = JSON.parse(line);
if (evt.type === "delta") process.stdout.write(evt.delta);
if (evt.type === "sources") console.log("sources", evt.sources);
if (evt.type === "done") console.log("\nusage", evt.usage);
}
// curl variants — pick the one you need
// 1) Basic
curl -X POST https://www.vortixy.net/api/v1/chat -H "Authorization: Bearer $VORTIXY_API_KEY" -H "Content-Type: application/json" -d '{"message":"Hello"}'
// 2) With web search + high thinking
curl -X POST https://www.vortixy.net/api/v1/chat -H "Authorization: Bearer $VORTIXY_API_KEY" -H "Content-Type: application/json" -d '{"message":"Latest AI news","webSearch":true,"thinkingLevel":"high"}'
// 3) Chatbot persona + streaming (NDJSON)
curl -N -X POST https://www.vortixy.net/api/v1/chat -H "Authorization: Bearer $VORTIXY_API_KEY" -H "Content-Type: application/json" -d '{"message":"Hi","system":"You are Acme bot.","stream":true}'Lo streaming emette delta → done (NDJSON, Content-Type: application/x-ndjson). Con webSearch:true ricevi anche fonti ancorate via ricerca web (conta nella quota giornaliera).
Elenca i modelli che il tuo piano può usare (limitati per piano, nessun costo quota). Usalo per popolare un selettore di modelli nel chatbot.
curl https://www.vortixy.net/api/v1/models -H "Authorization: Bearer vtx_live_..."// 200 OK — example for Pro plan (more models on Max, fewer on Free)
{
"plan": "pro",
"defaultModel": "gemini-3.5-flash",
"models": [
{ "id": "gemini-3.5-flash", "label": "Gemini 3.5 Flash", "provider": "gemini", "thinkingLevels": ["none","low","medium","high"] },
{ "id": "gemini-3.5-flash-lite", "label": "Gemini 3.5 Flash Lite", "provider": "gemini", "thinkingLevels": ["none","low","medium","high"] },
{ "id": "gemini-3.1-flash-lite", "label": "Gemini 3.1 Flash Lite", "provider": "gemini", "thinkingLevels": ["none","low","medium","high"] }
]
}Note: gemini-3.8-flash/gemini-3.7-flash/gemini-3.6-flash temporarily paused (effective 3.5+lite) — example shows effective models only.
Free include solo la modalità Fast; Go, Pro e Max includono Fast, Smart e Auto — le quote scalano con il piano (12k/50k/120k/250k token al giorno, 5/20/50/100 richieste). I modelli BYOK richiedono la tua chiave e non sono elencati qui.
Porta la tua chiave OpenAI, Anthropic, DeepSeek o Gemini. Configura una volta nell'app e usa ovunque — web e API condividono le stesse chiavi salvate e le stesse quote giornaliere (reset 00:00 UTC).
Esempio BYOK
# 1) Save your provider key once in Vortixy (Dashboard → Settings → AI keys)
# OpenAI sk-..., Anthropic sk-ant-..., DeepSeek sk-..., Gemini AQ./AIza...
# 2) Call the API with the same Vortixy Bearer key, but specify the BYOK provider+model
curl https://www.vortixy.net/api/v1/chat \
-H "Authorization: Bearer vtx_live_..." \
-H "Content-Type: application/json" \
-d '{
"message": "Explain quantum computing with deep reasoning",
"provider": "openai",
"model": "gpt-5.6-terra",
"thinkingLevel": "high",
"stream": false
}'
# Anthropic example
curl https://www.vortixy.net/api/v1/chat \
-H "Authorization: Bearer vtx_live_..." \
-H "Content-Type: application/json" \
-d '{"message":"Write a haiku about the sea","provider":"anthropic","model":"claude-opus-5"}'
# DeepSeek example
curl https://www.vortixy.net/api/v1/chat \
-H "Authorization: Bearer vtx_live_..." \
-H "Content-Type: application/json" \
-d '{"message":"Solve this algorithm","provider":"deepseek","model":"deepseek-v4-pro","thinkingLevel":"high"}'// JS — BYOK via Vortixy API (same quotas, same Bearer key)
const res = await fetch("https://www.vortixy.net/api/v1/chat", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.VORTIXY_API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({
message: "Deep research with my own OpenAI key",
provider: "openai",
model: "gpt-5.6-sol",
thinkingLevel: "xhigh", // xhigh/max only on GPT-5.6 — works via BYOK
webSearch: true,
stream: false
})
});
const data = await res.json();
// data.answer, data.sources, data.usage, data.modelSe manca la chiave ricevi 403 byokMissing — aggiungila in Dashboard e riprova. Le richieste BYOK contano anche per token / richieste / ricerche del tuo piano.
BYOK catalog: gpt-5.6-sol / terra / luna (openai), claude-opus-5 / fable-5 / sonnet-5 / haiku-4-5 (anthropic), deepseek-v4-pro / flash (deepseek), gemini-3.8-flash:byok / gemini-3.7-flash:byok / gemini-3.6-flash:byok (gemini). Managed Gemini models stay available without BYOK.
Genera immagini in modalità standard o qualità. Conta verso il limite giornaliero di immagini del tuo piano.
curl https://www.vortixy.net/api/v1/images \
-H "Authorization: Bearer vtx_live_..." \
-H "Content-Type: application/json" \
-d '{"prompt":"a cozy minimalist living room, warm light","quality":"quality"}'{ "image": { "mimeType": "image/png", "base64": "..." }, "remaining": 49 }quality: "standard" (veloce, economico) o "quality" (alto dettaglio). Scala dalla quota giornaliera immagini (Free 2/giorno, Go 8, Pro 30, Max 60).
Controlla il tuo piano attuale e le quote residue senza spendere token.
curl https://www.vortixy.net/api/v1/usage -H "Authorization: Bearer vtx_live_..."{ "plan":"pro","limits":{"aiTokensPerDay":120000,"aiRequestsPerDay":50},"resetsInSeconds": 43200 }Imposta webSearch: true per permettere a Vortixy di recuperare informazioni aggiornate dal web quando utile. La modalità ricerca suddivide domande complesse in sotto-query parallele e restituisce fonti citate.
await fetch("https://www.vortixy.net/api/v1/chat", {
method: "POST",
headers: { Authorization: "Bearer " + process.env.VORTIXY_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ message: "Latest AI breakthroughs with sources", webSearch: true })
});webSearch: false (default, senza web) | true (ricerca avanzata, 5 risultati, fonti citate). Ogni chiamata true conta 1 per la quota giornaliera di ricerche (Free 10/giorno, Go 25/giorno, Pro 50/giorno, Max 100/giorno).
Rimani organizzato con Progetti e attività pianificate. Gestiscili dalla Dashboard o dalla Chat — l'API rispetta gli stessi limiti del piano per spazi, file e attività.
Esempio: scrivi nella Chat "Ricordami ogni lunedì alle 9 di riassumere la mia settimana" — Vortixy crea un'attività pianificata visibile nella Dashboard.
Guarda conversaciones en Vortixy para no reenviar el historial cada vez. Mismo límite que tu plan (Free 30, Go 100, Pro 300, Max 400).
GET /api/v1/chats # lista tus chats
POST /api/v1/chats # {title} -> crea uno
GET /api/v1/chats/:id # detalle
PATCH /api/v1/chats/:id # {title} renombra
DELETE /api/v1/chats/:id
GET /api/v1/chats/:id/messages?limit=50
POST /api/v1/chats/:id/messages # {role, content}// POST /api/v1/chats
{ "title": "Mi proyecto Tesis" }
// -> { "chat": { "id": "uuid", "title": "Mi proyecto Tesis" } }
// POST /api/v1/chats/uuid/messages
{ "role": "user", "content": "Hola" }Sube PDFs, Word, texto o imágenes (20 MiB) para usarlos luego en el chat. Cuenta como artefacto diario (Free 3/día, Go 10/día, Pro 25/día, Max 60/día).
curl https://www.vortixy.net/api/v1/files \
-H "Authorization: Bearer vtx_live_..." -F file=@tarea.pdf
# JSON alternativo
curl -X POST https://www.vortixy.net/api/v1/files \
-H "Authorization: Bearer vtx_live_..." -H "Content-Type: application/json" \
-d '{"name":"tarea.pdf","mimeType":"application/pdf","base64":"..."}'GET /api/v1/files?limit=20 -> { "files": [{ "id": "...", "name": "tarea.pdf" }] }Crea espacios con instrucciones fijas. Límites Free 1 / Go 3 / Pro 8 / Max 15.
GET /api/v1/projects
POST /api/v1/projects # {title, subject, instructions}
GET /api/v1/projects/:id
PATCH /api/v1/projects/:id
DELETE /api/v1/projects/:idGenera flashcards o quiz desde un texto (Free 2/día, Go 5/día, Pro 12/día, Max 20/día). Luego puedes exportar a Anki.
curl https://www.vortixy.net/api/v1/study/generate \
-H "Authorization: Bearer vtx_live_..." -H "Content-Type: application/json" \
-d '{"content":"texto largo de apuntes...","kind":"flashcards","count":10}'{ "kind": "flashcards", "items": [{ "front": "¿Qué es...?", "back": "Es..." }] }Mismo chat pero con formato OpenAI: {messages:[{role,content}]}. Ideal para usar cualquier SDK de OpenAI cambiando solo la URL base a https://www.vortixy.net/api/v1.
// OpenAI SDK
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://www.vortixy.net/api/v1",
apiKey: process.env.VORTIXY_API_KEY
});
const res = await client.chat.completions.create({
model: "gemini-3.5-flash",
messages: [{role:"user", content:"Hola"}]
});
console.log(res.choices[0].message.content);curl https://www.vortixy.net/api/v1/chat/completions \
-H "Authorization: Bearer vtx_live_..." -H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"Hola"}],"stream":false}'Vortixy expone un espejo 100% compatible con el formato de OpenAI Chat Completions (2026). Cambia solo baseURL y tu apiKey — el mismo código funciona con el SDK oficial de OpenAI, Vercel AI SDK, LangChain o cualquier cliente compatible. Streaming usa SSE estándar data: {...} + data: [DONE] (como OpenAI 2026). Las mismas cuotas del plan (tokens/requests/búsquedas) se comparten con /api/v1/chat.
// OpenAI JS SDK — sin cambiar lógica
import OpenAI from "openai";
const vortixy = new OpenAI({
baseURL: "https://www.vortixy.net/api/v1",
apiKey: process.env.VORTIXY_API_KEY, // vtx_live_...
});
const res = await vortixy.chat.completions.create({
model: "gemini-3.5-flash",
messages: [
{ role: "system", content: "Eres un tutor amable." },
{ role: "user", content: "Explícame fotosíntesis en 3 bullets" }
],
stream: false,
// web_search / webSearch también soportado (alias):
// web_search: true
});
console.log(res.choices[0].message.content);
// res.usage => { prompt_tokens, completion_tokens, total_tokens }
// res.sources => [{title, url}] si webSearch:true
// Streaming SSE (igual que OpenAI 2026)
const stream = await vortixy.chat.completions.create({
model: "gemini-3.5-flash",
messages: [{ role: "user", content: "Hola" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || "");
}// Vercel AI SDK (2026)
import { createOpenAI } from "@ai-sdk/openai";
const vortixy = createOpenAI({
baseURL: "https://www.vortixy.net/api/v1",
apiKey: process.env.VORTIXY_API_KEY,
});
const { text } = await generateText({
model: vortixy("gemini-3.5-flash"),
prompt: "Resume este PDF en 5 puntos",
});curl https://www.vortixy.net/api/v1/chat/completions \
-H "Authorization: Bearer vtx_live_..." -H "Content-Type: application/json" \
-d '{
"model": "gemini-3.5-flash",
"messages": [{"role":"user","content":"Hola"}],
"stream": false
}'
# con búsqueda web (alias 2026 tolerante):
# "web_search": true o "webSearch": true -> grounding Tavily + sources[]
# Python
# from openai import OpenAI
# client = OpenAI(base_url="https://www.vortixy.net/api/v1", api_key="vtx_live_...")
# res = client.chat.completions.create(model="gemini-3.5-flash", messages=[{"role":"user","content":"Hola"}])Nota 2026: formato idéntico a OpenAI — id: chatcmpl-..., object: chat.completion, choices[0].message, usage y streaming data: {choices: [{delta: {content: "..."}}]} + data: [DONE]. Envelope SSE estándar (OpenAI-compatible). 401 sin Bearer, 429 con Retry-After/RateLimit-*.
Recibe avisos en tu servidor cuando algo pasa. Máx 5 por cuenta.
GET /api/v1/webhooks # lista
POST /api/v1/webhooks # {url, events:["chat.completed","task.completed","quota.warning"]}
DELETE /api/v1/webhooks?id=uuidSpec completo en GET /api/v1/openapi para importar en Postman, Insomnia o generar SDK.
curl https://www.vortixy.net/api/v1/openapiTutti gli errori seguono RFC 9457 con messaggio localizzato. Controlla il campo code per la gestione programmatica.
{ "error": "You reached the daily quota. Try again after 2h.", "code": "quotaExceeded", "retryAfter": 7200 }| Status | Code | When |
|---|---|---|
| 400 | validation | JSON non valido o campo fuori intervallo |
| 401 | apiKeyInvalid | Chiave Bearer mancante o non valida |
| 403 | planRequired | Modello non consentito per il tuo piano |
| 403 | byokMissing | Chiave BYOK mancante per questo provider — salvala in Dashboard → Impostazioni → Chiavi AI |
| 429 | quotaExceeded | Quota giornaliera token / richieste / ricerche raggiunta |
| 502 | aiEngineFailed | Errore modello upstream |
Header: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Retry-After, WWW-Authenticate on 401.
Copia, incolla ed esegui. Node 18+ ha già fetch — nessun pacchetto extra.
// Node 18+ — no install needed
const res = await fetch("https://www.vortixy.net/api/v1/chat", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.VORTIXY_API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({
message: "Turn these notes into a plan: ...",
system: "You are a concise assistant.",
thinkingLevel: "medium",
webSearch: false,
stream: false
})
});
const data = await res.json();
console.log(data.answer);
// Streaming chatbot
const streamRes = await fetch("https://www.vortixy.net/api/v1/chat", {
method: "POST",
headers: { Authorization: "Bearer " + process.env.VORTIXY_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ message: "Hello!", stream: true })
});
for await (const chunk of streamRes.body) {
// parse NDJSON lines: {type:"delta", delta:"..."} -> {type:"done", answer:"..."}
}
// Image
const imgRes = await fetch("https://www.vortixy.net/api/v1/images", {
method: "POST",
headers: { Authorization: "Bearer " + process.env.VORTIXY_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ prompt: "minimalist logo for Vortixy", quality: "quality" })
});
const { image } = await imgRes.json();
// image.base64 -> save as PNG
// Python — same API
// import requests
// r = requests.post("https://www.vortixy.net/api/v1/chat",
// headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"},
// json={"message": "Hello!", "thinkingLevel": "high", "webSearch": True})
// print(r.json()["answer"])