API aberta com eventos de campanha - Lula no 2º Turno
Como buscar a lista de eventos do guide momo-com-lula a partir de um cliente externo. Não precisa de chave, login nem cadastro.
https://dados.appmomo.com.br/api/guides/{slug}/events
Requisição
curl "https://dados.appmomo.com.br/api/guides/momo-com-lula/events"
Por padrão devolve só os eventos que ainda não terminaram, em ordem de início. Todos os parâmetros abaixo são opcionais.
| Parâmetro | Valores | Padrão |
|---|---|---|
when | upcoming (ainda não terminaram), past (já terminaram) ou all | upcoming |
limit | Inteiro de 1 a 500 | 100 |
locale | pt, en, es ou fr. Traduz título e descrição. | pt |
curl "https://dados.appmomo.com.br/api/guides/momo-com-lula/events?when=all&limit=20&locale=en"
A API aceita CORS de qualquer origem, então também pode ser chamada direto do navegador.
Exemplos em código
const res = await fetch(
"https://dados.appmomo.com.br/api/guides/momo-com-lula/events",
);
if (!res.ok) throw new Error(`Momo API ${res.status}`);
const { events } = await res.json();
for (const e of events) {
console.log(e.starts_at, e.title, e.venue.city);
}
import requests
res = requests.get(
"https://dados.appmomo.com.br/api/guides/momo-com-lula/events",
timeout=15,
)
res.raise_for_status()
for e in res.json()["events"]:
print(e["starts_at"], e["title"], e["venue"]["city"])
Resposta
Um objeto JSON com os metadados da consulta e a lista de eventos em events, ordenada por starts_at crescente.
{
"guide": "momo-com-lula",
"generated_at": "2026-10-09T20:00:00.000Z",
"count": 1,
"events": [
{
"id": "1d15568c-a3bb-4030-84e3-f4159e14e843",
"url": "https://appmomo.com.br/event/1d15568c-a3bb-4030-84e3-f4159e14e843",
"title": "Vamos Virar em Levy Gasparian",
"description": "Atenção Levy Gasparian, é hora de irmos às ruas…",
"starts_at": "2026-10-17T20:00:00+00:00",
"ends_at": "2026-10-18T01:00:00+00:00",
"image_url": "https://cdn.appmomo.com.br/storage/v1/object/public/event-images/ig_4004224414601924995.jpg",
"pricing": { "type": "free" },
"ticket_url": null,
"ticket_prices": null,
"venue": {
"name": "Centro de Convivência de Comendador Levy Gasparian",
"city": "Comendador Levy Gasparian",
"latitude": -22.05445,
"longitude": -43.2052
},
"curator_note": null,
"featured": false,
"interested_count": 0
}
]
}
| Campo | Observação |
|---|---|
id | UUID estável. Use como chave de deduplicação. |
url | Página pública do evento no Momo. |
title, description | Traduzidos conforme locale. description pode ser null. |
starts_at, ends_at | ISO 8601 com fuso. Mostre no horário de Brasília ao exibir. |
image_url | URL pública da imagem do evento. |
pricing, ticket_url, ticket_prices | Preço e ingresso. Eventos gratuitos trazem {"type":"free"} em pricing. |
venue | Local do evento: name, city, latitude e longitude. Qualquer campo pode ser null. |
curator_note, featured | Nota e destaque definidos pela curadoria do guide. |
interested_count | Quantidade de pessoas que marcaram interesse no evento. |
Erros
Erros voltam em JSON, no formato {"error": "codigo", "message": "texto"}.
| Status | Código | Quando |
|---|---|---|
400 | invalid_request | Parâmetro fora dos valores aceitos. A mensagem diz qual. |
404 | guide_not_found | Não existe guide público com esse slug. |
405 | method_not_allowed | Só GET, HEAD e OPTIONS são aceitos. |
503 | upstream_unavailable | A fonte de dados está fora do ar. Tente de novo após o tempo do header Retry-After. |
O que levar em conta
Cache de 5 minutos
As respostas ficam em cache na borda por 5 minutos e no navegador por 1 minuto. O header
X-Cachediz se veio do cache (HIT) ou foi buscado na hora (MISS). Uma consulta a cada 5 a 15 minutos é suficiente.Outros guides
O mesmo endpoint funciona para qualquer guide público do Momo: troque
momo-com-lulapelo slug do guide.Sem SLA nem versionamento
É uma API de integração mantida pelo Momo, sem SLA. O formato pode ganhar campos novos, então ignore campos que não conhece. Avise o Momo se a integração depender de algo específico.