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

# Request-Logs und Kontopreise

>  - Abbuchung eines einzelnen Aufrufs per Request-ID oder Task-ID abfragen - Alle Verbrauchs- und Fehlereinträge eines Zeitraums seitenweise synchronisieren - Den tatsächlichen Modellpreis für das aktuelle Konto abfragen 

Fragen Sie mit Ihrem API Key die Abbuchung jedes Aufrufs sowie den tatsächlichen Preis ab, den Ihr Konto für ein Modell zahlt. Keiner der drei Endpunkte prüft das Guthaben; sie funktionieren auch bei einem Guthaben von 0.

```bash Einzeleintrag theme={null}
curl 'https://api.apimart.ai/v1/logs/requests/task_01M6ZDAXTC8QXYCDM5PXPM413R' \
  --header 'Authorization: Bearer <token>'
```

```bash Logs synchronisieren theme={null}
curl --get 'https://api.apimart.ai/v1/logs/requests' \
  --header 'Authorization: Bearer <token>' \
  --data-urlencode 'start_timestamp=1762732800' \
  --data-urlencode 'end_timestamp=1762736400' \
  --data-urlencode 'limit=1000'
```

```bash Kontopreis theme={null}
curl --get 'https://api.apimart.ai/v1/pricing/model' \
  --header 'Authorization: Bearer <token>' \
  --data-urlencode 'model=doubao-seedance-2.0' \
  --data-urlencode 'resolution=720P' \
  --data-urlencode 'duration=5'
```

```json Einzeleintrag theme={null}
{
  "object": "list",
  "request_id": "task_01M6ZDAXTC8QXYCDM5PXPM413R",
  "data": [
    {
      "id": "task_01M6ZDAXTC8QXYCDM5PXPM413R",
      "type": "consume",
      "status": "succeeded",
      "created_at": 1762740123,
      "model_name": "doubao-seedance-2.0",
      "token_name": "prod-server",
      "task_id": "task_01M6ZDAXTC8QXYCDM5PXPM413R",
      "prompt_tokens": 0,
      "completion_tokens": 0,
      "cache_tokens": 0,
      "cache_creation_tokens": 0,
      "cost_usd": 0.6,
      "cost_credits": 6
    }
  ]
}
```

```json Logs synchronisieren theme={null}
{
  "object": "list",
  "data": [
    {
      "id": "<Request-ID>",
      "type": "consume",
      "status": "succeeded",
      "created_at": 1762732805,
      "model_name": "gpt-5.5",
      "token_name": "prod-server",
      "prompt_tokens": 1200,
      "completion_tokens": 350,
      "cache_tokens": 0,
      "cache_creation_tokens": 0,
      "latency_ms": 2310,
      "first_token_ms": 420,
      "cost_usd": 0.004125,
      "cost_credits": 0.04125
    }
  ],
  "has_more": true,
  "next_cursor": "AQAAAABpEoXlAjIwMjYxMTEw...",
  "watermark": 1762739700
}
```

```json Kontopreis theme={null}
{
  "model": "doubao-seedance-2.0",
  "canonical_model": "doubao-seedance-2.0",
  "currency": "USD",
  "group": "vip",
  "billing_type": "per_second",
  "unit": "per_second",
  "spec": { "resolution": "720P", "duration": 5 },
  "spec_source": "request",
  "estimated": false,
  "unit_price_usd": 0.12,
  "quantity": 5,
  "total_usd": 0.6,
  "credits": { "unit_price": 1.2, "total": 6 },
  "price_source": "membership",
  "price_factors": ["membership"],
  "membership_tier": "gold"
}
```

## Authentifizierung

**Authorization** `string` *required*

Verwenden Sie denselben API Key wie für Modellaufrufe mit Bearer-Token-Authentifizierung. Ihren Schlüssel erhalten Sie auf der [API-Key-Verwaltungsseite](https://apimart.ai/keys).

```
Authorization: Bearer YOUR_API_KEY
```

## Endpunkte

```text theme={null}
GET /v1/logs/requests/{id}    Einzeleintrag per Request-ID abfragen
GET /v1/logs/requests         Logs nach Zeitraum synchronisieren
GET /v1/pricing/model         Kontopreis abfragen
```

Beträge sind in USD; `cost_credits` und `credits` sind Credits und entsprechen USD × 10.

***

## Einzeleintrag per Request-ID abfragen

```text theme={null}
GET /v1/logs/requests/{id}
```

**id** `string` *required*

* Synchrone Aufrufe: Wert des Antwort-Headers `X-Oneapi-Request-Id`
* Asynchrone Aufgaben: die beim Absenden zurückgegebene Task-ID

> [!NOTE]
>
> Logs werden asynchron geschrieben und sind meist wenige Sekunden nach Ende der Anfrage abrufbar. Bei `404 log_not_found` versuchen Sie es später erneut. Asynchrone Aufgaben müssen per Task-ID abgefragt werden und haben erst nach Abschluss oder Fehlschlag einen Eintrag.

Die Abfrage umfasst das gesamte Konto, dem der API Key gehört. `data` ist ein Array; dieselbe ID kann sowohl einen Verbrauchs- als auch einen Fehlereintrag haben. Wichtigste Felder:

| Feld | Beschreibung |
| - | - |
| `id` | Request-ID oder Task-ID |
| `type` | `consume` (Verbrauch) oder `error` (Fehler) |
| `created_at` | Zeitpunkt des Eintrags, Unix-Sekunden; bei asynchronen Aufgaben der Abrechnungszeitpunkt |
| `model_name` | Modellname |
| `token_name` | Name des API Keys, der den Aufruf gestellt hat (Name zum Zeitpunkt des Eintrags; Namen können doppelt vorkommen). Um Schlüssel eindeutig zu unterscheiden, filtern Sie im Synchronisierungs-Endpunkt nach `token_id` |
| `prompt_tokens` / `completion_tokens` | Eingabe- / Ausgabe-Tokens |
| `cost_usd` | Für diesen Eintrag abgebuchter Betrag (USD) |
| `cost_credits` | Abgebuchte Credits |

`cost_usd` ist der endgültig abgerechnete Betrag: Fehlereinträge sind immer `0`, Erstattungen bei Fehlschlägen sind vor dem Schreiben des Eintrags abgeschlossen. Die Summe der Einträge mit `type` = `consume` ergibt die Abbuchungen für Ihre Aufrufe.

***

## Request-Logs synchronisieren

```text theme={null}
GET /v1/logs/requests
```

Rufen Sie alle Einträge Ihres Kontos in einem Zeitraum seitenweise ab – ideal für den regelmäßigen Abgleich. Die Felder entsprechen denen der Einzelabfrage.

**start\_timestamp** `integer` *required*

Startzeit, Unix-Zeitstempel in Sekunden.

**end\_timestamp** `integer`

Endzeit, Unix-Zeitstempel in Sekunden. Standard ist die aktuelle Zeit. Beide Grenzen sind inklusive, der Zeitraum darf 31 Tage nicht überschreiten.

**type** `string` (default: all)

Eintragstyp: `all`, `consume` oder `error`.

**model** `string`

Nach Modellname filtern.

**token\_id** `integer`

Nur Einträge des angegebenen API Keys zurückgeben. Die ID können Sie in der Konsole in der Liste „API-Schlüssel“ kopieren (unter dem Schlüsselnamen angezeigt); nach dem Rotieren des Schlüssels bleibt die ID gleich.

**limit** `integer` (default: 100)

Seitengröße, `1`–`1000`.

**cursor** `string`

Paginierungs-Cursor. Übergeben Sie den `next_cursor` der vorherigen Seite unverändert und lassen Sie die übrigen Parameter beim Blättern gleich.

In der Antwort gibt `has_more` an, ob es eine weitere Seite gibt, `next_cursor` ist der Cursor für die nächste Seite und `watermark` die Serverzeit minus 300 Sekunden.

> [!TIP]
>
> **Empfohlenes Synchronisierungsmuster**: `end_timestamp` jedes Laufs nicht später als `watermark`; den nächsten Lauf 10 Minuten vor dem Ende des vorherigen beginnen und nach `(id, type)` deduplizieren; innerhalb eines Zeitfensters blättern, bis `has_more` `false` ist.

***

## Kontopreis abfragen

```text theme={null}
GET /v1/pricing/model
```

Fragen Sie den tatsächlichen Preis ab, den das Konto des aktuellen API Keys für ein Modell zahlt. Individuelle Preise, Mitgliederpreise, Gruppenfaktor und Rabatte sind berücksichtigt – genau wie bei der Abbuchung beim Aufruf. Die Preisseite zeigt öffentliche Preise; für Schätzungen für Ihr eigenes Konto verwenden Sie diesen Endpunkt.

**model** `string` *required*

Modellname; Aliase werden unterstützt.

**resolution** `string`

Auflösung oder Stufe; muss vom Modell unterstützt werden.

**size** `string`

Bildgröße.

**quality** `string`

Qualitätsstufe.

**duration** `integer`

Dauer in Sekunden, `1`–`3600`, für sekundenbasierte Modelle.

**n** `integer`

Anzahl der Ausgaben, `1`–`100`.

Ohne Spezifikationsparameter wird die Standardspezifikation des Modells bepreist. Bei sekundenbasierten Modellen ohne `duration` wird nur der Preis pro Sekunde zurückgegeben.

Wichtigste Antwortfelder:

| Feld | Beschreibung |
| - | - |
| `unit` | Preiseinheit: `per_image`, `per_call`, `per_second`, `per_million_tokens` |
| `unit_price_usd` | Stückpreis (USD) |
| `total_usd` | Gesamtpreis für diese Spezifikation (USD) |
| `unit_prices` | Bei Token-Abrechnung: Preis pro Million Tokens, z. B. `input`, `output` |
| `estimated` | `true` bedeutet, dass die endgültige Abbuchung von der tatsächlichen Nutzung abhängt (z. B. Token-Abrechnung); der Preis dient nur zur Orientierung |
| `price_source` | Preisquelle: `membership` (Mitgliederpreis), `user_override` (individueller Preis), `group` (Gruppenpreis), `default` (Standardpreis) |

Bis zu `60` Abfragen pro Minute und API Key.

***

## Fehlerbehandlung

| HTTP-Status | `error.code` | Beschreibung |
| - | - | - |
| 400 | `invalid_request_id` / `invalid_request` usw. | Ungültiger Parameter, Details in `message` |
| 400 | `time_range_too_large` | Log-Zeitraum überschreitet 31 Tage |
| 401 / 402 / 403 | — | API Key ungültig, abgelaufen oder deaktiviert |
| 404 | `log_not_found` | Log-Eintrag nicht gefunden; möglicherweise noch nicht geschrieben |
| 404 | `model_not_found` / `no_valid_pricing` | Modell existiert nicht oder hat keinen Preis |
| 429 | — | Zu viele Anfragen |
| 500 / 503 | — | Dienst vorübergehend nicht verfügbar, bitte später erneut versuchen |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.