developers  · docsKonto
Token holen
Docs · Quickstart

Dein erster API-Call in 5 Minuten

Aktualisiert Aug 2026 · API v3

Der schnellste Weg rein ist ein Personal Access Token — kein OAuth, keine App-Registrierung. Er liest und schreibt deine eigenen pon-Daten, und genau das brauchst du für Skripte, Home Assistant und Homelab-Basteleien.

  1. Hol dir pon aufs iPhone

    Konto und Listen leben in der App — lade pon aus dem App Store und registriere dich dort.

    App Store

  2. Melde dich auf my.pon.app an

    Nimm deinen pon-Account. Deine E-Mail-Adresse muss bestätigt sein — sonst antwortet die Freischaltung mit 403 EMAIL_UNVERIFIED.

  3. Aktiviere den Entwicklermodus

    my → Für Entwickler. Du akzeptierst die API-Bedingungen einmalig.

  4. Erstelle einen Token

    Wähl die Scopes, die du brauchst. Das Secret pon_pat_… wird einmal angezeigt — bewahr es auf wie ein Passwort. Ablauf: standardmäßig 90 Tage, bis zu 365, oder nie.

  5. Ruf die API auf

    Das war’s — schlichtes Bearer, kein Signatur-Tanz:

# 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"])

Erst ausprobieren, dann Code schreiben? Die API-Referenz hat einen Authorize-Dialog — Token einfügen, und jeder Endpunkt wird klickbar.

Referenz → Authorize → Bearer

Einen Artikel hinzufügen

POST /v3/lists/{list-id}/items — die Schreibseite funktioniert genauso:

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"},
)

Jede Antwort nutzt denselben Umschlag: { "data": …, "meta": … } bei Erfolg, { "errors": [ { "code", "message" } ] } im Fehlerfall.

Frag Änderungen nicht per Polling ab.

Registriere stattdessen einen Webhook — pon ruft dich an, wenn sich eine Liste ändert. Alle 5 Minuten zu pollen gilt auf der Fair-Use-Anzeige schon als starke Nutzung.

Nächste Schritte