JAKARTA, INDONESIAPAPAN KASUS BUKA

Order

Membuat, memantau, membalas, dan menerima order Instant Matter.

Buat order

POST/v1/ordersscope order:buat
bash
curl -X POST https://api.dampingin.com/v1/orders \
  -H "Authorization: Bearer $DAMPINGIN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 5b8e0c1a-7f7e-4b61-9a53-3c1f0f1d2e11" \
  -d '{
    "service": "pt-perorangan",
    "intake": {
      "nama_pt": "PT Maju Jaya, PT Maju Jaya Abadi, PT Maju Bersama",
      "kbli": "62019",
      "pemilik": "Budi Santoso"
    },
    "max_budget": 3000000,
    "callback_url": "https://agent.example.com/hooks/dampingin"
  }'

Respons 201 Created berisi objek order. Replay dengan Idempotency-Key yang sama menghasilkan 200; lihat Idempotency.

Body request

FieldTipeWajibKeterangan
servicestringYaKode layanan dari katalog
intakeobjectSesuai skemaJawaban intake, key = IntakeField.key. Kalau tidak dikirim dianggap {}
max_budgetintegerTidakBatas harga (IDR) untuk order ini. Harus > 0
callback_urlstringTidakURL http(s) untuk webhook order ini. Default: webhook URL di API key

Body harus objek JSON (400 VALIDATION kalau bukan). service yang bukan string, max_budget yang tidak positif, atau callback_url yang bukan http(s) menghasilkan 422 VALIDATION.

Validasi dan pembayaran

  1. Layanan ada dan aktif, atau 404 SERVICE_NOT_FOUND. Layanan berbasis penawaran: 422 SERVICE_IS_BID. Belum dibuka untuk agent: 422 NOT_AGENT_ELIGIBLE.
  2. Field intake wajib terisi, atau 422 INTAKE_INVALID.
  3. Organisasi disetujui, atau 403 ACCOUNT_PENDING / ACCOUNT_REJECTED.
  4. Harga agent tidak melebihi min(max_budget, max_order_budget), atau 402 BUDGET_EXCEEDED.
  5. Pemakaian bulan ini + harga tidak melebihi monthly_budget, atau 402 MONTHLY_BUDGET_EXCEEDED.
  6. Harga di atas ambang persetujuan organisasi: order dibuat menunggu_bayar (deposit belum dipotong, invoice dibuat).
  7. Selain itu deposit harus cukup, atau 402 INSUFFICIENT_DEPOSIT. Harga dipindah dari deposit ke escrow dan order langsung dibayar.

Request yang ditolak tidak membuat order dan tidak memotong deposit, jadi aman diulang setelah masalahnya diperbaiki.

Objek order

json
{
  "id": "ord_xxxxxxxxxxxxxxxxxxxx",
  "service": "pt-perorangan",
  "status": "dibayar",
  "price_idr": 2900000,
  "max_budget": 3000000,
  "intake": { "nama_pt": "PT Maju Jaya, ...", "kbli": "62019", "pemilik": "Budi Santoso" },
  "callback_url": "https://agent.example.com/hooks/dampingin",
  "sla_due_at": "2026-10-04T08:00:00.000Z",
  "deliverable": null,
  "approval_required": false,
  "messages": [],
  "created_at": "2026-09-27T08:00:00.000Z",
  "updated_at": "2026-09-27T08:00:00.000Z"
}
FieldTipeKeterangan
idstringID publik, awalan ord_
servicestringKode layanan
statusstringLihat tabel status
price_idrintegerHarga yang dibayar (harga agent)
max_budgetinteger | nullSesuai request
intakeobjectData yang kamu kirim
callback_urlstring | nullTujuan webhook order ini
sla_due_atstring | nullTenggat SLA, diisi saat order dibayar
deliverablestring | nullHasil dari praktisi (teks), diisi saat diserahkan
approval_requiredbooleantrue selama status menunggu_bayar
messagesarray{ id, role, body, created_at }. role practitioner = dari praktisi, client = dari kamu
created_at, updated_atstringISO 8601

Respons POST /v1/orders selalu berisi messages: []. Ambil order untuk melihat percakapan.

Status

StatusLabelArti untuk agent
dibuatDibuatSementara, di dalam transaksi pembuatan. Tidak pernah terlihat lewat API.
menunggu_bayarMenunggu pembayaranHarga di atas ambang persetujuan. Menunggu owner/admin menyetujui di dashboard.
dibayarDibayarDana pindah dari deposit ke escrow. SLA mulai berjalan.
ditawarkanMencarikan praktisiDitawarkan ke praktisi yang memenuhi syarat, satu per satu, 30 menit per praktisi.
diambilPraktisi ditugaskanPraktisi menerima tawaran.
dikerjakanSedang dikerjakanSedang dikerjakan.
butuh_input_klienButuh data dari kamuPraktisi butuh data. Baca messages, balas lewat /messages.
diserahkanHasil diserahkanHasil ada di deliverable. Terima lewat /accept.
selesaiSelesaiDiterima. Escrow dilepas ke praktisi.
sengketaSengketaDalam sengketa, ditangani tim Dampingin.
dibatalkanDibatalkanDibatalkan (misalnya ditolak admin organisasi).
direfundDirefundDana escrow dikembalikan ke deposit organisasi.

Alur status

text
menunggu_bayar ──(disetujui admin)──> dibayar
             └──(ditolak admin)────> dibatalkan

dibayar -> ditawarkan -> diambil -> dikerjakan -> diserahkan -> selesai
                 ^           |          |   ^          |
                 └───────────┘          v   |          v
            (praktisi lepas)   butuh_input_klien   dikerjakan (revisi) / sengketa

sengketa -> selesai | direfund | dikerjakan

Jangan mengandalkan urutan tertentu. Perlakukan selesai, dibatalkan, dan direfund sebagai akhir; sengketa sebagai status yang butuh manusia.

Catatan

Kalau tidak ada praktisi yang memenuhi syarat dan bersedia, order tetap di ditawarkan dan tim operasional menindaklanjuti. Kebijakan SLA: keterlambatan memberi kredit 10% dari jasa; order agent yang telat lebih dari 24 jam bisa dibatalkan dengan refund penuh (diproses tim, belum lewat API).

Ambil order

GET/v1/orders/{id}scope status:baca
bash
curl https://api.dampingin.com/v1/orders/ord_xxxxxxxxxxxxxxxxxxxx \
  -H "Authorization: Bearer $DAMPINGIN_API_KEY"

Hanya order milik organisasi key yang terlihat. ID lain, termasuk order organisasi lain, menghasilkan 404 NOT_FOUND.

Kirim pesan

POST/v1/orders/{id}/messagesscope order:buat
bash
curl -X POST https://api.dampingin.com/v1/orders/ord_xxxxxxxxxxxxxxxxxxxx/messages \
  -H "Authorization: Bearer $DAMPINGIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "body": "Pemilik juga punya NPWP 12.345.678.9-012.000" }'

Body: { "body": "..." }, wajib dan tidak kosong (422 VALIDATION). Pesan disimpan dengan role client. Kalau order sedang butuh_input_klien, status kembali ke dikerjakan. Di status lain pesan tetap tersimpan tanpa mengubah status. Respons: objek order lengkap.

Terima hasil

POST/v1/orders/{id}/acceptscope order:buat
bash
curl -X POST https://api.dampingin.com/v1/orders/ord_xxxxxxxxxxxxxxxxxxxx/accept \
  -H "Authorization: Bearer $DAMPINGIN_API_KEY"

Hanya untuk order diserahkan; status lain menghasilkan 409 INVALID_STATE. Order menjadi selesai dan escrow dilepas: jasa ke praktisi, biaya platform ke Dampingin. Tidak perlu body.

Penting

Terima hanya setelah hasil diperiksa, idealnya oleh manusia di pihak kamu untuk pekerjaan yang berisiko. Menerima berarti melepas pembayaran.

Belum tersedia

Belum tersedia

Belum ada endpoint untuk: daftar order, membatalkan order, meminta revisi, membuka sengketa, atau mengunduh lampiran. Hasil saat ini berupa teks di deliverable. Untuk revisi atau sengketa, hubungi halo@dampingin.com dengan ID order.