/api/index.jsonDiscovery — metadados, contagens, esquemas, lista de endpoints.
abrir →Endpoints de leitura. Use como quiser, atribua se publicar.
/api/index.jsonDiscovery — metadados, contagens, esquemas, lista de endpoints.
abrir →/api/drinks.jsonLista completa de cocktails (494 registos).
abrir →/api/ingredients.jsonLista completa de ingredientes (316 registos).
abrir →/api/categories.jsonCategorias com rótulos PT-PT (10 registos).
abrir →/images/cocktails/{id}.jpgFotografia 768×1024 do cocktail. CORS aberto. Substitua {id} pelo id do cocktail.

Cada cocktail tem fotografia em /images/cocktails/{id}.jpg.
O endpoint /api/drinks.json inclui o campo image com o caminho relativo já preenchido.
Resolução 768×1024 (3:4), JPG q88, ~30–80 KB cada. CORS aberto para uso cross-origin.
{
"id": "string",
"name": "string",
"categories": "string[]",
"glass": "string",
"ingredients": "[{id,qty}]",
"steps": "string[]",
"image": "string (caminho relativo /images/cocktails/{id}.jpg)"
}{
"id": "string",
"name": "string",
"kind": "string",
"parent": "string (optional) — generic ancestor for substitution matching"
}{
"id": "string",
"label": "string"
}curl -s /api/drinks.json \ | jq '.[] | select(.id=="mojito")'
const res = await fetch('/api/drinks.json')
const drinks = await res.json()
const semAlcool = drinks.filter(d =>
d.categories.includes('sem-alcool')
)
console.log(semAlcool.length, 'cocktails sem álcool')import requests
drinks = requests.get('/api/drinks.json').json()
com_gin = [d for d in drinks
if any(i['id'] == 'gin' for i in d['ingredients'])]
print(f'{len(com_gin)} cocktails levam gin')<?php
$json = file_get_contents('/api/drinks.json');
$drinks = json_decode($json, true);
foreach (array_slice($drinks, 0, 5) as $d) {
echo $d['name'] . PHP_EOL;
}<script type="module">
const drinks = await (await fetch(
'/api/drinks.json'
)).json()
document.body.innerHTML = drinks.slice(0, 12)
.map(d => `<figure>
<img src="${d.image}" alt="${d.name}" loading="lazy">
<figcaption>${d.name}</figcaption>
</figure>`).join('')
</script>/_nuxt/*, imagens, ícones).Retry-After: 60, X-RateLimit-Limit: 60, X-RateLimit-Window: 60s. /api/drinks.json uma vez, filtrar em memória.