Sylor S1 API
Documentación oficial de la familia de modelos fundacionales de Orzatty. Integra Sylor Pro y Sylor Flash en cualquier aplicación mediante una API rápida, con streaming SSE y autenticación unificada.
Autenticación
Todas las peticiones autenticadas necesitan el encabezado Authorization: Bearer <token>. Puedes usar:
- JWT de OrzattyAccount: obtenido tras iniciar sesión en OrzattyAccount.
- API Key Sylor: creada desde la sección API Keys de Orzatty AI Studio. Su prefijo es
sylorz_.
Authorization: Bearer sylorz_sk_xxxxxxxxxxxx
Obtener tu API Key
- Inicia sesión en Orzatty AI Studio.
- Ve a API Keys y pulsa Crear Key.
- Copia el token en un lugar seguro; no se mostrará completo de nuevo.
Base URL
https://api.sylor.orzatty.com
Modelos soportados
Envía el ID del modelo en el campo model del body de /api/chat.
| ID | Nombre | Descripción | Modos |
|---|---|---|---|
flash | Sylor S1 Flash | Respuestas rápidas y económicas para chat, resúmenes y tareas cotidianas. | standard |
pro | Sylor S1 Pro | Razonamiento profundo, código, análisis, pensamiento paso a paso y multimodal. | standard, thinking, deep_research |
POST /api/chat
Chat principal con streaming SSE. Acepta texto, imágenes base64 y controla el nivel de razonamiento.
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
message | string | sí | Prompt del usuario. |
model | string | sí | flash o pro. |
mode | string | no | standard, thinking o deep_research (modos Pro requieren plan de pago). |
reasoningLevel | string | no | low, normal o high (por defecto normal). |
conversationId | string | no | ID de conversación para mantener contexto. Si no se envía, se crea una nueva. |
temporary | boolean | no | Si es true, no se persiste la conversación en el servidor. |
history | array | no | Historial provisional a usar junto con temporary. |
images | array | no | Imágenes base64 para entrada multimodal. Auto-rutea a Pro. |
Ejemplo en cURL
curl -N -X POST https://api.sylor.orzatty.com/api/chat \
-H "Authorization: Bearer sylorz_tu_key" \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-d '{
"model": "pro",
"mode": "thinking",
"message": "Explica la arquitectura transformer paso a paso."
}'
Ejemplo en JavaScript (SSE)
const res = await fetch('https://api.sylor.orzatty.com/api/chat', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'text/event-stream',
'Authorization': `Bearer ${SYLOR_API_KEY}`
},
body: JSON.stringify({ model: 'flash', message: 'Hola Sylor' })
});
const reader = res.body.getReader();
const decoder = new TextDecoder();
let buffer = '';
while (true) {
const { done, value } = await reader.read();
if (done) break;
buffer += decoder.decode(value, { stream: true });
const lines = buffer.split('\n');
buffer = lines.pop() || '';
for (const line of lines) {
if (line.startsWith('data: ')) {
const payload = line.slice(6);
if (payload === '[DONE]') continue;
const data = JSON.parse(payload);
console.log(data.text || data.status);
}
}
}
Ejemplo en Python (SSE)
import json, requests
url = 'https://api.sylor.orzatty.com/api/chat'
headers = {
'Authorization': 'Bearer sylorz_tu_key',
'Content-Type': 'application/json',
'Accept': 'text/event-stream'
}
payload = {'model': 'pro', 'message': 'Resume la arquitectura transformer.'}
with requests.post(url, json=payload, headers=headers, stream=True) as r:
for line in r.iter_lines():
if line.startswith(b'data: '):
data = line[6:].decode('utf-8')
if data == '[DONE]': continue
print(json.loads(data).get('text', ''), end='')
GET /api/user/status
Devuelve el estado actual del usuario: plan, créditos restantes, saldo de recargas y límites activos.
curl https://api.sylor.orzatty.com/api/user/status \
-H "Authorization: Bearer sylorz_tu_key"
{
"success": true,
"plan": "free",
"flashRemaining": 15,
"flashLimit": 20,
"flashResetAt": "2026-07-21T00:00:00.000Z",
"proRemaining": 3,
"proLimit": 5,
"rechargeBalance": 0
}
GET / DELETE /api/conversations/:id
Lista, consulta y elimina conversaciones persistentes del usuario. Para listar:
curl https://api.sylor.orzatty.com/api/conversations \
-H "Authorization: Bearer sylorz_tu_key"
Para eliminar una conversación:
curl -X DELETE https://api.sylor.orzatty.com/api/conversations/CONVERSATION_ID \
-H "Authorization: Bearer sylorz_tu_key"
POST / GET /api/recharges
Solicita y consulta recargas manuales de saldo. Tras crearla recibirás instrucciones de pago; una vez acreditado, el saldo se reflejará en /api/user/status.
curl -X POST https://api.sylor.orzatty.com/api/recharges \
-H "Authorization: Bearer sylorz_tu_key" \
-H "Content-Type: application/json" \
-d '{
"amount": 10,
"method": "paypal",
"reference": "ID_DE_TRANSACCION_O_NOTE"
}'
Límites, precios y tiers
Los límites crecen automáticamente según el saldo recargado acumulado.
| Tier | Recargas acumuladas | Concurrencia | RPM | TPM |
|---|---|---|---|---|
| Tier 1 | $1 – $49 | 50 | 200 | 1M |
| Tier 2 | $50 – $199 | 100 | 500 | 2M |
| Tier 3 | $200 – $999 | 200 | 1,500 | 4M |
| Tier 4 | $1,000 – $2,999 | 500 | 5,000 | 8M |
| Tier 5 | $3,000+ | 1,000 | 10,000 | 16M |
Precios por 1M de tokens
| Modelo | Entrada | Entrada caché | Salida |
|---|---|---|---|
| Sylor S1 Pro | $1.00 | $0.20 | $4.50 |
| Sylor S1 Flash | $0.30 | — | $0.40 |
Errores comunes
| Código | Significado |
|---|---|
| 400 | Petición mal formada (falta message, monto inválido, etc.). |
| 401 | Token ausente, inválido o expirado. |
| 402 | El modo requiere un plan de pago (mode_requires_pro). |
| 429 | Rate limit: rate_limit o pro_rate_limit. |
| 500 | Error interno. Reintenta en unos segundos. |
¿Necesitas ayuda?
Para reportes de bugs o integraciones empresariales contacta a dev@orzatty.com. Para soporte de cuentas y facturación escribe a soporte@orzatty.com.