2 endpoints · Materias primas · Macro
https://api.blave.orgapi-key + secret-key en cada solicitudAPI plan or Blave Agent plan/studio/market/db/ohlcv/<dataset>/<symbol>/<schema> | Nombre | Descripción | Valores permitidos | Predeterminado |
|---|---|---|---|
datasetstring · pathObligatorio | Conjunto de datos del mercado | GLBX.MDP3 (CME), IFEU.IMPACT (ICE) | |
symbolstring · pathObligatorio | Contrato continuo del mes más cercano | GLBX.MDP3: CL (crudo WTI), GC (oro); IFEU.IMPACT: BRN (Brent) | |
schemastring · pathObligatorio | Tamaño de la vela | ohlcv-1d, ohlcv-1h, ohlcv-1m | |
startstring · query | Primer día | YYYY-MM-DD | end − el rango máximo del schema |
endstring · query | Último día | YYYY-MM-DD | hoy (UTC) |
Rango máximo por solicitud (end − start): ohlcv-1d 3650 d · ohlcv-1h 730 d · ohlcv-1m 31 d.
data = requests.get(f"{BASE_URL}/studio/market/db/ohlcv/GLBX.MDP3/CL/ohlcv-1d" , headers=headers, params={"start": "2024-01-01", "end": "2024-12-31"}, timeout=60).json()["data"]# [{"ts": "2024-01-02 00:00:00+00:00", "open": 71.95, "high": 73.64, "low": 70.06, "close": 70.5,# "volume": 263594, "instrument_id": 686071},# {"ts": "2024-01-03 00:00:00+00:00", "open": 70.49, "high": 73.23, "low": 69.28, "close": 73.05,# "volume": 253755, "instrument_id": 686071}, ...]{"dataset", "symbol", "schema", "data": [...]}.
| Campo | Tipo | Unidad | Descripción |
|---|---|---|---|
ts | string | ISO en UTC | Hora de apertura de la vela |
open / high / low / close | float | USD (crudo: por barril; oro: por onza) | Precios |
volume | int | contratos | Volumen |
instrument_id | int | — | Id del instrumento en el origen, tal como viene en la vela de la fuente |
| Estado | Cuerpo | Cuándo |
|---|---|---|
| 400 | {"error": "Invalid schema. Allowed: [...]"} | Schema no válido |
| 400 | {"error": "Invalid dataset/symbol combination"} | Par no válido |
| 400 | {"error": "Invalid date format. Use YYYY-MM-DD"} | Fecha mal formada |
| 400 | {"error": "date_range_too_large", "message": "...", "max_days": <n>} | Rango por encima del máximo |
| 404 | mensaje de error | Sin datos |
ohlcv-1m, haga solicitudes en tramos de ≤ 31 días y concaténelos (un tramo tarda unos segundos)./studio/market/anue/economic_calendar Todos opcionales; sin filtros se devuelve todo el feed (~1,400 filas), así que siempre conviene filtrar.
| Nombre | Descripción | Valores permitidos | Predeterminado |
|---|---|---|---|
startstring · query | Eventos en esta fecha o posteriores | YYYY-MM-DD (fecha de Taipéi) | sin límite inferior |
endstring · query | Eventos en esta fecha o anteriores | YYYY-MM-DD (fecha de Taipéi) | sin límite superior |
countrystring · query | Filtro por país | Códigos ISO-2 separados por comas, sin distinguir mayúsculas de minúsculas — p. ej. US,CN,TW | todos los países |
max_priorityint · query | Conserva priority <= max_priority. 1 es lo más importante, así que solo eventos grandes = max_priority=1 | 1 / 2 / 3 | todas las prioridades |
limitint · query | Ordena por hora del evento y luego conserva los N primeros | ≥ 1 | sin límite |
langstring · query | Idioma de visualización de countryName / subject; los nombres que faltan en la tabla de correspondencias del servidor quedan tal cual, por lo que en devuelve una mezcla de zh/en | en / zh | en |
params = {"start": "2026-09-16", "end": "2026-09-23", "max_priority": 1, "lang": "zh"}response = requests.get( f"{BASE_URL}/studio/market/anue/economic_calendar" , headers=headers, params=params, timeout=60,)data = response.json()# [{"id": 79382, "startDate": 1790121600, "date": 1788220800, "dateUnit": "month", "time": "16:30",# "countryId": "GB", "countryName": "英國", "areaId": "4",# "subject": "S&P Global Manufacturing PMI - 初值", "subjectTitle": "<9月>", "unit": "point",# "predict": 51.7, "last": 51.7, "real": None, "correct": None, "correctMark": "N",# "place": None, "priority": 1, "type": 2}, ...]Un array JSON sin envoltorio (no va dentro de {"data": ...}). El orden es el del propio feed salvo que se indique limit (entonces se ordena por startDate, time).
| Campo | Tipo | Unidad | Descripción |
|---|---|---|---|
startDate | int | segundos epoch | Fecha de calendario del evento en Taipéi |
time | string | null | HH:MM en hora de Taipéi | Hora de publicación; null si no se ha publicado |
countryId | string | ISO-2 | Código de país |
countryName | string | — | Nombre del país (según lang) |
subject | string | — | Nombre del indicador (según lang) |
subjectTitle | string | — | Etiqueta del periodo, p. ej. <7月>, <2季> |
predict | number | null | unit | Consenso del mercado |
last | number | null | unit | Valor anterior |
real | number | null | unit | Dato real; null hasta su publicación |
unit | string | — | e.g. %, point, 億USD |
priority | int | 1–3 | 1 = lo más importante (nóminas no agrícolas, decisiones de tipos de interés), 3 = lo menos (recuento de plataformas de perforación) |
Una respuesta real incluía estos campos adicionales, transmitidos tal cual desde el feed de origen. Solo se indica lo observado; no debe interpretarse nada más allá de eso.
| Campo | Tipo | Observado |
|---|---|---|
id | int | Id del evento en el origen, p. ej. 79382 |
date | int | Segundos epoch del periodo al que se refiere el dato, no de la publicación — las filas con subjectTitle: "<9月>" llevaban date = 2026-09-01 mientras que startDate era 2026-09-23 |
dateUnit | string | month |
type | int | 2 |
areaId | string | "4" |
place | string | null | null |
correct | number | null | null |
correctMark | string | "N" |
| Estado | Cuerpo | Cuándo |
|---|---|---|
| 400 | {"error": "Invalid date format. Use YYYY-MM-DD"} | start / end mal formados |
| 400 | {"error": "max_priority must be an integer"} | max_priority no entero |
| 400 | {"error": "limit must be an integer"} / {"error": "limit must be >= 1"} | limit no válido |
| 429 | {"error_code": "ERR429", "message": "User rate limit exceeded"} | Más de 100 solicitudes / min |
200 con [] — eso significa «sin cobertura», no «sin eventos programados».start / end definidos, se descartan los eventos sin fecha; con max_priority definido, se descartan los eventos sin prioridad.real se rellena después de la publicación.