Documentación API

Compatible OpenAI. Sin migración. Una API para 7 modelos.

1. Visión general

La API de XABLE es totalmente compatible con OpenAI. Usa cualquier SDK o cliente HTTP — solo cambia base_url y api_key para alternar sin problemas.

Inicio rápido

Elige cualquiera de las tres opciones:

Python (OpenAI SDK)
from openai import OpenAI

client = OpenAI(
    base_url="https://xable.com.cn/v1",
    api_key="xb_live_<your-key>"
)

response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[{"role": "user", "content": "你好,请用中文回答"}]
)
print(response.choices[0].message.content)
cURL
curl https://xable.com.cn/v1/chat/completions \
  -H "Authorization: Bearer xb_live_<your-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-flash",
    "messages": [
      {"role": "user", "content": "你好,请用中文回答"}
    ]
  }'
Node.js (OpenAI SDK)
import OpenAI from "openai"

const client = new OpenAI({
  baseURL: "https://xable.com.cn/v1",
  apiKey: "xb_live_<your-key>"
})

const response = await client.chat.completions.create({
  model: "deepseek-v4-flash",
  messages: [{ role: "user", content: "你好,请用中文回答" }]
})
console.log(response.choices[0].message.content)

2. Autenticación

Todas las peticiones API deben llevar un Bearer Token en la cabecera HTTP para autenticarse. El token es tu API Key.

Obtener API Key

Inicia sesión en Consola →Crea una clave en la página «API Key». Prefijo: xb_live_.

Consejo de seguridad: Guarda tu API Key y no la compartas con terceros. Si se filtra, desactívala o elimínala en la consola y crea una nueva.
Formato de cabecera
Authorization: Bearer xb_live_<your-api-key>

3. Endpoints API

Todos los endpoints son RESTful. URL base:

https://xable.com.cn/v1
EndpointMétodoDescripción
/v1/modelsGETLista de modelos disponibles
/v1/chat/completionsPOSTChat (core)

Nota: las rutas no usan prefijo /api; usa /v1/... directamente

4. Modelos

Consulta todos los modelos disponibles:

Solicitud
curl https://xable.com.cn/v1/models \
  -H "Authorization: Bearer xb_live_<your-key>"
CampoTipoDescripción
idstringIdentificador del modelo (usado como parámetro model)
objectstringFijo a "model"
createdintMarca de tiempo de creación
owned_bystringProveedor del modelo

Para detalles y precios, visita página de Model API .

5. Chat

Usa /v1/chat/completions para enviar una petición de chat.

Ejemplo

POST /v1/chat/completions
curl https://xable.com.cn/v1/chat/completions \
  -H "Authorization: Bearer xb_live_<your-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-flash",
    "messages": [
      {"role": "system", "content": "你是一个有用的助手"},
      {"role": "user", "content": "请用中文介绍一下你自己"}
    ],
    "temperature": 0.7,
    "max_tokens": 2048,
    "top_p": 1,
    "frequency_penalty": 0,
    "presence_penalty": 0,
    "stream": false
  }'

6. Parámetros

ParámetroTipoObligatorioDescripción
modelstringSíID del modelo, ver lista
messagesarraySíLista de mensajes
temperaturenumberNoTemperatura, 0–2, def. 1
top_pnumberNoTop-p, 0–1, def. 1
nintNoNº de respuestas, def. 1
streamboolNoStreaming, def. false
max_tokensintNoMáx. tokens de salida
stopstring/arrayNoSecuencia de parada
frequency_penaltynumberNoPenalización de frecuencia, −2 a 2, def. 0
presence_penaltynumberNoPenalización de presencia, −2 a 2, def. 0
userstringNoID de usuario (para monitoreo)

Objeto Message

ParámetroTipoObligatorioDescripción
rolestringSísystem / user / assistant / tool
contentstringSíContenido del mensaje
namestringNoAutor del mensaje
tool_callsarrayNoLlamadas a herramientas (rol assistant)
tool_call_idstringNoID de llamada (rol tool)

7. Formato de respuesta

Respuestas no-streaming devuelven el JSON completo:

Ejemplo de respuesta
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1717500000,
  "model": "deepseek-v4-flash",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "我是 AI 助手,很高兴为你服务!"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 15,
    "completion_tokens": 20,
    "total_tokens": 35
  }
}
CampoTipoDescripción
idstringID único de petición
objectstringFijo a chat.completion
createdintMarca de tiempo
modelstringModelo usado
choices[].message.contentstringTexto de respuesta
choices[].finish_reasonstringstop / length / content_filter
usage.prompt_tokensintTokens de entrada
usage.completion_tokensintTokens de salida
usage.total_tokensintTokens totales

8. Streaming

Define stream: true para habilitar Server-Sent Events (SSE):

Streaming Python
from openai import OpenAI

client = OpenAI(
    base_url="https://xable.com.cn/v1",
    api_key="xb_live_<your-key>"
)

stream = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[{"role": "user", "content": "你好"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

Formato streaming (cada línea empieza con data: ):

Streaming SSE
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"你"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"好"},"finish_reason":null}]}
data: [DONE]

9. Generación de imágenes

Algunos modelos generan imágenes. Usa /v1/images/generations endpoint, compatible con la API de imágenes OpenAI.

Ejemplo

POST /v1/images/generations
curl https://xable.com.cn/v1/images/generations \
  -H "Authorization: Bearer xb_live_<your-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-flash",
    "prompt": "A futuristic city with neon lights, digital art style",
    "n": 1,
    "size": "1024x1024"
  }'

Parámetros

ParámetroTipoObligatorioDescripción
modelstringSíID del modelo de imagen
promptstringSíDescripción de la imagen
nintNoImágenes por llamada, def. 1
sizestringNoTamaño: 256x256 / 512x512 / 1024x1024
qualitystringNoCalidad: standard / hd (algunos modelos)

Ejemplo Python SDK

Python
from openai import OpenAI

client = OpenAI(
    base_url="https://xable.com.cn/v1",
    api_key="xb_live_<your-key>"
)

response = client.images.generate(
    model="stable-diffusion-xl-free",
    prompt="A futuristic city with neon lights",
    n=1,
    size="1024x1024"
)

print(response.data[0].url)

10. Guía SDK

La API de XABLE es totalmente compatible con OpenAI. Puedes usar el SDK OpenAI en cualquier lenguaje. Aquí hay ejemplos completos para lenguajes populares.

Python (Recomendado)

Instalar: pip install openai

Ejemplo Python completo
from openai import OpenAI

client = OpenAI(
    base_url="https://xable.com.cn/v1",
    api_key="xb_live_<your-key>"
)

# 非流式聊天
response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "system", "content": "你是一个有用的助手"},
        {"role": "user", "content": "请用中文介绍 XABLE 平台"}
    ],
    temperature=0.7,
    max_tokens=1024
)
print(response.choices[0].message.content)

# 流式聊天
stream = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[{"role": "user", "content": "你好"}],
    stream=True
)
for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

Node.js / TypeScript

Instalar: npm install openai

Ejemplo Node.js completo
import OpenAI from "openai"

const client = new OpenAI({
  baseURL: "https://xable.com.cn/v1",
  apiKey: "xb_live_<your-key>"
})

// 非流式聊天
const response = await client.chat.completions.create({
  model: "deepseek-v4-flash",
  messages: [
    { role: "system", content: "你是一个有用的助手" },
    { role: "user", content: "请用中文介绍 XABLE 平台" }
  ],
  temperature: 0.7,
  max_tokens: 1024
})
console.log(response.choices[0].message.content)

// 流式聊天
const stream = await client.chat.completions.create({
  model: "deepseek-v4-flash",
  messages: [{ role: "user", content: "你好" }],
  stream: true
})
for await (const chunk of stream) {
  if (chunk.choices[0]?.delta?.content) {
    process.stdout.write(chunk.choices[0].delta.content)
  }
}

Go

Instalar: go get github.com/sashabaranov/go-openai

Ejemplo Go completo
package main

import (
    "context"
    "fmt"
    openai "github.com/sashabaranov/go-openai"
)

func main() {
    cfg := openai.DefaultConfig("xb_live_<your-key>")
    cfg.BaseURL = "https://xable.com.cn/v1"
    client := openai.NewClientWithConfig(cfg)

    // 非流式聊天
    resp, err := client.CreateChatCompletion(
        context.Background(),
        openai.ChatCompletionRequest{
            Model: "deepseek-v4-flash",
            Messages: []openai.ChatCompletionMessage{
                {Role: "system", Content: "你是一个有用的助手"},
                {Role: "user", Content: "请用中文介绍 XABLE 平台"},
            },
        },
    )
    if err != nil {
        panic(err)
    }
    fmt.Println(resp.Choices[0].Message.Content)
}

Java

Dependencia Maven: com.theokanning.openai-gpt3-java

Ejemplo Java completo
import com.theokanning.openai.OpenAiService;
import com.theokanning.openai.completion.chat.*;

List<ChatMessage> messages = new ArrayList<>();
messages.add(new ChatMessage("system", "你是一个有用的助手"));
messages.add(new ChatMessage("user", "请用中文介绍 XABLE 平台"));

OpenAiService service = new OpenAiService("xb_live_<your-key>", 30);
service.setBaseUrl("https://xable.com.cn/v1");

ChatCompletionRequest request = ChatCompletionRequest.builder()
    .model("deepseek-v4-flash")
    .messages(messages)
    .build();

service.createChatCompletion(request).getChoices()
    .forEach(c -> System.out.println(c.getMessage().getContent()));

11. Códigos de error

Código HTTPTipo de errorDescripción
400invalid_request_errorParámetros de petición inválidos
401authentication_errorAPI Key inválida o faltante
403permission_errorSin permiso (saldo insuficiente o no autenticado)
404not_foundRecurso no encontrado
429rate_limit_errorLímite de frecuencia excedido
500server_errorError interno del servidor
503service_unavailableServicio no disponible
Ejemplo de error
{
  "error": {
    "message": "Incorrect API key provided: xxx. You can find your API key at https://xable.com.cn/console.",
    "type": "authentication_error",
    "param": null,
    "code": "invalid_api_key"
  }
}

12. Límites

Para garantizar estabilidad, las llamadas API tienen límite de frecuencia. Superarlo devuelve 429.

ElementoPredeterminadoDescripción
Frecuencia10 RPMMáx 10 peticiones/min
Concurrencia10 concurrentesMáx 10 peticiones simultáneas
Tiempo de espera120 segundosEspera máx. por petición
Máx tokens/peticiónSegún modeloVaría por modelo

Los clientes empresariales pueden contactar soporte para subir límites. Tanto usuarios gratis como de pago usan la base de cómputo propia + socia de XABLE para inferencia estable.

13. Facturación

XABLE usa facturación por uso, cobrando en tiempo real por tokens consumidos, con precios separados de entrada/salida.

Reglas de facturación

ElementoDescripción
Unidad de facturaciónPor 1000 tokens (~700–800 caracteres)
Cargo mínimoMín ¥0.005 por llamada
FacturaciónEl uso se descuenta del saldo en tiempo real, sin consumo mínimo; saldo insuficiente devuelve 402 XB_INSUFFICIENT_BALANCE.
Método de cobroDescontado del saldo en tiempo real, sin facturación post-pago
Consulta de saldoInicia sesión en la consola para ver saldo y uso

Precios

Los precios varían por modelo. Consulta página de Model API para el precio de entrada/salida de cada modelo. En general, los modelos open-source/gratis son más baratos; los insignia cuestan más pero son más capaces.

💡 Consejos para ahorrar

  • • Usa modelos open-source/gratis (p. ej. deepseek-v4-flash) para tareas simples en vez de modelos insignia
  • • Define un max_tokens razonable para evitar salida muy larga
  • • Usa streaming (stream: true) para menor latencia del primer token
  • • Los usuarios empresariales pueden contactar soporte para precios exclusivos y mayor concurrencia

Preguntas frecuentes

¿Cómo obtengo una API Key?

Tras registrarte e iniciar sesión, créala en la página «API Key» de la consola. El prefijo es xb_live_; cópiala y guárdala tras crearla.

¿Qué protocolo usa la API?

Totalmente compatible con OpenAI. Soporta el endpoint chat/completions y los SDK OpenAI de Python/Node.js.

¿Diferencia entre usuarios gratis y de pago?

Los gratis prueban chat IA básico. Los de pago (saldo > 0) tienen mayor concurrencia, servicio más estable y acceso total a modelos.

¿Cómo se factura?

Facturación en tiempo real por tokens, entrada y salida separados. Mín ¥0.005 (0.5 céntimos) por llamada.

¿Qué SDK se soportan?

Todos los SDK OpenAI: Python, Node.js, Go, Java, .NET, etc. Solo cambia base_url y api_key.

¿Cuál es el límite de concurrencia?

Por defecto 10 concurrentes. Los empresariales pueden subirlo vía soporte.

¿Listo para empezar?

IA sin barreras — paga solo lo que usas

Regístrate gratis