XPlor3
REST API

Referensi endpoint

Endpoint REST yang tersedia untuk kunci API, dengan field request dan respons masing-masing.

Semua alamat relatif terhadap https://api.xplor3.space/v1. Kecuali GET /models, setiap endpoint butuh header Authorization: Bearer xpk_....

Model

Daftar model

GET /models

Katalog semua model yang aktif. Publik, tanpa kunci.

Field

Tipe

Field bertipe image, video, atau audio menerima daftar id unggahan dari POST /uploads. Field max pada field media menunjukkan berapa berkas yang boleh dikirim.

Isi yang sama, dalam bentuk tabel per model lengkap dengan aturan per tier dan mode, ada di Referensi model.

Generate

Mulai job

POST /jobs

Memulai generate dan memotong kredit saat itu juga. Butuh email terverifikasi.

Field

Tipe

Respons 201:

Field

Tipe

Status job

GET /jobs/{id}

Field

Tipe

Perubahan status secara langsung

GET /jobs/{id}/events

Server-Sent Events (text/event-stream). Pesan pertama adalah status saat ini; pesan berikutnya dikirim setiap kali status atau progres berubah, dan koneksi ditutup saat job selesai. Setiap pesan memuat jobId, status, progress, failCode, failMessage, assets, dan queuePosition (posisi di antrean selama QUEUED).

Daftar job

GET /jobs

Riwayat job akun, terbaru lebih dulu. Dipaginasi dengan limit dan cursor.

Field

Tipe

Batalkan job

POST /jobs/{id}/cancel

Membatalkan job yang masih QUEUED dan mengembalikan kreditnya. Jawabannya { "id": "...", "status": "CANCELED" }. Job yang sudah dikirim ke model dijawab 400 JOB_ALREADY_SENT dan tetap berjalan sampai selesai; job yang sudah selesai dijawab 400 JOB_NOT_CANCELABLE.

Berkas

Unggah berkas

POST /uploads

Multipart, dengan satu berkas di field file. Jenisnya dikenali dari isi berkas, bukan dari namanya: gambar, video, atau audio. Jawabannya 201 dengan id, name, mimeType, dan kind. Berkas yang diunggah juga muncul di Pustaka studio.

POST /uploads/base64

Sama, untuk klien yang tidak bisa mengirim multipart. Body JSON { "fileName": "...", "dataBase64": "..." }, dengan isi base64 sampai sekitar 11 MB.

Tautan unduhan

POST /assets/urls

Field

Tipe

Jawabannya { "items": [{ "id", "url", "expiresAt" }] }. Setiap tautan berlaku 15 menit. Id yang bukan milik akunmu tidak ikut dikembalikan.

GET /assets/{id}/url

Satu tautan untuk satu berkas, dengan ?download=true bila perlu.

Akun

Saldo

GET /wallet

balance dan 20 catatan kredit terakhir di ledger. Setiap catatan memuat delta, reason (misalnya JOB_DEBIT, JOB_REFUND, TOPUP), jobId, dan createdAt.

GET /wallet/ledger

Seluruh catatan kredit, dipaginasi dengan limit dan cursor.

Pemilik kunci

GET /me

id, email, name, dan emailVerified akun pemilik kunci.

Rahasia webhook

GET /me/webhook-secret
POST /me/webhook-secret/rotate

Rahasia penanda tangan webhook (secret, diawali whsec_) dan nomor versinya (version). Keduanya hanya menerima sesi login di peramban, bukan kunci API, jadi dipakai lewat halaman Kredensial studio. Request dengan kunci API dijawab 403.

Proyek

GET /collections

Daftar proyek akun, dengan id yang bisa dikirim sebagai collectionId.

POST /collections

Membuat proyek baru. Body { "name": "Kampanye Lebaran" }.

POST /collections/{id}/items

Memasukkan job yang sudah selesai ke proyek. Body { "jobIds": ["..."] }.

Di halaman ini