Descripciรณn general
- Alcances configurables para la cobertura de calendar y seรฑales, de modo que solo recibas los datos que necesitas
- Entregas idempotentes con un encabezado รบnico
X-BZ-Deliveryy un campoiden la carga รบtil para la deduplicaciรณn - Estrategia de reintentos sรณlida que escala desde reintentos exponenciales rรกpidos hasta intentos por hora a largo plazo
- Transformaciones de content opcionales para alinear las cargas รบtiles con las expectativas de los sistemas posteriores
Entrega de webhooks
Detalles de la solicitud HTTP
- Mรฉtodo:
POST - Content-Type:
application/json - User-Agent:
Benzinga-Dispatch/v1.0.0 {build-version} - Encabezado personalizado:
X-BZ-Delivery- Un UUID รบnico para cada intento de entrega (รบtil para evitar duplicados)
Polรญtica de reintentos
- Fase exponencial: 15 reintentos durante los primeros 5 minutos
- Reintentos exponenciales adicionales: 11 reintentos mรกs si es necesario
- Fase de intervalo fijo: 12 reintentos por hora ร 24 horas/dรญa ร 7 dรญas (para reintentos a largo plazo)
- Tiempo mรกximo de espera: 5 minutos entre reintentos en la fase exponencial
- Tiempo de espera de la solicitud: 30 segundos por solicitud
Requisitos de la respuesta
- Cรณdigos de รฉxito (200-202, 204): Indican una entrega correcta. No se realizarรกn nuevos intentos.
- Cรณdigos de error de cliente (401-403): Indican un error de autenticaciรณn/autorizaciรณn. Los reintentos se detendrรกn inmediatamente para evitar mรกs intentos fallidos.
- Otros cรณdigos (4xx, 5xx): Activarรกn reintentos segรบn la polรญtica de reintentos indicada arriba.
Estructura del payload del webhook
Campos del payload
Campos principales
id(string, UUID): Identificador รบnico de esta entrega de webhook. รsalo para evitar duplicados.api_version(string): Identificador de la versiรณn de la API. Actualmente"webhook/v1".kind(string): Identificador de la ruta del tipo de datos. Consulta Tipos de datos compatibles para ver todos los valores posibles.
Objeto de datos
action(string): Tipo de acciรณn del evento. Posibles valores:"Created": Se crearon nuevos datos (valor predeterminado para nuevas claves de webhook)"Updated": Se actualizaron datos existentes"Removed": Se eliminaron datos- Nota: Las claves de webhook heredadas pueden recibir valores en minรบsculas:
"created","updated","removed"
id(string): Identificador รบnico del registro de calendar o seรฑaltimestamp(string, ISO 8601): Momento en que se generรณ el webhookcontent(object): Los datos de calendar o seรฑal propiamente dichos. La estructura varรญa segรบn el tipo de datos (consulta Tipos de datos compatibles)
Tipos de datos admitidos
Tipos de datos del calendar (v2.1)
| Tipo de dato | Kind Path | Descripciรณn |
|---|---|---|
| Earnings | data/v2.1/calendar/earnings | Anuncios de resultados de empresas |
| Dividends | data/v2.1/calendar/dividends | Declaraciones y pagos de dividendos |
| Ratings | data/v2.1/calendar/ratings | Calificaciones de analistas y precios objetivo |
| IPOs | data/v2.1/calendar/ipos | Ofertas pรบblicas iniciales |
| Guidance | data/v2.1/calendar/guidance | Actualizaciones de guidance de empresas |
| Conference | data/v2.1/calendar/conference | Conferencias telefรณnicas y presentaciones |
| Economics | data/v2.1/calendar/economics | Indicadores y comunicados econรณmicos |
| Offerings | data/v2.1/calendar/offerings | Ofertas secundarias |
| Mergers & Acquisitions | data/v2.1/calendar/ma | Anuncios de M&A |
| Retail | data/v2.1/calendar/retail | Datos de ventas minoristas |
| Splits | data/v2.1/calendar/splits | Desdoblamientos de acciones |
| FDA | data/v2.1/calendar/fda | Aprobaciones y anuncios de la FDA |
Tipos de datos de seรฑales (v1)
| Tipo de datos | Kind Path | Descripciรณn |
|---|---|---|
| Actividad de opciones | data/v1/signal/option_activity | Actividad inusual de opciones |
| WIIMs | data/v1/wiims | Datos de Why Is It Moving (WIIMs) |
| Transacciones internas de la SEC | data/v1/sec/insider_transactions/filings | Declaraciones de operaciones internas ante la SEC |
| Operaciones gubernamentales | data/v1/gov/usa/congress | Datos de operaciones del Congreso de EE. UU. |
Tipos de datos adicionales (v1)
| Tipo de dato | Ruta Kind | Descripciรณn |
|---|---|---|
| Bulls Say Bears Say | data/v1/bulls_bears_say | Anรกlisis de sentimiento del mercado |
| Bulls Say Bears Say (Korean) | data/v1/bulls_bears_say/korean | Sentimiento del mercado coreano |
| Analyst Insights | data/v1/analyst/insights | Opiniones y comentarios de analistas |
| Consensus Ratings | data/v1/consensus-ratings | Calificaciones de consenso agregadas |
Ejemplos de estructuras de contenido
Ejemplo de resultados
Ejemplo de dividendos
Ejemplo de calificaciones
Ejemplo de actividad en opciones
Acciones de eventos
- Created: Se activa cuando se publican nuevos datos de calendario o de seรฑales
- Updated: Se activa cuando se modifican datos existentes
- Removed: Se activa cuando se eliminan datos
- Nuevas claves de webhook: Reciben acciones con mayรบscula inicial (
"Created","Updated","Removed") - Claves de webhook heredadas: Reciben acciones en minรบsculas (
"created","updated","removed")
Filtrado de contenido
Opciones de filtrado
- Tipos de datos: Filtra por tipos especรญficos de calendario/seรฑal (p. ej., solo ganancias, solo calificaciones)
- Filtros geogrรกficos: Controla si recibes:
- Datos del mercado de EE. UU. (
AllowUSA) - Datos del mercado canadiense (
AllowCanada) - Datos del mercado indio (
AllowIndia) - para datos de WIIMs
- Datos del mercado de EE. UU. (
- Filtro de fecha: Excluye datos histรณricos anteriores a una fecha especรญfica (
MaxHistoricalDate)
Filtrado por exchange
- Exchanges de EE. UU.: NYSE, NASDAQ, AMEX, ARCA, OTC, OTCBB, PINX, PINK, BATS, IEX
- Exchanges canadienses: TSX, TSXV, CSE, CNSX
Transformaciรณn de contenido
- Cambio de nombre de campos
- Conversiรณn de formato de datos
- Filtrado/eliminaciรณn de campos
Prรกcticas recomendadas
1. Idempotencia
id (UUID) del payload para implementar la idempotencia. Almacene los ID de entregas ya procesadas para evitar procesarlas mรกs de una vez.
2. Gestiรณn de respuestas
- Devolver
200 OKo204 No Contentinmediatamente tras recibir el webhook - Procesar los datos de forma asรญncrona si es necesario
- No ejecutar operaciones de larga duraciรณn antes de responder
3. Gestiรณn de errores
- Devolver cรณdigos de estado HTTP apropiados
- Para errores de autenticaciรณn (401-403), asegurarse de que el endpoint estรฉ configurado correctamente
- Para fallos temporales, devolver cรณdigos de estado 5xx para activar reintentos
4. Seguridad
- Usa HTTPS para tu endpoint de webhook
- Implementa autenticaciรณn y autorizaciรณn (claves de API, tokens, etc.)
- Valida el encabezado
X-BZ-Deliverypara mayor seguridad
5. Supervisiรณn
- Supervisa los tiempos de respuesta de tu endpoint
- Configura alertas para fallos reiterados
- Realiza un seguimiento del encabezado
X-BZ-Deliverypara identificar intentos de entrega
6. Gestiรณn de tipos de datos
- Comprueba el campo
kindpara determinar el tipo de dato - Analiza el objeto
contentsegรบn la estructura de ese tipo de dato - Gestiona diferentes formatos de acciรณn (mayรบsculas vs. minรบsculas) si se admiten claves heredadas
Ejemplo de controlador de webhook
Python (Flask)
Node.js (Express)
Go
Soluciรณn de problemas
Problemas comunes
-
No se reciben webhooks
- Verifica que la URL de tu webhook estรฉ configurada correctamente
- Comprueba que tu endpoint sea accesible pรบblicamente
- Asegรบrate de que tu API key sea vรกlida y estรฉ activa
- Verifica que los filtros no estรฉn excluyendo todos los tipos de datos
- Comprueba que tus filtros geogrรกficos coincidan con los datos que esperas
-
Entregas duplicadas
- Implementa idempotencia usando el campo
id - Revisa los tiempos de respuesta de tu endpoint (las respuestas lentas pueden provocar reintentos)
- Implementa idempotencia usando el campo
-
Errores de autenticaciรณn (401-403)
- Verifica la configuraciรณn de autenticaciรณn de tu endpoint
- Comprueba las API keys y los tokens
- Nota: Los errores de autenticaciรณn detienen los reintentos inmediatamente
-
Errores de tiempo de espera (timeout)
- Asegรบrate de que tu endpoint responda en menos de 30 segundos
- Procesa los datos de forma asรญncrona si es necesario
- Devuelve una respuesta de รฉxito inmediatamente y procesa despuรฉs
-
Formato de acciรณn inesperado
- Comprueba si estรกs usando una webhook key antigua (acciones en minรบsculas)
- Actualiza a una webhook key nueva para recibir acciones con mayรบscula inicial
- Maneja ambos formatos si das soporte a mรบltiples clientes
-
Tipos de datos que faltan
- Verifica que la configuraciรณn de tu webhook incluya los tipos de datos deseados
- Revisa los filtros geogrรกficos (configuraciones US/Canada/India)
- Asegรบrate de que los filtros de fecha no estรฉn excluyendo datos recientes
Soporte
- Consulta la Documentaciรณn de la API de Benzinga
- Ponte en contacto con tu representante de cuenta de Benzinga
- Revisa la configuraciรณn del webhook con tu equipo de integraciรณn
Historial de versiones
- v1.0.0: Lanzamiento inicial del servicio de webhooks de datos
- Versiรณn actual: Mecanismos mejorados de filtrado, transformaciรณn y reintentos