> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oeffigo.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Öffentliche API

> Offene Endpunkte für Status, Pünktlichkeit, Prognosen und Fahrzeuge – ohne Schlüssel.

ÖffiGo bietet eine kleine, offene API. Sie ist für Dashboards, Auswertungen und eigene Projekte gedacht.

```bash theme={null}
curl -s https://api.oeffigo.app/v1/status
```

## Grundregeln

<CardGroup cols={2}>
  <Card title="Basis-URL" icon="link">
    `https://api.oeffigo.app`
  </Card>

  <Card title="Kein Schlüssel" icon="key">
    Alle `/v1`-Endpunkte sind ohne Zugangsdaten nutzbar.
  </Card>

  <Card title="Offenes CORS" icon="globe">
    Jede Antwort trägt `Access-Control-Allow-Origin: *`.
  </Card>

  <Card title="Rate-Limit" icon="gauge">
    120 Anfragen pro Minute und IP. Darüber: `429` mit `Retry-After: 30`.
  </Card>
</CardGroup>

## Fehler

Fehler kommen immer im selben Format mit passendem HTTP-Status:

```json theme={null}
{ "error": "missing_query" }
```

## Caching

* Fehler sind immer `no-store`.
* Erfolgreiche Antworten tragen ein `Cache-Control` passend dazu, wie schnell sich die Daten ändern – verlass dich auf den Header.
* `/v1/predictions` unterstützt `ETag` und `If-None-Match`: Solange sich nichts geändert hat, bekommst du ein `304` ohne Body.

## Versionierung

* Brechende Änderungen bekommen einen **neuen Pfad**.
* Zusätzliche Felder können jederzeit dazukommen – **ignoriere Felder, die du nicht kennst**.

<Warning>
  **`/v2` ist der App-Vertrag, keine offene API.** Schema (`/v2/schema`) und Routenliste (`/v2/meta`) sind lesbar, die Datenrouten lehnen Anfragen von außen aber ab und verlangen ein Installations-Token, das nur die Apps erhalten. Bau bitte nichts, das auf `/v2` angewiesen ist.
</Warning>

<Card title="Alle Endpunkte" icon="list" href="/entwickler/endpunkte">
  Parameter, Beispiele und Antworten.
</Card>
