---
title: "Kirim pesan (text/template) via channel resmi"
method: POST
path: "/api/v1/messages"
tags: ["Messaging"]
---

# Kirim pesan (text/template) via channel resmi

`POST /api/v1/messages`

## Request

- Base URL: `https://api.tokolaku.id`
- URL: `https://api.tokolaku.id/api/v1/messages`
- Auth: HTTP bearer

Model BYON (Bring Your Own Number): nomor klien di-connect lewat Tokolaku (Tech Provider resmi Meta), dikirim dari app kamu. Butuh scope `messages:write`. Pesan sesi (dalam 24 jam) gratis; pesan template (business-initiated) berbayar passthrough Meta + markup.

## Request body

- MessageRequest
  - `to` string, required: Nomor tujuan (format 62...)
  - `type` 'text' | 'template', required
  - `text` string: Wajib jika type=text
  - `channel_id` string: Wajib jika sub-akun punya > 1 channel resmi
  - `template` object: Wajib jika type=template
    - `name` string
    - `language` string
    - `category` string

## Response `200`

Pesan berhasil dikirim

- MessageResponse
  - `id` string, required: Id internal (dipakai untuk idempotensi charge)
  - `channel_id` string, required
  - `to` string, required
  - `type` 'text' | 'template', required
  - `status` string, required
  - `provider_message_id` string, required
  - `charged_idr` number, required: 0 untuk pesan sesi atau saat billing pesan OFF

## Other responses

- `400`: Body request tidak valid / channel tidak sesuai
- `402`: Saldo API tidak cukup
- `422`: Tarif pesan belum diset
- `502`: Gagal kirim ke Meta

---

[API](https://skmtc.dev/tokolaku/apis/tokolaku-engine-api.md) · [All operations](https://skmtc.dev/tokolaku/apis/tokolaku-engine-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tokolaku/apis/tokolaku-engine-api/revisions/5d95caea34ef?raw)
