Saltar al contenido principal
La API Realtime expone conversaciones de texto y audio de baja latencia compatibles con OpenAI mediante sesiones websocket, además de un endpoint HTTP para tokens de cliente de corta duración.

Conexión WebSocket

Abra directamente una sesión websocket realtime cuando su backend pueda conservar de forma segura la clave API de DGrid.
WSS wss://api.dgrid.ai/v1/realtime?model={model}
AuthorizationAuthorization: Bearer <DGRID_API_KEY>; OpenAI-Beta: realtime=v1
Solicitudwebsocket
Respuestawebsocket events

Parámetros de consulta

ParámetroTipoObligatorioDescripción
modelstringIdentificador del modelo realtime, como gpt-4o-realtime-preview.

Eventos del cliente

Tipo de eventoDescripción
session.updateActualiza opciones a nivel de sesión.
input_audio_buffer.appendEnvía fragmentos de audio al servidor.
input_audio_buffer.commitConfirma el audio actualmente almacenado en buffer.
response.createDispara una nueva respuesta del asistente.
conversation.item.createInserta un elemento de conversación.

Eventos del servidor

Tipo de eventoDescripción
session.createdLa sesión se creó correctamente.
session.updatedLa configuración de la sesión se actualizó.
response.text.deltaDelta de token de texto en streaming.
response.audio.deltaDelta de fragmento de audio en streaming.
response.doneLa respuesta ha finalizado.
errorCarga útil de error.
const ws = new WebSocket(
  'wss://api.dgrid.ai/v1/realtime?model=gpt-4o-realtime-preview',
  [],
  {
    headers: {
      Authorization: `Bearer ${apiKey}`,
      'OpenAI-Beta': 'realtime=v1'
    }
  }
)

ws.onopen = () => {
  ws.send(JSON.stringify({
    type: 'session.update',
    session: {
      modalities: ['text', 'audio'],
      voice: 'alloy'
    }
  }))
}

ws.onmessage = (event) => {
  const data = JSON.parse(event.data)
  console.log('received event:', data)
}

Crear token de sesión Realtime

Use el ejemplo del endpoint realtime que se muestra abajo cuando necesite una solicitud GET autenticada al punto de entrada HTTP realtime.
GET /v1/realtime
AuthorizationAuthorization: Bearer <DGRID_API_KEY>
Solicitudnone
Respuesta101 · application/json

Encabezados de solicitud

CampoTipoObligatorioDescripción
AuthorizationstringToken Bearer usado para autenticar la solicitud realtime.

Cuerpo de la respuesta

CampoTipoDescripción
101textRespuesta de upgrade correcta sin cuerpo JSON.
errorobjectCarga útil de error devuelta cuando falla la solicitud.
curl -X GET "https://api.dgrid.ai/v1/realtime" \
  -H "Authorization: Bearer "
Empty

Eventos WebSocket

Diseñe su cliente alrededor de un pequeño conjunto de tipos de evento de solicitud y respuesta para streaming conversacional de baja latencia.
WSS wss://api.dgrid.ai/v1/realtime?model={model}
AuthorizationAuthorization: Bearer <DGRID_API_KEY>; OpenAI-Beta: realtime=v1
Solicitudwebsocket
Respuestaevent stream

Eventos principales del cliente

Tipo de eventoDescripción
session.updateActualiza modalidades, voz u otras preferencias de sesión.
input_audio_buffer.appendEnvía fragmentos de audio codificados.
input_audio_buffer.commitMarca el audio en buffer como listo.
response.createPide al servidor que empiece a generar una respuesta.
conversation.item.createAñade un turno de conversación o un resultado de tool.

Eventos principales del servidor

Tipo de eventoDescripción
session.createdConfirmación inicial de que la sesión websocket existe.
session.updatedConfirmación de que la configuración de la sesión cambió.
response.text.deltaSalida de texto incremental.
response.audio.deltaSalida de audio incremental.
response.doneEvento final para una respuesta completada.
errorCarga útil de error recuperable o fatal.

Guía de integración

  1. Agrupe el audio del lado del cliente en fragmentos pequeños y use input_audio_buffer.commit para señalar los límites de turno.
  2. Escuche tanto response.text.delta como response.audio.delta si la sesión admite salida multimodal.
  3. Use el endpoint HTTP de token de sesión para clientes de navegador de modo que la clave API de larga duración nunca llegue al cliente.
{
  "type": "response.text.delta",
  "response_id": "resp_123",
  "delta": "Hello"
}