> ## 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.

# Log Permintaan dan Harga Akun

>  - Cek biaya satu panggilan berdasarkan ID permintaan atau ID tugas - Sinkronkan semua catatan pemakaian dan galat per halaman berdasarkan rentang waktu - Cek harga model yang benar-benar berlaku untuk akun saat ini 

Gunakan API Key untuk mengecek biaya setiap panggilan, serta harga sebenarnya yang dibayar akun Anda untuk suatu model. Ketiga endpoint tidak memeriksa saldo, sehingga tetap bisa dipanggil meskipun saldo 0.

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

```bash Sinkronisasi log 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 Harga akun 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 Catatan tunggal 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 Sinkronisasi log theme={null}
{
  "object": "list",
  "data": [
    {
      "id": "<ID permintaan>",
      "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 Harga akun 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"
}
```

## Autentikasi

**Authorization** `string` *required*

Gunakan API Key yang sama dengan yang dipakai untuk memanggil model, dengan autentikasi Bearer Token. Dapatkan kunci di [halaman manajemen API Key](https://apimart.ai/keys).

```
Authorization: Bearer YOUR_API_KEY
```

## Endpoint

```text theme={null}
GET /v1/logs/requests/{id}    Catatan tunggal berdasarkan ID permintaan
GET /v1/logs/requests         Sinkronisasi log berdasarkan rentang waktu
GET /v1/pricing/model         Cek harga akun
```

Nilai dalam USD; `cost_credits` dan `credits` dalam kredit, setara USD × 10.

***

## Catatan tunggal berdasarkan ID permintaan

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

**id** `string` *required*

* Panggilan sinkron: nilai header respons `X-Oneapi-Request-Id`
* Tugas asinkron: ID tugas yang dikembalikan saat pengiriman

> [!NOTE]
>
> Log ditulis secara asinkron dan biasanya dapat dicek beberapa detik setelah permintaan selesai. Jika menerima `404 log_not_found`, coba lagi nanti. Tugas asinkron harus dicek dengan ID tugas, dan catatannya baru ada setelah tugas selesai atau gagal.

Cakupan pencarian adalah seluruh akun pemilik API Key. `data` berupa array; ID yang sama bisa memiliki catatan pemakaian sekaligus catatan galat. Field utama:

| Field | Keterangan |
| - | - |
| `id` | ID permintaan atau ID tugas |
| `type` | `consume` (pemakaian) atau `error` (galat) |
| `created_at` | Waktu catatan, detik Unix; untuk tugas asinkron adalah waktu penyelesaian tagihan |
| `model_name` | Nama model |
| `token_name` | Nama API Key yang melakukan panggilan (nama saat catatan ditulis; nama bisa sama). Untuk membedakan kunci secara tepat, filter dengan `token_id` di endpoint sinkronisasi |
| `prompt_tokens` / `completion_tokens` | Token input / output |
| `cost_usd` | Biaya untuk catatan ini (USD) |
| `cost_credits` | Kredit yang ditagih |

`cost_usd` adalah jumlah akhir setelah penyelesaian tagihan: catatan galat selalu `0`, dan pengembalian dana untuk kegagalan sudah selesai sebelum catatan ditulis. Jumlah catatan dengan `type` `consume` adalah total biaya panggilan Anda.

***

## Sinkronisasi Log Permintaan

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

Ambil semua catatan akun Anda dalam rentang waktu per halaman — cocok untuk rekonsiliasi terjadwal. Field setiap catatan sama dengan pencarian catatan tunggal.

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

Waktu mulai, timestamp Unix dalam detik.

**end\_timestamp** `integer`

Waktu akhir, timestamp Unix dalam detik. Default-nya waktu saat ini. Kedua batas inklusif, dan rentang tidak boleh melebihi 31 hari.

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

Jenis catatan: `all`, `consume`, atau `error`.

**model** `string`

Filter berdasarkan nama model.

**token\_id** `integer`

Hanya mengembalikan catatan dari API Key yang ditentukan. ID dapat disalin dari daftar "API Key" di konsol (ditampilkan di bawah nama kunci); ID tidak berubah setelah kunci dirotasi.

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

Jumlah per halaman, `1`–`1000`.

**cursor** `string`

Kursor paginasi. Kirim kembali `next_cursor` dari halaman sebelumnya apa adanya, dan jangan ubah parameter lain selama paginasi.

Dalam respons, `has_more` menunjukkan apakah masih ada halaman berikutnya, `next_cursor` adalah kursor halaman berikutnya, dan `watermark` adalah waktu server dikurangi 300 detik.

> [!TIP]
>
> **Cara sinkronisasi yang disarankan**: `end_timestamp` setiap putaran tidak melewati `watermark`; mulai putaran berikutnya 10 menit sebelum akhir putaran sebelumnya dan hapus duplikat berdasarkan `(id, type)`; dalam satu jendela waktu, lanjutkan paginasi sampai `has_more` bernilai `false`.

***

## Cek harga akun

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

Cek harga sebenarnya yang dibayar akun pemilik API Key saat ini untuk suatu model. Harga khusus, harga member, rasio grup, dan diskon sudah diperhitungkan, sama dengan biaya saat pemanggilan. Halaman harga menampilkan harga publik; untuk memperkirakan biaya akun Anda sendiri, gunakan endpoint ini.

**model** `string` *required*

Nama model; alias didukung.

**resolution** `string`

Resolusi atau tingkat; harus didukung oleh model.

**size** `string`

Ukuran gambar.

**quality** `string`

Tingkat kualitas.

**duration** `integer`

Durasi dalam detik, `1`–`3600`, untuk model berbayar per detik.

**n** `integer`

Jumlah output, `1`–`100`.

Tanpa parameter spesifikasi, harga dihitung dengan spesifikasi default model. Untuk model berbayar per detik, tanpa `duration` hanya harga per detik yang dikembalikan.

Field respons utama:

| Field | Keterangan |
| - | - |
| `unit` | Satuan harga: `per_image`, `per_call`, `per_second`, `per_million_tokens` |
| `unit_price_usd` | Harga satuan (USD) |
| `total_usd` | Harga total untuk spesifikasi ini (USD) |
| `unit_prices` | Dikembalikan untuk model berbayar per token: harga per sejuta token, misalnya `input`, `output` |
| `estimated` | `true` berarti biaya akhir bergantung pada pemakaian sebenarnya (misalnya tagihan per token); harga hanya sebagai acuan |
| `price_source` | Sumber harga: `membership` (harga member), `user_override` (harga khusus), `group` (harga grup), `default` (harga standar) |

Maksimal `60` permintaan per menit per API Key.

***

## Penanganan Galat

| Status HTTP | `error.code` | Keterangan |
| - | - | - |
| 400 | `invalid_request_id` / `invalid_request`, dll. | Parameter tidak valid; lihat `message` untuk detail |
| 400 | `time_range_too_large` | Rentang waktu log melebihi 31 hari |
| 401 / 402 / 403 | — | API Key tidak valid, kedaluwarsa, atau dinonaktifkan |
| 404 | `log_not_found` | Catatan log tidak ditemukan; mungkin belum ditulis |
| 404 | `model_not_found` / `no_valid_pricing` | Model tidak ada atau belum memiliki harga |
| 429 | — | Terlalu banyak permintaan |
| 500 / 503 | — | Layanan sementara tidak tersedia, coba lagi nanti |


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