A API do Baldio
Os projectos e eventos de transição do Baldio em JSON, para os mostrares no teu site, mapa ou aplicação.
A leitura é aberta e não precisa de chave: devolve a mesma informação que está nas páginas públicas do Baldio. Contactos que as pessoas marcaram como privados nunca são incluídos.
Também podes publicar um projecto ou evento pela API. Editar exige provar que és o responsável: sessão iniciada no Baldio ou o cookie de quem criou a entrada.
503). A leitura funciona normalmente.https://baldio.eu/api/v1
curl "https://baldio.eu/api/v1/projectos?categoria=quinta-agroecologia"
Acesso e boas práticas
Do teu servidor, não do browser
A API não tem CORS: chama-a a partir do teu servidor (PHP, Python, Node, um cron, Apps Script…). JavaScript a correr no browser de um visitante noutro domínio não consegue ler as respostas.
Para usar directamente no browser existe /baldio.json, um feed leve com CORS aberto.
Guarda em cache
Os dados mudam poucas vezes por dia. Guarda as respostas pelo menos 1 hora e não chames a API a cada visita ao teu site. Não há limite formal de pedidos, mas pedidos em excesso podem ser bloqueados.
Formato
- JSON em UTF-8. Datas como
AAAA-MM-DD; timestamps comoAAAA-MM-DD hh:mm:ss(hora de Lisboa). - Imagens e
urlvêm como caminhos relativos: juntahttps://baldio.euà frente. - Campos de texto sem valor vêm como
"", nãonull.
$cache = __DIR__ . '/baldio-cache.json'; if (!is_file($cache) || filemtime($cache) < time() - 3600) { $json = file_get_contents('https://baldio.eu/api/v1/projectos'); if ($json !== false) file_put_contents($cache, $json); } $projectos = json_decode(file_get_contents($cache), true); foreach ($projectos as $p) { echo $p['name'], ' — https://baldio.eu', $p['url'], "\n"; }
Respostas e erros
Lista ou envelope
/projectos e /eventos devolvem uma lista quando chamados sem filtros. Com qualquer filtro (categoria, tag, lat/lng, upcoming…) devolvem um envelope {"items": [...], "meta": {...}}. Trata os dois casos no teu código.
Erros
Os erros vêm como {"error": "mensagem"}, com a mensagem em português.
| HTTP | Quando |
|---|---|
| 403 | Sem acesso para editar: falta a sessão do dono ou o cookie de quem criou. |
| 404 | O projecto ou evento não existe, ou é um rascunho. |
| 422 | Dados inválidos ao adicionar (ex.: categoria inexistente, nome curto). |
| 503 | Escrita fechada durante a migração, ou servidor temporariamente ocupado. Tenta mais tarde; respeita Retry-After se vier. |
GET /projectos [ { "slug": "…", … }, … ]
GET /projectos?categoria=quinta-agroecologia { "items": [ { "slug": "…", … } ], "meta": [] }
{ "error": "Não encontrado" }
Changelog
2026-10-28 — Primeira versão pública da documentação.