List messages
package main
import ( "fmt" "net/http" "io")
func main() {
url := "https://api.kirimdev.com/v1/106540352242922/messages?conversation_id=cnv_01HXYZABCDEFGHJKMNPQRSTVWX&direction=inbound&status=pending&created_after=2026-09-10T00%3A00%3A00.000Z&created_before=2026-09-11T00%3A00%3A00.000Z&limit=25&cursor=eyJpZCI6IjAxSFhZWkFCQ0RFRkdISktNTlBRUlNUVldYIiwidHMiOiIyMDI2LTA5LTEwVDA5OjAwOjAwLjAwMFoifQ"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}const url = 'https://api.kirimdev.com/v1/106540352242922/messages?conversation_id=cnv_01HXYZABCDEFGHJKMNPQRSTVWX&direction=inbound&status=pending&created_after=2026-09-10T00%3A00%3A00.000Z&created_before=2026-09-11T00%3A00%3A00.000Z&limit=25&cursor=eyJpZCI6IjAxSFhZWkFCQ0RFRkdISktNTlBRUlNUVldYIiwidHMiOiIyMDI2LTA5LTEwVDA5OjAwOjAwLjAwMFoifQ';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}use reqwest;
#[tokio::main]pub async fn main() { let url = "https://api.kirimdev.com/v1/106540352242922/messages";
let querystring = [ ("conversation_id", "cnv_01HXYZABCDEFGHJKMNPQRSTVWX"), ("direction", "inbound"), ("status", "pending"), ("created_after", "2026-09-10T00:00:00.000Z"), ("created_before", "2026-09-11T00:00:00.000Z"), ("limit", "25"), ("cursor", "eyJpZCI6IjAxSFhZWkFCQ0RFRkdISktNTlBRUlNUVldYIiwidHMiOiIyMDI2LTA5LTEwVDA5OjAwOjAwLjAwMFoifQ"), ];
let mut headers = reqwest::header::HeaderMap::new(); headers.insert("Authorization", "Bearer <token>".parse().unwrap());
let client = reqwest::Client::new(); let response = client.get(url) .query(&querystring) .headers(headers) .send() .await;
let results = response.unwrap() .json::<serde_json::Value>() .await .unwrap();
dbg!(results);}curl --request GET \ --url 'https://api.kirimdev.com/v1/106540352242922/messages?conversation_id=cnv_01HXYZABCDEFGHJKMNPQRSTVWX&direction=inbound&status=pending&created_after=2026-09-10T00%3A00%3A00.000Z&created_before=2026-09-11T00%3A00%3A00.000Z&limit=25&cursor=eyJpZCI6IjAxSFhZWkFCQ0RFRkdISktNTlBRUlNUVldYIiwidHMiOiIyMDI2LTA5LTEwVDA5OjAwOjAwLjAwMFoifQ' \ --header 'Authorization: Bearer <token>'List messages for the WhatsApp account identified by phone_number_id. Filter by conversation_id, direction, status, or a created_after/created_before window.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Meta WhatsApp Business phone_number_id of the connected account that should send / own this resource. Discoverable via GET /v1/accounts (returned as phone_number_id on each row).
Example
106540352242922Meta WhatsApp Business phone_number_id of the connected account that should send / own this resource. Discoverable via GET /v1/accounts (returned as phone_number_id on each row).
Query Parameters
Section titled “Query Parameters ”Return messages from one public inbox conversation. Unknown or cross-account IDs produce an empty list.
Example
cnv_01HXYZABCDEFGHJKMNPQRSTVWXReturn messages from one public inbox conversation. Unknown or cross-account IDs produce an empty list.
Filter messages received from contacts (inbound) or sent by your business (outbound).
Example
inboundFilter messages received from contacts (inbound) or sent by your business (outbound).
Filter by the latest persisted delivery state.
Example
deliveredFilter by the latest persisted delivery state.
Return messages created strictly after this ISO 8601 instant.
Example
2026-09-10T00:00:00.000ZReturn messages created strictly after this ISO 8601 instant.
Return messages created strictly before this ISO 8601 instant.
Example
2026-09-11T00:00:00.000ZReturn messages created strictly before this ISO 8601 instant.
Number of items to return. Defaults to 25; minimum 1 and maximum 100.
Example
25Number of items to return. Defaults to 25; minimum 1 and maximum 100.
Opaque continuation token from the previous response’s next_cursor. Pass it unchanged and keep all other filters the same.
Example
eyJpZCI6IjAxSFhZWkFCQ0RFRkdISktNTlBRUlNUVldYIiwidHMiOiIyMDI2LTA5LTEwVDA5OjAwOjAwLjAwMFoifQOpaque continuation token from the previous response’s next_cursor. Pass it unchanged and keep all other filters the same.
Responses
Section titled “ Responses ”Message list
object
Items in this page, ordered as documented by the operation.
object
object
Meta-reported sub-kind. Current values include edit (contact edited a message; Meta refused to forward the new body) and unknown (message type Meta itself cannot classify). Kept open-string because Meta may introduce new values (view_once, poll, …).
object
Stable Kirim error code. Known values include outside_24h_window, marketing_opted_out, marketing_blocked_by_user, recipient_unavailable, unsupported_message_type, account_restricted, account_locked, consent_required, customer_suspended, permission_revoked, auth_expired, app_rate_limited, account_rate_limited, template_not_found, template_paused, template_policy_violation, flow_blocked, media_upload_failed, media_download_failed, undeliverable, policy_violation, subscription_inactive, upstream_error.
Whether another page is available.
Pass this value unchanged as cursor to fetch the next page. null marks the final page.
Unique request identifier to include when contacting support.
Examples
Most recent inbox messages
{ "data": [ { "id": "msg_01HXYZABCDEFGHJKMNPQRSTVWX", "object": "message", "conversation_id": "cnv_01HXYZABCDEFGHJKMNPQRSTVWX", "to": "+628123456789", "bsuid": null, "parent_bsuid": null, "username": null, "direction": "inbound", "type": "text", "content": "Halo, apakah pesanan saya sudah dikirim?", "media_url": null, "status": "delivered", "created_at": "2026-09-10T09:00:00.000Z" } ], "has_more": false, "next_cursor": null, "request_id": "req_01HXYZABCDEFGHJKMNPQRSTVWX"}Validation failure
object
object
Human-readable explanation of the error.
Request field associated with the error, when applicable.
Unique request identifier to include when contacting support.
Examples
A field value is invalid.
{ "error": { "type": "invalid_request_error", "code": "invalid_field_value", "message": "A field value is invalid.", "request_id": "req_01HXYZABCDEFGHJKMNPQRSTVWX" }}Authentication failure
object
object
Human-readable explanation of the error.
Request field associated with the error, when applicable.
Unique request identifier to include when contacting support.
Examples
The provided API key is invalid.
{ "error": { "type": "authentication_error", "code": "invalid_api_key", "message": "The provided API key is invalid.", "request_id": "req_01HXYZABCDEFGHJKMNPQRSTVWX" }}Resource not found
object
object
Human-readable explanation of the error.
Request field associated with the error, when applicable.
Unique request identifier to include when contacting support.
Examples
Resource not found.
{ "error": { "type": "not_found", "code": "resource_not_found", "message": "Resource not found.", "request_id": "req_01HXYZABCDEFGHJKMNPQRSTVWX" }}Semantic failure (e.g. idempotency key reuse, pre-send compliance guard, media not found)
object
object
Human-readable explanation of the error.
Request field associated with the error, when applicable.
Unique request identifier to include when contacting support.
Examples
The WhatsApp number is not verified for this organization.
{ "error": { "type": "invalid_request_error", "code": "whatsapp_number_not_verified", "message": "The WhatsApp number is not verified for this organization.", "request_id": "req_01HXYZABCDEFGHJKMNPQRSTVWX" }}Rate limit exceeded
object
object
Human-readable explanation of the error.
Request field associated with the error, when applicable.
Unique request identifier to include when contacting support.
Examples
Rate limit exceeded.
{ "error": { "type": "rate_limit_error", "code": "rate_limit_exceeded", "message": "Rate limit exceeded.", "request_id": "req_01HXYZABCDEFGHJKMNPQRSTVWX" }}Internal server error
object
object
Human-readable explanation of the error.
Request field associated with the error, when applicable.
Unique request identifier to include when contacting support.
Examples
An unexpected error occurred.
{ "error": { "type": "api_error", "code": "internal_error", "message": "An unexpected error occurred.", "request_id": "req_01HXYZABCDEFGHJKMNPQRSTVWX" }}