API · v1 · somente leitura

API de dados

Os mesmos números do portal, por script: relatórios com o seu n, o boletim diário, a semana, o posicionamento semanal e os efeitos de calendário. Somente leitura, em JSON.

O que traz e o que não traz

Só tamanho, frequência, hora e distância, cada número com a sua amostra (n). Não há preços nem cotações, não há direção provável nem recomendação do que operar, e não há sinais.

Sua chave pessoal

A chave é criada em Minha conta, dentro do portal, e enviada em cada solicitação. Ela aparece uma única vez; gerá-la de novo ou revogá-la corta a anterior na hora.

Incluída a partir do plano Trader, também durante o teste grátis de 14 dias.

Ver planos

URL base e autenticação

https://cerebro-dalton-platform-api.onrender.com

Envie a chave no cabeçalho Authorization: Bearer <chave> (X-API-Key também é aceito). Todas as respostas são JSON.

curl -H "Authorization: Bearer SUA_CHAVE" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/whoami"

Limite de uso

60 solicitações a cada 60 minutos por chave, compartilhadas entre todos os endpoints. Cada resposta de dados traz X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset (segundos).

Endpoints

Nos exemplos, cada lista mostra os seus dois primeiros itens e os objetos longos os seus primeiros campos.

GET/v1/whoami

Sua conta e seu plano: serve para conferir a chave. Não conta no limite.

Parâmetros

Sem parâmetros.

Solicitação

curl -H "Authorization: Bearer SUA_CHAVE" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/whoami"
Resposta (exemplo real, recortado)
{
  "email": "tu@correo.com",
  "tier": "trader",
  "has_reports_access": true
}

GET/v1/reports/{instrument}

Todos os relatórios de um mercado (id, n, intervalo de datas, tabela e notas), mais os retirados com o substituto.

Parâmetros

  • instrument (path, obrigatório) · ES

Solicitação

curl -H "Authorization: Bearer SUA_CHAVE" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/reports/ES"
Resposta (exemplo real, recortado)
{
  "instrument": "ES",
  "reports": [
    {
      "report_name": "adx_regime_filter",
      "instrument": "ES",
      "n_classified": 4187,
      "sample_size": 4187,
      "date_range": [
        "2010-06-07",
        "2026-10-16"
      ],
      "adx_period": 14,
      "...": "5 more fields"
    },
    {
      "report_name": "gap_fill_by_weekday",
      "instrument": "ES",
      "source_file": "historical market data",
      "date_range": [
        "2010-06-07",
        "2026-10-16"
      ],
      "sample_size": 4213,
      "caveats": [
        "Historical futures data with UTC timestamps (no broker-timezone ambiguity). Continuous series built with a highest-volume-contract roll rule per exchange tra...",
        "Gap of exactly 0.0 between consecutive days is excluded from n.",
        "... 2 more"
      ],
      "...": "3 more fields"
    },
    "... 108 more"
  ],
  "retired": {
    "afternoon_ib_first_extreme_by_weekday": {
      "since": "2026-10-11",
      "replacement": "ib_single_double_break_by_weekday",
      "reason": {
        "es": "El IB de la tarde (14:00-16:00 ET) no registra ningún caso en los mercados que lo calculan (n=0 en ES, NQ, GC y ZN), así que no hay cifra que mostrar.",
        "en": "The afternoon IB (14:00-16:00 ET) has no cases in the markets that compute it (n=0 in ES, NQ, GC and ZN), so there is no figure to show.",
        "pt": "O IB da tarde (14:00-16:00 ET) não registra nenhum caso nos mercados que o calculam (n=0 em ES, NQ, GC e ZN), portanto não há número a mostrar."
      }
    },
    "orb_ib_confluence": {
      "since": "2026-10-11",
      "replacement": "orb_variants_by_weekday",
      "reason": {
        "es": "La condición (el rango de apertura y el IB rompen hacia el mismo lado) usa un hecho que solo se conoce completo al cierre, de modo que el 90,9% de ES (n=1.62...",
        "en": "The condition (opening range and IB break the same side) uses a fact that is only fully known at the close, so the 90.9% on ES (n=1,627) is largely construct...",
        "pt": "A condição (o range de abertura e o IB rompem para o mesmo lado) usa um fato que só é conhecido por completo no fechamento, de modo que os 90,9% do ES (n=1.6..."
      }
    },
    "session_range_by_weekday": {
      "since": "2026-10-11",
      "replacement": "range_vs_adr_by_weekday",
      "reason": {
        "es": "El promedio en puntos de toda la historia subestima el rango actual: en ES, sesión de Nueva York, declaraba 23,2 puntos y fuera de muestra (desde 2022) fuero...",
        "en": "The all-history average in points understates today's range: for the ES New York session it stated 23.2 points and out of sample (from 2022) it was 60.1; the...",
        "pt": "A média em pontos de todo o histórico subestima o range atual: no ES, sessão de Nova York, declarava 23,2 pontos e fora da amostra (desde 2022) foram 60,1; a..."
      }
    },
    "opening_range_breakout_standard": {
      "since": "2026-10-11",
      "replacement": "orb_variants_by_weekday",
      "reason": {
        "es": "Responde la misma pregunta que «Rango de apertura: 5, 15 o 30 minutos» con 130 sesiones en vez de unas 4.200, es decir, con intervalos unas cinco veces más a...",
        "en": "It answers the same question as \"Opening range: 5, 15 or 30 minutes\" with 130 sessions instead of about 4,200, i.e. with intervals roughly five times wider.",
        "pt": "Responde à mesma pergunta que «Range de abertura: 5, 15 ou 30 minutos» com 130 sessões em vez de cerca de 4.200, ou seja, com intervalos cerca de cinco vezes..."
      }
    },
    "power_hour_breakout_standard": {
      "since": "2026-10-11",
      "replacement": "power_hour_new_extreme_by_weekday",
      "reason": {
        "es": "Responde la misma pregunta que «Última hora: ¿marca nuevo máximo o mínimo?» con 126 sesiones en vez de la historia completa.",
        "en": "It answers the same question as \"Last hour: new high or low?\" with 126 sessions instead of the full history.",
        "pt": "Responde à mesma pergunta que «Última hora: marca nova máxima ou mínima?» com 126 sessões em vez do histórico completo."
      }
    },
    "profile_shape_by_weekday": {
      "since": "2026-10-11",
      "replacement": "value_area_extension_by_weekday",
      "reason": {
        "es": "Fuera de muestra la forma del perfil no anticipó la sesión siguiente mejor que la tasa de cualquier día (ES tras un perfil en P: 55,1% declarado, 49,6% obser...",
        "en": "Out of sample the profile shape did not anticipate the next session better than the any-day rate (ES after a P-shaped profile: 55.1% stated, 49.6% observed).",
        "pt": "Fora da amostra a forma do perfil não antecipou a sessão seguinte melhor que a taxa de qualquer dia (ES após um perfil em P: 55,1% declarado, 49,6% observado)."
      }
    },
    "bid_ask_spread_by_weekday": {
      "since": "2026-10-11",
      "replacement": null,
      "reason": {
        "es": "El promedio agrupa por fecha UTC sobre 24 horas y el viernes no tiene reapertura nocturna, por lo que su spread baja solo (ES: -13,2% frente a lunes-jueves e...",
        "en": "The average groups by UTC date over 24 hours and Friday has no evening reopen, so its spread drops by construction (ES: -13.2% against Monday-Thursday over a...",
        "pt": "A média agrupa por data UTC em 24 horas e a sexta-feira não tem reabertura noturna, por isso seu spread cai sozinho (ES: -13,2% frente a segunda-quinta em to..."
      }
    }
  }
}

GET/v1/reports/{instrument}/{report_id}

Um relatório pelo seu id (o report_name da lista anterior). Um relatório retirado responde 410.

Parâmetros

  • instrument (path, obrigatório) · ES
  • report_id (path, obrigatório) · gap_fill_by_weekday

Solicitação

curl -H "Authorization: Bearer SUA_CHAVE" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/reports/ES/gap_fill_by_weekday"
Resposta (exemplo real, recortado)
{
  "report_name": "gap_fill_by_weekday",
  "instrument": "ES",
  "source_file": "historical market data",
  "date_range": [
    "2010-06-07",
    "2026-10-16"
  ],
  "sample_size": 4213,
  "caveats": [
    "Historical futures data with UTC timestamps (no broker-timezone ambiguity). Continuous series built with a highest-volume-contract roll rule per exchange tra...",
    "Gap of exactly 0.0 between consecutive days is excluded from n.",
    "... 2 more"
  ],
  "breakdown": {
    "Mon": {
      "gap_up": {
        "n": 388,
        "filled": 303,
        "fill_pct": 78.1
      },
      "gap_down": {
        "n": 387,
        "filled": 323,
        "fill_pct": 83.5
      }
    },
    "Tue": {
      "gap_up": {
        "n": 323,
        "filled": 312,
        "fill_pct": 96.6
      },
      "gap_down": {
        "n": 382,
        "filled": 373,
        "fill_pct": 97.6
      }
    },
    "Wed": {
      "gap_up": {
        "n": 293,
        "filled": 285,
        "fill_pct": 97.3
      },
      "gap_down": {
        "n": 382,
        "filled": 369,
        "fill_pct": 96.6
      }
    },
    "Thu": {
      "gap_up": {
        "n": 333,
        "filled": 324,
        "fill_pct": 97.3
      },
      "gap_down": {
        "n": 370,
        "filled": 356,
        "fill_pct": 96.2
      }
    },
    "Fri": {
      "gap_up": {
        "n": 296,
        "filled": 280,
        "fill_pct": 94.6
      },
      "gap_down": {
        "n": 380,
        "filled": 369,
        "fill_pct": 97.1
      }
    }
  },
  "recent_window_days": 90,
  "recent_breakdown": {
    "Mon": {
      "gap_up": {
        "n": 7,
        "filled": 6,
        "fill_pct": 85.7
      },
      "gap_down": {
        "n": 4,
        "filled": 2,
        "fill_pct": 50
      }
    },
    "Tue": {
      "gap_up": {
        "n": 8,
        "filled": 8,
        "fill_pct": 100
      },
      "gap_down": {
        "n": 4,
        "filled": 4,
        "fill_pct": 100
      }
    },
    "Wed": {
      "gap_up": {
        "n": 9,
        "filled": 9,
        "fill_pct": 100
      },
      "gap_down": {
        "n": 4,
        "filled": 4,
        "fill_pct": 100
      }
    },
    "Thu": {
      "gap_up": {
        "n": 9,
        "filled": 9,
        "fill_pct": 100
      },
      "gap_down": {
        "n": 4,
        "filled": 4,
        "fill_pct": 100
      }
    },
    "Fri": {
      "gap_up": {
        "n": 7,
        "filled": 7,
        "fill_pct": 100
      },
      "gap_down": {
        "n": 6,
        "filled": 6,
        "fill_pct": 100
      }
    }
  }
}

GET/v1/day-brief/{root}

Os fatos do boletim diário da próxima sessão: tamanho esperado, dados programados (hora de Nova York) e contexto, sem preços.

Parâmetros

  • root (path, obrigatório) · ES

Solicitação

curl -H "Authorization: Bearer SUA_CHAVE" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/day-brief/ES"
Resposta (exemplo real, recortado)
{
  "v": 1,
  "root": "ES",
  "session": "2026-10-19",
  "data_through": "2026-10-16",
  "today": "2026-10-17",
  "when": "next",
  "contract": "ESZ6",
  "tick": 0.25,
  "size": {
    "source": "model",
    "points": 62,
    "normal_points": 66.25,
    "vs_normal": 0.94,
    "class": "normal",
    "band70": [
      41,
      93.5
    ],
    "band90": [
      31.25,
      125
    ],
    "n_band": 3668,
    "degraded": false,
    "family": "blend_slope",
    "typical_error_pct": 28,
    "scoreboard": {
      "n": 250,
      "from": "2025-10-29",
      "to": "2026-10-16",
      "cover70_pct": 72,
      "cover90_pct": 90.4,
      "typical_error_pct": 28
    },
    "out_of_sample": {
      "n": 2781,
      "from": "2016-01-04",
      "to": "2026-10-16",
      "cover70_pct": 69.4,
      "cover90_pct": 89.6,
      "typical_error_pct": 26.1
    }
  },
  "events": [],
  "chips": [
    {
      "key": "mon",
      "mult": 0.9,
      "ci95": [
        0.85,
        0.95
      ],
      "n": 831,
      "distinct": true
    }
  ],
  "headline_event": {
    "kind": "chip",
    "chip": {
      "key": "mon",
      "mult": 0.9,
      "ci95": [
        0.85,
        0.95
      ],
      "n": 831,
      "distinct": true
    }
  },
  "where": {
    "daily": {
      "state": "balance",
      "sessions": 2
    },
    "picture": {
      "sessions": 20,
      "value": "below",
      "range_pct": 13
    },
    "weekly_state": "balance",
    "source": "panorama"
  },
  "context": {
    "week": {
      "from": "2026-10-12",
      "to": "2026-10-16",
      "exceeds_high_pct": 64,
      "exceeds_low_pct": 40.5,
      "n": 852
    }
  },
  "hour": null,
  "as_of": {
    "session": "2026-10-16",
    "data_through": "2026-10-16",
    "state": "complete"
  },
  "energy_report": null
}

GET/v1/week-ahead/{root}

A semana de um mercado: dados programados, efeitos de calendário em vigor e contexto de posicionamento.

Parâmetros

  • root (path, obrigatório) · ES

Solicitação

curl -H "Authorization: Bearer SUA_CHAVE" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/week-ahead/ES"
Resposta (exemplo real, recortado)
{
  "v": 1,
  "root": "ES",
  "today": "2026-10-17",
  "week": {
    "monday": "2026-10-19",
    "from": "2026-10-19",
    "to": "2026-10-23",
    "days": [
      "2026-10-19",
      "2026-10-20",
      "... 3 more"
    ],
    "upcoming": true,
    "partial": false,
    "pending": []
  },
  "size_measured": true,
  "events": [
    {
      "date": "2026-10-22",
      "weekday": 3,
      "time_et": "08:30",
      "key": null,
      "name": "Initial Jobless Claims",
      "importance": "media",
      "...": "9 more fields"
    }
  ],
  "headline_event": {
    "kind": "none"
  },
  "calendar": {
    "family": {
      "declared": 86,
      "tested": 86,
      "survivors": 4,
      "q": 0.1
    },
    "registered_on": "2026-10-12",
    "data_through": "2026-10-16",
    "held": [],
    "held_mine": [],
    "active": [
      {
        "effect": "gold_month",
        "variant": "m10",
        "start": "2026-10-01",
        "end": "2026-10-30",
        "sessions": 22,
        "markets": {
          "se_sostiene": [],
          "indeciso": [],
          "no_se_sostiene": [
            "GC"
          ]
        },
        "...": "1 more fields"
      },
      {
        "effect": "vol_index_expiry",
        "variant": null,
        "start": "2026-10-20",
        "end": "2026-10-21",
        "sessions": 2,
        "markets": {
          "se_sostiene": [],
          "indeciso": [],
          "no_se_sostiene": [
            "ES",
            "NQ",
            "... 2 more"
          ]
        },
        "...": "1 more fields"
      },
      "... 1 more"
    ],
    "folded": {
      "groups": 3,
      "indeciso": 0,
      "no_se_sostiene": 6
    }
  },
  "positioning": {
    "report_date": "2026-10-13",
    "published": "2026-10-16",
    "markets": 29,
    "at_extreme": 5,
    "extremes": [
      {
        "instrument": "YM",
        "family": "indices",
        "report": "tff",
        "group": "leveraged",
        "index": 100,
        "side": "long",
        "...": "3 more fields"
      },
      {
        "instrument": "6E",
        "family": "fx",
        "report": "tff",
        "group": "leveraged",
        "index": 0,
        "side": "short",
        "...": "3 more fields"
      },
      "... 1 more"
    ],
    "mine": {
      "instrument": "ES",
      "family": "indices",
      "report": "tff",
      "group": "leveraged",
      "index": 37.9,
      "side": null,
      "...": "3 more fields"
    },
    "evidence": {
      "oos_start": "2022-01-01",
      "tests": 58,
      "holds": 2,
      "markets": 29,
      "n": 514,
      "rank": [
        {
          "group": "managed_money",
          "rho": -0.027,
          "ci95": [
            -0.185,
            0.132
          ],
          "n": 180
        },
        {
          "group": "leveraged",
          "rho": -0.024,
          "ci95": [
            -0.141,
            0.093
          ],
          "n": 334
        }
      ],
      "...": "1 more fields"
    }
  },
  "flows": {
    "auctions": [
      {
        "date": "2026-10-21",
        "weekday": 2,
        "time_et": "13:00",
        "tenor": "20y",
        "reopening": true,
        "market": "ES",
        "...": "4 more fields"
      }
    ],
    "london_fix": null,
    "energy": [
      {
        "report": "crude_inventories",
        "market": "CL",
        "date": "2026-10-21",
        "weekday": 2,
        "time_et": "10:30",
        "window_et": "10:30-11:00",
        "...": "8 more fields"
      },
      {
        "report": "gas_storage",
        "market": "NG",
        "date": "2026-10-22",
        "weekday": 3,
        "time_et": "10:30",
        "window_et": "10:30-11:00",
        "...": "8 more fields"
      }
    ]
  },
  "roll": [
    {
      "root": "ZS",
      "from": "ZSX6",
      "to": "ZSF7",
      "estimated_roll_date": "2026-10-21",
      "status": "in_progress",
      "in_week": true,
      "...": "1 more fields"
    },
    {
      "root": "NG",
      "from": "NGX26",
      "to": "NGZ26",
      "estimated_roll_date": "2026-10-23",
      "status": "in_progress",
      "in_week": true,
      "...": "1 more fields"
    }
  ],
  "week_range": {
    "half_width": 178.5,
    "inside_pct": 81.7,
    "ci95": [
      79,
      84.1
    ],
    "n": 852,
    "tick": 0.25,
    "data_through": "2026-10-16"
  },
  "as_of": {
    "session": "2026-10-16",
    "data_through": "2026-10-16",
    "state": "complete"
  }
}

GET/v1/cot/{instrument}

A última leitura semanal de posicionamento: líquidos por grupo, variação semanal e percentil de um ano.

Parâmetros

  • instrument (path, obrigatório) · ES

Solicitação

curl -H "Authorization: Bearer SUA_CHAVE" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/cot/ES"
Resposta (exemplo real, recortado)
{
  "instrument": "ES",
  "report_date": "2026-10-13",
  "commercial_net": -602358,
  "non_commercial_net": -408726,
  "non_commercial_net_change_1w": 6361,
  "non_commercial_net_percentile_1y": 42.3,
  "commercial_net_change_1w": -1517,
  "cot_index": 64.2,
  "cot_index_weeks": 156,
  "extremes_index": 32.7,
  "extremes_index_weeks": 156,
  "extremes_index_signal": "sin_extremo",
  "asset_manager_net": 915835,
  "asset_manager_net_change_1w": 9220,
  "asset_manager_net_percentile_1y": 32.7,
  "asset_manager_cot_index": 62.5,
  "asset_manager_cot_index_weeks": 156,
  "total_open_interest": 1931607,
  "open_interest_change_1w": -620
}

GET/v1/calendar-effects

Os efeitos de calendário declarados de antemão, medidos por mercado e período, com o controle de falsas descobertas e as próximas janelas.

Parâmetros

  • market (query, opcional) · ES
  • days (query, opcional) · 30

Solicitação

curl -H "Authorization: Bearer SUA_CHAVE" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/calendar-effects?market=ES&days=30"
Resposta (exemplo real, recortado)
{
  "version": 1,
  "registered_on": "2026-10-12",
  "data_through": "2026-10-16",
  "family": {
    "declared": 86,
    "tested": 86,
    "survivors": 4,
    "q": 0.1,
    "uncorrected": 14,
    "expected_by_chance": 4.3,
    "method": "benjamini_hochberg"
  },
  "verdicts": {
    "se_sostiene": 4,
    "indeciso": 8,
    "no_se_sostiene": 74
  },
  "costs": "USD 4.50 per round turn + 1 tick per side, in % of notional; one more round turn per contract change inside the window",
  "periods": [
    "full",
    "2016+",
    "... 2 more"
  ],
  "effects": [
    {
      "key": "turn_of_month",
      "order": 1,
      "markets": [
        "ES",
        "NQ",
        "... 3 more"
      ],
      "variants": [],
      "unit": "bp_day",
      "weekly": false,
      "...": "4 more fields"
    },
    {
      "key": "month_end_treasuries",
      "order": 2,
      "markets": [
        "ZT",
        "ZF",
        "... 2 more"
      ],
      "variants": [],
      "unit": "bp_day",
      "weekly": false,
      "...": "4 more fields"
    },
    "... 11 more"
  ],
  "rows": [
    {
      "effect": "turn_of_month",
      "market": "ES",
      "variant": null,
      "unit": "bp_day",
      "weekly": false,
      "measured": true,
      "...": "9 more fields"
    },
    {
      "effect": "pre_holiday",
      "market": "ES",
      "variant": null,
      "unit": "bp_day",
      "weekly": false,
      "measured": true,
      "...": "9 more fields"
    },
    "... 7 more"
  ],
  "today": "2026-10-17",
  "upcoming_days": 30,
  "upcoming": [
    {
      "effect": "vol_index_expiry",
      "variant": null,
      "start": "2026-10-20",
      "end": "2026-10-21",
      "sessions": 2,
      "active": false,
      "...": "3 more fields"
    },
    {
      "effect": "pre_fomc",
      "variant": null,
      "start": "2026-10-27",
      "end": "2026-10-28",
      "sessions": 2,
      "active": false,
      "...": "3 more fields"
    },
    "... 4 more"
  ]
}

Códigos de erro

{ "detail": "..." }

  • 401 Chave ausente, inválida ou revogada.
  • 403 O seu plano não inclui a API.
  • 404 Não há dados para esse mercado ou id.
  • 410 Relatório retirado; a resposta nomeia o substituto.
  • 422 Parâmetro fora do intervalo (por exemplo days acima de 120).
  • 429 Limite da hora esgotado; o cabeçalho Retry-After diz quantos segundos esperar.

Esquema OpenAPI

O documento OpenAPI 3 destes endpoints, com os seus modelos de resposta, é pedido com a mesma chave:

curl -H "Authorization: Bearer SUA_CHAVE" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/openapi.json"

O mesmo documento, sem chave, como arquivo estático: openapi.json (OpenAPI 3)

Atraso e licença

  • Dados de fechamento: cada resposta lê até a última sessão completa do mercado (campo as_of) e é recalculada toda noite. Não há preços em tempo real.
  • Para o seu uso pessoal: não redistribua nem revenda os dados. São estatística histórica descritiva, com o seu n; não são uma recomendação de investimento nem de operação.

Versões

/v1 continua compatível com versões anteriores: campos novos podem aparecer, mas nenhum campo muda de nome nem desaparece. Uma mudança que quebre a forma de uma resposta irá para /v2, anunciada antes em Novidades, e /v1 continua funcionando enquanto isso.