---
sidebar:
  order: 1
title: "HTTP API"
description: "Lakukan autentikasi, temukan alat, dan konfirmasi perubahan melalui HTTP API yang tersedia."
---

Kirim permintaan API produk ke origin Influence tepercaya, misalnya `https://influence.so`. Domain dokumentasi tidak menerima permintaan API produk. Gunakan jalur persis di bawah tanpa parameter kueri.

## Buat kunci API dengan izin yang sesuai

Di [pengaturan Influence](https://influence.so/sign-in?next=%2Fapp%2Fsettings%2Faccount%23settings-developer), buka Aplikasi dan otomatisasi → Kunci API. Pilih izin yang dibutuhkan dan waktu kedaluwarsa. Simpan kunci yang hanya ditampilkan sekali dalam penyimpanan rahasia sebagai `PUBLISH_API_TOKEN`. Kirim melalui `Authorization: Bearer …`, jangan lewat URL, isi permintaan, atau chat. Cabut kunci saat tidak diperlukan lagi.

## Temukan alat dan baca data

Atur `PUBLISH_API_URL` ke origin tepercaya. Contoh ini menganggap proses sudah memiliki `PUBLISH_API_TOKEN`. `accountList` memerlukan `integrations:read`; ikuti kolom paginasi untuk mengambil halaman selanjutnya.

```sh
export PUBLISH_API_URL="https://influence.so"
curl "$PUBLISH_API_URL/api/v1/tools" \
  -H "Authorization: Bearer $PUBLISH_API_TOKEN"

curl "$PUBLISH_API_URL/api/v1/tools/accountList/call" \
  -H "Authorization: Bearer $PUBLISH_API_TOKEN" \
  -H 'Content-Type: application/json' \
  --data '{"input":{}}'
```

## Jalur permintaan

| Metode | Jalur | Tujuan |
| --- | --- | --- |
| `GET` | `/api/v1/tools` | Menampilkan alat yang tersedia untuk kredensial ini. |
| `POST` | `/api/v1/tools/{tool}/call` | Memanggil alat hanya-baca. |
| `POST` | `/api/v1/tools/{tool}/prepare` | Menyiapkan perubahan yang tepat tanpa menjalankannya. |
| `POST` | `/api/v1/tools/{tool}/confirm` | Mengonfirmasi perubahan yang sudah disiapkan. |
| `POST` | `/api/v1/media/import` | Mengonfirmasi unggahan biner gambar kecil yang telah disiapkan. |

Permintaan alat JSON memakai `Content-Type: application/json` dan isi yang hanya memuat `input`: `{"input":{…}}`. Dapatkan skema masukan setiap alat dari katalog alat terbaru.

## Siapkan dan konfirmasi perubahan

1. Kirim masukan operasi yang persis ke `/prepare`. Respons berhasil memuat `status: "confirmation_required"`, `confirmationCapability`, `expiresAt`, `inputDigest`, dan `summary` jika tersedia.
2. Sebelum kedaluwarsa, kirim masukan yang sama ke `/confirm`. Masukkan nilai konfirmasi yang diterima ke `X-Publish-Confirmation` dan kunci baru buatan klien ke `Idempotency-Key`.
3. Simpan masukan, nilai konfirmasi, dan kunci bersama-sama. Jika konfirmasi terputus atau hasilnya belum pasti, gunakan ketiganya lagi untuk permintaan yang sama. Jangan menyiapkan operasi pengganti untuk memulihkan hasil yang belum pasti.

Kunci idempotensi berisi 16–200 karakter dari `A–Z`, `a–z`, `0–9`, `.`, `_`, `:`, dan `-`. Nilai konfirmasi adalah rahasia opak. Kunci yang dikirim ke `/call` atau `/prepare` tidak mencadangkan perubahan terkonfirmasi.

Konfirmasi permintaan berbeda dari persetujuan publikasi. Untuk menerbitkan atau mengubah jadwal, buat dan tampilkan tinjauan lengkap yang terbaru. Teks memerlukan persetujuan baru setelah tinjauan ditampilkan. Gambar dan video memerlukan persetujuan visual orang tersebut melalui antarmuka yang mendukungnya atau setelah masuk ke Influence. Menyiapkan tinjauan tidak menerbitkan apa pun. Baca hasil tersimpan sebelum melanjutkan; `needs_review` berarti perlu memastikan apa yang terjadi, bukan mengirim ulang.

## Tangani error dan hasil yang belum pasti

Periksa status HTTP dan isi respons. Keberhasilan mengembalikan `{"ok":true,"toolName":"…","output":{…}}`. Kegagalan alat mengembalikan `{"ok":false,"toolName":"…","error":{"code":"…","message":"…","retryable":false}}` dan bisa disertai HTTP 200. Kegagalan transport memakai `{"error":{"code":"…","message":"…","retryable":false}}` tanpa `ok` atau `toolName`.

401 berarti autentikasi diperlukan: periksa kedaluwarsa atau pencabutan. Izin yang kurang memerlukan pemberian akses yang sesuai, bukan permintaan berulang. 503 berarti API tidak tersedia di lingkungan tersebut. Ikuti error dan petunjuk percobaan ulang. Batas waktu habis tidak membuktikan perubahan gagal: simpan data konfirmasinya dan baca status sebelum mengirim ulang. Diterima, dijadwalkan, dan diterbitkan adalah hasil yang berbeda.

## Unggah media

Untuk berkas lokal, utamakan `uploadMedia` dari SDK atau `media:upload` dari CLI. Keduanya memakai alat unggahan multipart yang sama dan mempertahankan `clientKey` yang stabil untuk percobaan ulang. Hanya hasil siap dengan `assetId` yang bisa dilampirkan. Gunakan `mediaImport` untuk referensi berkas HTTPS yang diizinkan; jalur lokal bukan URL unduhan.

`POST /api/v1/media/import` mendukung transport gambar kecil yang sudah ada: siapkan `mediaImport` dengan deskriptor unggahan yang persis, lalu kirim bita yang sama sebagai `application/octet-stream`. Sertakan `X-Publish-Confirmation`, `Idempotency-Key`, dan `X-Publish-Upload` berisi deskriptor JSON yang dikodekan untuk URI. Bita harus sesuai dengan ukuran dan SHA-256-nya. Batasnya 3 MiB; gunakan helper unggahan untuk berkas lebih besar yang didukung. Unggahan tidak pernah memberi persetujuan publikasi.

[Buka referensi API](/id/api-reference) atau [unduh spesifikasi OpenAPI](/specs/influence.openapi.json).
