A tua primeira chamada à API em 5 minutos
Atualizado Aug 2026 · API v3O caminho mais rápido é um personal access token — sem OAuth, sem registo de aplicação. Lê e escreve os teus próprios dados do pon, que é exatamente o que precisas para scripts, Home Assistant e projetos de homelab.
Instala o pon no teu iPhone
A tua conta e as tuas listas vivem na app — descarrega o pon da App Store e regista-te lá.
Inicia sessão em my.pon.app
Usa a tua conta pon. O teu e-mail tem de estar confirmado — caso contrário, a ativação responde
403 EMAIL_UNVERIFIED.Ativa o modo de programador
my → Para programadores. Aceitas os termos da API uma única vez.
Cria um token
Escolhe os scopes de que precisas. O segredo
pon_pat_…é mostrado uma vez — guarda-o como uma palavra-passe. Validade: 90 dias por omissão, até 365, ou nunca.Chama a API
É tudo — Bearer simples, sem danças de assinatura:
# list your lists
curl https://api.pon.app/v3/lists \
-H "Authorization: Bearer pon_pat_XXXX"const res = await fetch("https://api.pon.app/v3/lists", {
headers: { Authorization: "Bearer pon_pat_XXXX" },
});
const { data } = await res.json();
console.log(data);import requests
res = requests.get(
"https://api.pon.app/v3/lists",
headers={"Authorization": "Bearer pon_pat_XXXX"},
)
print(res.json()["data"])Queres experimentar antes de escrever código? A referência da API tem um diálogo Authorize — cola o teu token e todos os endpoints ficam clicáveis.
Referência → Authorize → BearerAdiciona um item
POST /v3/lists/{list-id}/items — o lado da escrita
funciona da mesma forma:
curl -X POST https://api.pon.app/v3/lists/LIST_ID/items \
-H "Authorization: Bearer pon_pat_XXXX" \
-H "Content-Type: application/json" \
-d '{ "name": "Oat milk" }'await fetch(`https://api.pon.app/v3/lists/${listId}/items`, {
method: "POST",
headers: {
Authorization: "Bearer pon_pat_XXXX",
"Content-Type": "application/json",
},
body: JSON.stringify({ name: "Oat milk" }),
});requests.post(
f"https://api.pon.app/v3/lists/{list_id}/items",
headers={"Authorization": "Bearer pon_pat_XXXX"},
json={"name": "Oat milk"},
)Todas as respostas usam o mesmo envelope: { "data": …, "meta": … } em
caso de sucesso, { "errors": [ { "code", "message" } ] } em caso de
falha.
Não faças polling à procura de alterações.
Regista antes um webhook — o pon chama-te quando uma lista muda. Polling a cada 5 minutos já conta como uso intensivo no medidor de fair use.Próximos passos
- Autenticação — quando basta um token e quando queres OAuth.
- Webhooks — reage a alterações de listas sem polling.
- Limites e fair use — o que é generoso e o que é um limite duro.