API publik

REST, JSON, read-only. Khusus workspace paket Pro.

Autentikasi

  1. Buka Pengaturan → API (butuh akses Kelola API key) dan klik Buat key. Key berawalan smt_live_ dan hanya ditampilkan sekali; simpan di secret manager sistemmu.
  2. Kirim di setiap request: Authorization: Bearer smt_live_…
  3. Key bisa dicabut kapan saja; request dengan key yang dicabut dibalas 401.
export SOCIOMILE_API_KEY="smt_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Batas

Endpoint

GET /api/v1/conversations

Daftar percakapan, terbaru dulu. Filter opsional: status (open, replied, solved, closed), channel (ID akun Threads), type (reply, mention), from & to (tanggal dibuat, YYYY-MM-DD), page.

curl -s "https://sociomile.sassly.ai/api/v1/conversations?status=open&page=1" \
  -H "Authorization: Bearer $SOCIOMILE_API_KEY"
{
  "data": [
    {
      "id": 1042,
      "channel": {"id": 3, "username": "tokobudi"},
      "type": "reply",
      "status": "open",
      "contact": {"username": "pelanggan.satu"},
      "category": "Pertanyaan stok",
      "labels": ["Penting"],
      "tags": ["promo"],
      "assignee": "Rina",
      "first_response_secs": null,
      "reopened_count": 0,
      "tickets": [],
      "created_at": "2026-10-07T10:00:00+07:00",
      "last_message_at": "2026-10-07T10:00:00+07:00",
      "solved_at": null,
      "closed_at": null
    }
  ],
  "meta": {"page": 1, "per_page": 50, "total": 1, "has_more": false}
}

GET /api/v1/conversations/{id}

Satu percakapan lengkap: pesan (masuk/keluar, status kirim, lampiran), label, tag, kategori, catatan internal, tiket.

curl -s "https://sociomile.sassly.ai/api/v1/conversations/1042" \
  -H "Authorization: Bearer $SOCIOMILE_API_KEY"
{
  "data": {
    "id": 1042,
    "…": "field sama dengan daftar",
    "context": {"text": "Promo akhir bulan…", "username": "tokobudi", "permalink": "https://www.threads.com/…"},
    "messages": [
      {"id": 1, "direction": "in", "author": "pelanggan.satu", "text": "Masih ada ukuran L?", "media_type": "TEXT_POST",
       "attachments": [], "status": "received", "permalink": "https://www.threads.com/…", "posted_at": "2026-10-07T10:00:00+07:00"},
      {"id": 2, "direction": "out", "author": "Rina", "text": "Masih ada kak.", "media_type": "TEXT_POST",
       "attachments": [], "status": "published", "permalink": "https://www.threads.com/…", "posted_at": "2026-10-07T10:05:00+07:00"}
    ],
    "notes": [{"body": "Kirim hari ini", "author": "Rina", "source": "manual", "ticket": null, "created_at": "…"}]
  }
}

GET /api/v1/tickets

Daftar tiket, nomor terbesar dulu. Filter opsional: status (open, in_progress, waiting, resolved, closed), page.

curl -s "https://sociomile.sassly.ai/api/v1/tickets?status=open" \
  -H "Authorization: Bearer $SOCIOMILE_API_KEY"
{
  "data": [
    {"number": 12, "code": "TKT-000012", "subject": "Cek stok", "status": "open", "priority": "high", "conversation_id": 1042,
     "assignees": ["Tari"], "due_at": null, "created_at": "…", "resolved_at": null, "closed_at": null}
  ],
  "meta": {"page": 1, "per_page": 50, "total": 1, "has_more": false}
}

GET /api/v1/tickets/{number}

Satu tiket beserta deskripsi dan diskusinya. {number} boleh angka (12) atau kode lengkap (TKT-000012).

curl -s "https://sociomile.sassly.ai/api/v1/tickets/TKT-000012" \
  -H "Authorization: Bearer $SOCIOMILE_API_KEY"

GET /api/v1/reports/summary

Angka utama dengan rumus yang sama dengan Dashboard & Reports (Rumus laporan). Filter opsional: from, to (default 7 hari terakhir), channel (ID, boleh beberapa: channel=1,2), type.

curl -s "https://sociomile.sassly.ai/api/v1/reports/summary?from=2026-10-01&to=2026-10-08" \
  -H "Authorization: Bearer $SOCIOMILE_API_KEY"
{
  "data": {
    "conversations": 5, "messages_in": 7, "replies_sent": 5, "replied": 3, "backlog": 3,
    "solved": 1, "closed": 1, "escalated": 1, "reopened": 1,
    "response_rate": 60, "solved_rate": 20, "escalation_rate": 20, "reopen_rate": 20,
    "avg_frt_seconds": 700, "median_frt_seconds": 600,
    "avg_resolution_seconds": 7200, "median_resolution_seconds": 7200,
    "tickets": {"total": 1, "open": 0, "done": 1, "avg_resolve_seconds": 7200}
  },
  "filters": {"from": "2026-10-01", "to": "2026-10-07", "channels": null, "type": null}
}

Kode error

Semua error berbentuk {"error": {"code": "…", "message": "…"}}.

HTTPcodeArti
401unauthorizedHeader Authorization tidak ada, format key salah, atau key sudah dicabut.
402plan_requiredWorkspace bukan Pro aktif.
404not_foundData atau endpoint tidak ada (data workspace lain juga 404).
405method_not_allowedAPI v1 hanya menerima GET.
422validation_errorParameter tidak valid, mis. tanggal bukan YYYY-MM-DD.
429rate_limitedLebih dari 60 request per menit; tunggu sesuai Retry-After.
500server_errorGangguan di server; aman diulang.