openapi: 3.0.3
info:
title: 'WhatsApp Baileys API API Documentation'
description: ''
version: 1.0.0
servers:
-
url: 'http://127.0.0.1:8000'
tags:
-
name: Endpoints
description: ''
-
name: Messages
description: ''
paths:
/api/whatsapp/sessions:
post:
summary: 'Create a new WhatsApp session'
operationId: createANewWhatsAppSession
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
session_name:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
required:
- session_name
security: []
'/api/whatsapp/sessions/{sessionId}/status':
get:
summary: 'Get the status of a session'
operationId: getTheStatusOfASession
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: sessionId
description: ''
example: consequatur
required: true
schema:
type: string
'/api/whatsapp/sessions/{deviceId}':
get:
summary: 'Get the status active from session device id'
operationId: getTheStatusActiveFromSessionDeviceId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: deviceId
description: ''
example: consequatur
required: true
schema:
type: string
'/api/whatsapp/sessions/{sessionId}/disconnect':
delete:
summary: 'Disconnect a session'
operationId: disconnectASession
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: sessionId
description: ''
example: consequatur
required: true
schema:
type: string
'/api/whatsapp/sessions/{sessionId}':
delete:
summary: 'Delete a session'
operationId: deleteASession
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: sessionId
description: ''
example: consequatur
required: true
schema:
type: string
'/api/whatsapp/sessions/{sessionId}/device':
delete:
summary: 'Delete a session'
operationId: deleteASession
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: sessionId
description: ''
example: consequatur
required: true
schema:
type: string
/api/whatsapp/groups/sync:
post:
summary: 'Sync groups from WhatsApp to database'
operationId: syncGroupsFromWhatsAppToDatabase
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
session_device_id:
type: string
description: ''
example: consequatur
nullable: false
required:
- session_device_id
security: []
/api/whatsapp/groups/device:
get:
summary: 'Get saved groups for a device'
operationId: getSavedGroupsForADevice
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
session_device_id:
type: string
description: ''
example: consequatur
nullable: false
required:
- session_device_id
security: []
'/api/whatsapp/groups/{groupId}':
delete:
summary: 'Delete a group'
operationId: deleteAGroup
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: groupId
description: ''
example: consequatur
required: true
schema:
type: string
'/api/whatsapp/messages/bulk/{jobId}/status':
get:
summary: 'Get bulk message job status'
operationId: getBulkMessageJobStatus
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: jobId
description: ''
example: consequatur
required: true
schema:
type: string
'/api/whatsapp/messages/bulk/{jobId}':
delete:
summary: 'Cancel a bulk message job'
operationId: cancelABulkMessageJob
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: jobId
description: ''
example: consequatur
required: true
schema:
type: string
/api/whatsapp/messages/bulk:
get:
summary: 'List all bulk message jobs'
operationId: listAllBulkMessageJobs
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
/api/whatsapp/messages/schedule/media:
post:
summary: 'Schedule a media message'
operationId: scheduleAMediaMessage
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
session_id:
type: string
description: ''
example: consequatur
nullable: false
to:
type: string
description: ''
example: consequatur
nullable: false
media_url:
type: string
description: 'Must be a valid URL.'
example: 'https://www.mueller.com/laborum-eius-est-dolor-dolores-minus-voluptatem'
nullable: false
type:
type: string
description: ''
example: audio
nullable: false
enum:
- image
- audio
- video
- document
caption:
type: string
description: ''
example: consequatur
nullable: true
scheduled_at:
type: string
description: 'Must be a valid date. Must be a date after now.'
example: '2107-06-26'
nullable: false
required:
- session_id
- to
- media_url
- type
- scheduled_at
security: []
'/api/whatsapp/messages/schedule/{messageId}/status':
get:
summary: 'Get scheduled message status'
operationId: getScheduledMessageStatus
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: messageId
description: ''
example: consequatur
required: true
schema:
type: string
'/api/whatsapp/messages/schedule/{messageId}':
delete:
summary: 'Cancel a scheduled message'
operationId: cancelAScheduledMessage
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: messageId
description: ''
example: consequatur
required: true
schema:
type: string
/api/whatsapp/messages/schedule:
get:
summary: 'List all scheduled messages'
operationId: listAllScheduledMessages
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
'/api/whatsapp/sessions/{sessionId}/messages':
get:
summary: 'Get message history'
operationId: getMessageHistory
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: sessionId
description: ''
example: consequatur
required: true
schema:
type: string
'/api/whatsapp/sessions/{sessionId}/contacts':
get:
summary: 'Get contacts for a session'
operationId: getContactsForASession
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: sessionId
description: ''
example: consequatur
required: true
schema:
type: string
'/api/whatsapp/sessions/{sessionId}/groups':
get:
summary: 'Get groups for a session'
operationId: getGroupsForASession
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: sessionId
description: ''
example: consequatur
required: true
schema:
type: string
/api/health:
get:
summary: ''
operationId: getApiHealth
description: ''
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
status: OK
timestamp: '2026-05-27T13:16:52.502370Z'
service: 'WhatsApp Baileys API'
properties:
status:
type: string
example: OK
timestamp:
type: string
example: '2026-05-27T13:16:52.502370Z'
service:
type: string
example: 'WhatsApp Baileys API'
tags:
- Endpoints
security: []
/api/me:
get:
summary: ''
operationId: getApiMe
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
/api/test-contact-groups:
get:
summary: 'Display a listing of contact groups.'
operationId: displayAListingOfContactGroups
description: ''
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
success: true
data:
-
id: 66273848-06ab-4003-a38c-3f3f624a1abe
user_id: d933ba87-379c-4a52-ab32-cb196976a713
name: tes
description: Tes
color: '#2196F3'
is_active: true
created_at: '2026-05-25T06:57:27.000000Z'
updated_at: '2026-05-25T06:57:27.000000Z'
deleted_at: null
contacts_count: 0
-
id: bead738b-25f5-4fd2-adb8-42ae804c48ae
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'PK A'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-05-18T03:55:27.000000Z'
updated_at: '2026-05-18T03:55:27.000000Z'
deleted_at: null
contacts_count: 0
-
id: 796c4673-ce77-4ff9-8d7e-23fd45508680
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'UJI COBA PRESENTASI'
description: null
color: '#FFEB3B'
is_active: true
created_at: '2026-05-18T00:47:12.000000Z'
updated_at: '2026-05-18T00:47:12.000000Z'
deleted_at: null
contacts_count: 5
-
id: f7d73ce3-77f1-4b92-b48f-83fc654738d8
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'ANITA CAROLINA'
description: null
color: '#9E9E9E'
is_active: true
created_at: '2026-05-13T05:44:35.000000Z'
updated_at: '2026-05-13T05:44:35.000000Z'
deleted_at: null
contacts_count: 52
-
id: b244e049-2a13-4cdb-abb5-3b9b29c5673c
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'MARDELLA GALIH PRATAMA'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-05-13T04:42:23.000000Z'
updated_at: '2026-05-15T12:52:08.000000Z'
deleted_at: null
contacts_count: 200
-
id: 74d00063-0269-4ed9-987c-c6eefceddc0b
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'UJI COBA'
description: null
color: '#009688'
is_active: true
created_at: '2026-05-13T04:32:21.000000Z'
updated_at: '2026-05-13T04:32:21.000000Z'
deleted_at: null
contacts_count: 30
-
id: 503ffaa2-c9f4-43d0-8a5c-d8706be477a6
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'CASSIS MERINTHIA ARIAPRAMUDA'
description: null
color: '#607D8B'
is_active: true
created_at: '2026-05-12T15:18:37.000000Z'
updated_at: '2026-05-15T12:52:25.000000Z'
deleted_at: null
contacts_count: 94
-
id: 5ba005b0-890d-4e62-91bd-7a33483bb96b
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'SELA NUR ANDINI'
description: null
color: '#8BC34A'
is_active: true
created_at: '2026-05-12T15:13:45.000000Z'
updated_at: '2026-05-12T15:13:45.000000Z'
deleted_at: null
contacts_count: 50
-
id: 581a8ab3-9f7a-4a5f-851f-7c09d8306cbe
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'RANISA DIANTI'
description: null
color: '#00BCD4'
is_active: true
created_at: '2026-05-12T15:06:42.000000Z'
updated_at: '2026-05-12T15:06:42.000000Z'
deleted_at: null
contacts_count: 121
-
id: 71e0e550-9412-4509-8790-60f0d278a13a
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'AGUNG HELMI ASTRIANA'
description: null
color: '#673AB7'
is_active: true
created_at: '2026-05-12T14:58:51.000000Z'
updated_at: '2026-05-15T12:52:54.000000Z'
deleted_at: null
contacts_count: 40
-
id: 75ac6472-1ad8-4467-bb36-31ba187351dc
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'RIZKY SYAHID JAMALUDIN'
description: null
color: '#FF5722'
is_active: true
created_at: '2026-05-12T14:53:51.000000Z'
updated_at: '2026-05-15T12:53:14.000000Z'
deleted_at: null
contacts_count: 111
-
id: 0e2a9b1f-562c-477b-a39d-e3f11c726469
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'HERRY MUKTI IRWANDA'
description: null
color: '#CDDC39'
is_active: true
created_at: '2026-05-12T14:48:13.000000Z'
updated_at: '2026-05-15T12:53:25.000000Z'
deleted_at: null
contacts_count: 88
-
id: 3732abc1-48ab-4ac0-af8a-d369c5b54a3d
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'SAYUTI MALIK'
description: null
color: '#607D8B'
is_active: true
created_at: '2026-05-12T14:42:03.000000Z'
updated_at: '2026-05-12T14:42:03.000000Z'
deleted_at: null
contacts_count: 72
-
id: 668fb035-99d3-40d4-a4c8-a1573472efb9
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'AHMAD FAUZI'
description: null
color: '#795548'
is_active: true
created_at: '2026-05-12T14:40:42.000000Z'
updated_at: '2026-05-12T14:46:11.000000Z'
deleted_at: null
contacts_count: 1
-
id: 04b3bd3f-37ce-42c4-91a3-9ad68c547f37
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'UUS SUNANDAR'
description: null
color: '#FF5722'
is_active: true
created_at: '2026-05-12T14:29:51.000000Z'
updated_at: '2026-05-12T14:29:51.000000Z'
deleted_at: null
contacts_count: 26
-
id: 6c147f04-5288-4b8c-b165-90adedbc7869
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'DJOKO SETIAWAN'
description: null
color: '#4CAF50'
is_active: true
created_at: '2026-05-12T14:20:26.000000Z'
updated_at: '2026-05-15T12:53:44.000000Z'
deleted_at: null
contacts_count: 150
-
id: 2a3dd333-830e-4df5-b8dc-d9846b7d31d6
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'DJUMADI ARYA'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-05-12T14:12:49.000000Z'
updated_at: '2026-05-12T14:12:49.000000Z'
deleted_at: null
contacts_count: 35
-
id: d3fd3d99-08b8-4551-a02e-df3accb2ebb1
user_id: aa3314cc-3656-4c00-873c-31ea5be02b34
name: 'data avana april 2026'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-05-04T08:26:52.000000Z'
updated_at: '2026-05-04T08:26:52.000000Z'
deleted_at: null
contacts_count: 51
-
id: fb8a578d-fcb8-4a03-b883-b6546efa033b
user_id: aa3314cc-3656-4c00-873c-31ea5be02b34
name: 'DATA AMMAIA APRIL 2026'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-05-04T08:23:10.000000Z'
updated_at: '2026-05-04T08:23:10.000000Z'
deleted_at: null
contacts_count: 128
-
id: 81ac12de-c0d1-4661-bc21-cda76c1941fe
user_id: aa3314cc-3656-4c00-873c-31ea5be02b34
name: 'data komersil'
description: null
color: '#4CAF50'
is_active: true
created_at: '2026-05-04T08:14:07.000000Z'
updated_at: '2026-05-04T08:14:07.000000Z'
deleted_at: null
contacts_count: 0
-
id: 6807ec15-c7ba-445f-99a8-694046a2e25b
user_id: aa3314cc-3656-4c00-873c-31ea5be02b34
name: 'data april'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-05-04T08:10:28.000000Z'
updated_at: '2026-05-04T08:10:28.000000Z'
deleted_at: null
contacts_count: 0
-
id: 1385de4d-3e96-4056-ac94-8afd11aa8446
user_id: c9aceda1-a8d8-454d-a683-d224d875018a
name: 'MEMBERS UMMAHAT.ID'
description: 'Semua member di web ummahat'
color: '#2196F3'
is_active: true
created_at: '2026-05-04T04:48:43.000000Z'
updated_at: '2026-05-04T04:48:43.000000Z'
deleted_at: null
contacts_count: 0
-
id: 1eb81932-e365-48c2-9608-18751d7fa84e
user_id: c9aceda1-a8d8-454d-a683-d224d875018a
name: 'BOD UMMAHAT.ID'
description: 'Khusus Semua Kontak BOD UMMAHAT'
color: '#FF9800'
is_active: true
created_at: '2026-05-04T04:44:00.000000Z'
updated_at: '2026-05-04T04:44:00.000000Z'
deleted_at: null
contacts_count: 0
-
id: cf6935e8-5438-471f-926f-c1365e9f9807
user_id: c2c8da65-2c6f-40a3-a991-b96bfcd2f7ab
name: IPS
description: null
color: '#2196F3'
is_active: true
created_at: '2026-04-27T07:41:10.000000Z'
updated_at: '2026-04-27T07:41:10.000000Z'
deleted_at: null
contacts_count: 1
-
id: a73e43f0-2e08-48fe-8420-582fedc033a9
user_id: cfa37161-d51a-435c-b303-b0f0b29f2922
name: 'grup share'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-04-23T03:16:33.000000Z'
updated_at: '2026-04-23T03:16:33.000000Z'
deleted_at: null
contacts_count: 394
-
id: f29add4e-db10-469d-8a76-0029b5b05602
user_id: ab65cb2f-f1e5-4f87-a4a7-25fd82f46d5e
name: s
description: null
color: '#2196F3'
is_active: true
created_at: '2026-04-22T15:34:24.000000Z'
updated_at: '2026-04-22T15:34:24.000000Z'
deleted_at: null
contacts_count: 0
-
id: 54acc113-a9ae-4e47-9821-532ccdb2a7b3
user_id: 01a47736-ddbb-4a2f-9d57-3db85e14de54
name: 'grup share'
description: 'untuk share pemberitahuan harian'
color: '#4CAF50'
is_active: true
created_at: '2026-04-22T02:26:32.000000Z'
updated_at: '2026-04-22T02:26:32.000000Z'
deleted_at: null
contacts_count: 0
-
id: ba22ae8c-1961-44ff-8762-a59733982543
user_id: aa3314cc-3656-4c00-873c-31ea5be02b34
name: 'Lead Ammaia Januari'
description: 'data 7-64'
color: '#009688'
is_active: true
created_at: '2026-04-20T16:10:46.000000Z'
updated_at: '2026-04-20T16:10:46.000000Z'
deleted_at: null
contacts_count: 47
-
id: b8f4f88c-16eb-43a7-a2c2-13eb8eae6f41
user_id: aa3314cc-3656-4c00-873c-31ea5be02b34
name: 'Lead Avana'
description: 'data dari iklan avana'
color: '#2196F3'
is_active: true
created_at: '2026-04-20T15:44:21.000000Z'
updated_at: '2026-04-20T15:44:21.000000Z'
deleted_at: null
contacts_count: 82
-
id: 08467cd6-f020-48ce-8e84-48c01f78b3d1
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'Klien Bapas Bekasi'
description: null
color: '#FFEB3B'
is_active: true
created_at: '2026-04-20T07:15:17.000000Z'
updated_at: '2026-04-20T07:15:17.000000Z'
deleted_at: null
contacts_count: 0
-
id: 75c5da9d-7535-4d67-be13-14fe17379abc
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: Loyal
description: 'Loyal User Flowkirim'
color: '#795548'
is_active: true
created_at: '2026-04-09T03:49:16.000000Z'
updated_at: '2026-04-09T03:49:16.000000Z'
deleted_at: null
contacts_count: 11
-
id: 8bc62e8f-70e3-471f-a014-ae630a8dc020
user_id: 16098357-32f4-461d-a148-cfd1d212b272
name: Nayozu
description: Test
color: '#4CAF50'
is_active: true
created_at: '2026-03-29T09:08:00.000000Z'
updated_at: '2026-03-29T09:08:00.000000Z'
deleted_at: null
contacts_count: 0
-
id: 5d85f2d5-b73a-49c8-9179-e0ca1f144846
user_id: 2ffe2ffb-c03c-49b6-a39f-2c1771d1a38c
name: Kazarian
description: null
color: '#2196F3'
is_active: true
created_at: '2026-03-25T06:00:40.000000Z'
updated_at: '2026-03-25T06:00:40.000000Z'
deleted_at: null
contacts_count: 51
-
id: a76a62e1-6f67-4fbf-a195-c2e0735e7e30
user_id: 7a2d368b-5b05-4ccf-8863-0b9e14a965a9
name: 'wali santri'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-03-10T01:23:43.000000Z'
updated_at: '2026-03-10T01:23:43.000000Z'
deleted_at: null
contacts_count: 0
-
id: c356cfbd-926f-4470-a75c-e6c07b1b4fb3
user_id: 1e508653-72b8-4868-914d-8b2637e2eab4
name: Pelanggan
description: null
color: '#2196F3'
is_active: true
created_at: '2026-03-02T18:14:06.000000Z'
updated_at: '2026-03-11T00:49:10.000000Z'
deleted_at: null
contacts_count: 1
-
id: febd2f46-85be-4f2c-82b1-f18638f4d7a7
user_id: 2d861fa9-91ae-4d74-bdf7-986a1717f58c
name: 'pengingat wa'
description: 'mengingtakan jadwal lab'
color: '#2196F3'
is_active: true
created_at: '2026-02-25T23:26:49.000000Z'
updated_at: '2026-02-25T23:26:49.000000Z'
deleted_at: null
contacts_count: 0
-
id: 8da6be98-8d1d-45ab-8887-466ab6a89c4d
user_id: fa375ac7-cfd7-46c0-9c0e-5c8b507c586b
name: manankaiyo
description: waapiperai
color: '#4CAF50'
is_active: true
created_at: '2026-02-21T19:32:36.000000Z'
updated_at: '2026-02-21T19:32:36.000000Z'
deleted_at: null
contacts_count: 0
-
id: d2974eab-9234-474b-bd46-8357081c7178
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: TEST
description: null
color: '#FF5722'
is_active: true
created_at: '2026-02-21T01:34:53.000000Z'
updated_at: '2026-02-21T01:34:53.000000Z'
deleted_at: null
contacts_count: 1
-
id: 9d521ac6-31ca-4c42-8a85-2743c46c2f5a
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: IT_SMG
description: 'IT SEMARANG'
color: '#FFEB3B'
is_active: true
created_at: '2026-02-13T07:47:54.000000Z'
updated_at: '2026-02-13T07:47:54.000000Z'
deleted_at: null
contacts_count: 16
-
id: af232f6e-67d0-4463-8370-a342ec23fad7
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: IT_MEDAN
description: null
color: '#2196F3'
is_active: true
created_at: '2026-02-09T06:11:52.000000Z'
updated_at: '2026-02-09T06:11:52.000000Z'
deleted_at: null
contacts_count: 15
-
id: e2e11959-9f47-4cf9-ba10-861d214f8498
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: user_flowkirim
description: null
color: '#2196F3'
is_active: true
created_at: '2026-02-07T03:04:11.000000Z'
updated_at: '2026-02-07T03:04:11.000000Z'
deleted_at: null
contacts_count: 40
-
id: d95be015-625a-4afa-a53c-050783b9fd39
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: targettest
description: test
color: '#2196F3'
is_active: true
created_at: '2026-02-06T01:34:00.000000Z'
updated_at: '2026-02-06T01:34:00.000000Z'
deleted_at: null
contacts_count: 3
-
id: 9bd8a558-a5a7-44e2-b88e-a8a520f1c0d0
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: target1
description: null
color: '#2196F3'
is_active: true
created_at: '2026-02-06T01:19:35.000000Z'
updated_at: '2026-02-06T01:19:35.000000Z'
deleted_at: null
contacts_count: 43
-
id: 0b8855d0-ac5c-4268-9d53-5968440879a1
user_id: 678f8b0b-79b4-4211-b9b0-828125f024b3
name: SWA.BlmTrdftr.Hlmn6.030226
description: null
color: '#2196F3'
is_active: true
created_at: '2026-02-03T14:02:00.000000Z'
updated_at: '2026-02-03T14:02:00.000000Z'
deleted_at: null
contacts_count: 0
-
id: 46cdd329-3896-4953-873c-0c8d71215ea8
user_id: f798c2a9-73d3-4f6a-840e-910fd52b82c1
name: 'XII PH 1'
description: 'NO ORANG TUA SISWA'
color: '#2196F3'
is_active: true
created_at: '2026-01-31T17:05:47.000000Z'
updated_at: '2026-01-31T17:05:47.000000Z'
deleted_at: null
contacts_count: 28
-
id: 42fa1bf7-dedf-4a69-a710-51399654ae73
user_id: 2e036697-6794-4792-b7e1-90207ea19edc
name: CONTOH
description: CONTOH
color: '#2196F3'
is_active: true
created_at: '2026-01-29T04:32:05.000000Z'
updated_at: '2026-01-29T04:32:05.000000Z'
deleted_at: null
contacts_count: 2
properties:
success:
type: boolean
example: true
data:
type: array
example:
-
id: 66273848-06ab-4003-a38c-3f3f624a1abe
user_id: d933ba87-379c-4a52-ab32-cb196976a713
name: tes
description: Tes
color: '#2196F3'
is_active: true
created_at: '2026-05-25T06:57:27.000000Z'
updated_at: '2026-05-25T06:57:27.000000Z'
deleted_at: null
contacts_count: 0
-
id: bead738b-25f5-4fd2-adb8-42ae804c48ae
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'PK A'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-05-18T03:55:27.000000Z'
updated_at: '2026-05-18T03:55:27.000000Z'
deleted_at: null
contacts_count: 0
-
id: 796c4673-ce77-4ff9-8d7e-23fd45508680
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'UJI COBA PRESENTASI'
description: null
color: '#FFEB3B'
is_active: true
created_at: '2026-05-18T00:47:12.000000Z'
updated_at: '2026-05-18T00:47:12.000000Z'
deleted_at: null
contacts_count: 5
-
id: f7d73ce3-77f1-4b92-b48f-83fc654738d8
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'ANITA CAROLINA'
description: null
color: '#9E9E9E'
is_active: true
created_at: '2026-05-13T05:44:35.000000Z'
updated_at: '2026-05-13T05:44:35.000000Z'
deleted_at: null
contacts_count: 52
-
id: b244e049-2a13-4cdb-abb5-3b9b29c5673c
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'MARDELLA GALIH PRATAMA'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-05-13T04:42:23.000000Z'
updated_at: '2026-05-15T12:52:08.000000Z'
deleted_at: null
contacts_count: 200
-
id: 74d00063-0269-4ed9-987c-c6eefceddc0b
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'UJI COBA'
description: null
color: '#009688'
is_active: true
created_at: '2026-05-13T04:32:21.000000Z'
updated_at: '2026-05-13T04:32:21.000000Z'
deleted_at: null
contacts_count: 30
-
id: 503ffaa2-c9f4-43d0-8a5c-d8706be477a6
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'CASSIS MERINTHIA ARIAPRAMUDA'
description: null
color: '#607D8B'
is_active: true
created_at: '2026-05-12T15:18:37.000000Z'
updated_at: '2026-05-15T12:52:25.000000Z'
deleted_at: null
contacts_count: 94
-
id: 5ba005b0-890d-4e62-91bd-7a33483bb96b
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'SELA NUR ANDINI'
description: null
color: '#8BC34A'
is_active: true
created_at: '2026-05-12T15:13:45.000000Z'
updated_at: '2026-05-12T15:13:45.000000Z'
deleted_at: null
contacts_count: 50
-
id: 581a8ab3-9f7a-4a5f-851f-7c09d8306cbe
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'RANISA DIANTI'
description: null
color: '#00BCD4'
is_active: true
created_at: '2026-05-12T15:06:42.000000Z'
updated_at: '2026-05-12T15:06:42.000000Z'
deleted_at: null
contacts_count: 121
-
id: 71e0e550-9412-4509-8790-60f0d278a13a
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'AGUNG HELMI ASTRIANA'
description: null
color: '#673AB7'
is_active: true
created_at: '2026-05-12T14:58:51.000000Z'
updated_at: '2026-05-15T12:52:54.000000Z'
deleted_at: null
contacts_count: 40
-
id: 75ac6472-1ad8-4467-bb36-31ba187351dc
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'RIZKY SYAHID JAMALUDIN'
description: null
color: '#FF5722'
is_active: true
created_at: '2026-05-12T14:53:51.000000Z'
updated_at: '2026-05-15T12:53:14.000000Z'
deleted_at: null
contacts_count: 111
-
id: 0e2a9b1f-562c-477b-a39d-e3f11c726469
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'HERRY MUKTI IRWANDA'
description: null
color: '#CDDC39'
is_active: true
created_at: '2026-05-12T14:48:13.000000Z'
updated_at: '2026-05-15T12:53:25.000000Z'
deleted_at: null
contacts_count: 88
-
id: 3732abc1-48ab-4ac0-af8a-d369c5b54a3d
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'SAYUTI MALIK'
description: null
color: '#607D8B'
is_active: true
created_at: '2026-05-12T14:42:03.000000Z'
updated_at: '2026-05-12T14:42:03.000000Z'
deleted_at: null
contacts_count: 72
-
id: 668fb035-99d3-40d4-a4c8-a1573472efb9
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'AHMAD FAUZI'
description: null
color: '#795548'
is_active: true
created_at: '2026-05-12T14:40:42.000000Z'
updated_at: '2026-05-12T14:46:11.000000Z'
deleted_at: null
contacts_count: 1
-
id: 04b3bd3f-37ce-42c4-91a3-9ad68c547f37
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'UUS SUNANDAR'
description: null
color: '#FF5722'
is_active: true
created_at: '2026-05-12T14:29:51.000000Z'
updated_at: '2026-05-12T14:29:51.000000Z'
deleted_at: null
contacts_count: 26
-
id: 6c147f04-5288-4b8c-b165-90adedbc7869
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'DJOKO SETIAWAN'
description: null
color: '#4CAF50'
is_active: true
created_at: '2026-05-12T14:20:26.000000Z'
updated_at: '2026-05-15T12:53:44.000000Z'
deleted_at: null
contacts_count: 150
-
id: 2a3dd333-830e-4df5-b8dc-d9846b7d31d6
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'DJUMADI ARYA'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-05-12T14:12:49.000000Z'
updated_at: '2026-05-12T14:12:49.000000Z'
deleted_at: null
contacts_count: 35
-
id: d3fd3d99-08b8-4551-a02e-df3accb2ebb1
user_id: aa3314cc-3656-4c00-873c-31ea5be02b34
name: 'data avana april 2026'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-05-04T08:26:52.000000Z'
updated_at: '2026-05-04T08:26:52.000000Z'
deleted_at: null
contacts_count: 51
-
id: fb8a578d-fcb8-4a03-b883-b6546efa033b
user_id: aa3314cc-3656-4c00-873c-31ea5be02b34
name: 'DATA AMMAIA APRIL 2026'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-05-04T08:23:10.000000Z'
updated_at: '2026-05-04T08:23:10.000000Z'
deleted_at: null
contacts_count: 128
-
id: 81ac12de-c0d1-4661-bc21-cda76c1941fe
user_id: aa3314cc-3656-4c00-873c-31ea5be02b34
name: 'data komersil'
description: null
color: '#4CAF50'
is_active: true
created_at: '2026-05-04T08:14:07.000000Z'
updated_at: '2026-05-04T08:14:07.000000Z'
deleted_at: null
contacts_count: 0
-
id: 6807ec15-c7ba-445f-99a8-694046a2e25b
user_id: aa3314cc-3656-4c00-873c-31ea5be02b34
name: 'data april'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-05-04T08:10:28.000000Z'
updated_at: '2026-05-04T08:10:28.000000Z'
deleted_at: null
contacts_count: 0
-
id: 1385de4d-3e96-4056-ac94-8afd11aa8446
user_id: c9aceda1-a8d8-454d-a683-d224d875018a
name: 'MEMBERS UMMAHAT.ID'
description: 'Semua member di web ummahat'
color: '#2196F3'
is_active: true
created_at: '2026-05-04T04:48:43.000000Z'
updated_at: '2026-05-04T04:48:43.000000Z'
deleted_at: null
contacts_count: 0
-
id: 1eb81932-e365-48c2-9608-18751d7fa84e
user_id: c9aceda1-a8d8-454d-a683-d224d875018a
name: 'BOD UMMAHAT.ID'
description: 'Khusus Semua Kontak BOD UMMAHAT'
color: '#FF9800'
is_active: true
created_at: '2026-05-04T04:44:00.000000Z'
updated_at: '2026-05-04T04:44:00.000000Z'
deleted_at: null
contacts_count: 0
-
id: cf6935e8-5438-471f-926f-c1365e9f9807
user_id: c2c8da65-2c6f-40a3-a991-b96bfcd2f7ab
name: IPS
description: null
color: '#2196F3'
is_active: true
created_at: '2026-04-27T07:41:10.000000Z'
updated_at: '2026-04-27T07:41:10.000000Z'
deleted_at: null
contacts_count: 1
-
id: a73e43f0-2e08-48fe-8420-582fedc033a9
user_id: cfa37161-d51a-435c-b303-b0f0b29f2922
name: 'grup share'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-04-23T03:16:33.000000Z'
updated_at: '2026-04-23T03:16:33.000000Z'
deleted_at: null
contacts_count: 394
-
id: f29add4e-db10-469d-8a76-0029b5b05602
user_id: ab65cb2f-f1e5-4f87-a4a7-25fd82f46d5e
name: s
description: null
color: '#2196F3'
is_active: true
created_at: '2026-04-22T15:34:24.000000Z'
updated_at: '2026-04-22T15:34:24.000000Z'
deleted_at: null
contacts_count: 0
-
id: 54acc113-a9ae-4e47-9821-532ccdb2a7b3
user_id: 01a47736-ddbb-4a2f-9d57-3db85e14de54
name: 'grup share'
description: 'untuk share pemberitahuan harian'
color: '#4CAF50'
is_active: true
created_at: '2026-04-22T02:26:32.000000Z'
updated_at: '2026-04-22T02:26:32.000000Z'
deleted_at: null
contacts_count: 0
-
id: ba22ae8c-1961-44ff-8762-a59733982543
user_id: aa3314cc-3656-4c00-873c-31ea5be02b34
name: 'Lead Ammaia Januari'
description: 'data 7-64'
color: '#009688'
is_active: true
created_at: '2026-04-20T16:10:46.000000Z'
updated_at: '2026-04-20T16:10:46.000000Z'
deleted_at: null
contacts_count: 47
-
id: b8f4f88c-16eb-43a7-a2c2-13eb8eae6f41
user_id: aa3314cc-3656-4c00-873c-31ea5be02b34
name: 'Lead Avana'
description: 'data dari iklan avana'
color: '#2196F3'
is_active: true
created_at: '2026-04-20T15:44:21.000000Z'
updated_at: '2026-04-20T15:44:21.000000Z'
deleted_at: null
contacts_count: 82
-
id: 08467cd6-f020-48ce-8e84-48c01f78b3d1
user_id: c484dd06-6fc6-43eb-8fdf-0b0d99f216b4
name: 'Klien Bapas Bekasi'
description: null
color: '#FFEB3B'
is_active: true
created_at: '2026-04-20T07:15:17.000000Z'
updated_at: '2026-04-20T07:15:17.000000Z'
deleted_at: null
contacts_count: 0
-
id: 75c5da9d-7535-4d67-be13-14fe17379abc
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: Loyal
description: 'Loyal User Flowkirim'
color: '#795548'
is_active: true
created_at: '2026-04-09T03:49:16.000000Z'
updated_at: '2026-04-09T03:49:16.000000Z'
deleted_at: null
contacts_count: 11
-
id: 8bc62e8f-70e3-471f-a014-ae630a8dc020
user_id: 16098357-32f4-461d-a148-cfd1d212b272
name: Nayozu
description: Test
color: '#4CAF50'
is_active: true
created_at: '2026-03-29T09:08:00.000000Z'
updated_at: '2026-03-29T09:08:00.000000Z'
deleted_at: null
contacts_count: 0
-
id: 5d85f2d5-b73a-49c8-9179-e0ca1f144846
user_id: 2ffe2ffb-c03c-49b6-a39f-2c1771d1a38c
name: Kazarian
description: null
color: '#2196F3'
is_active: true
created_at: '2026-03-25T06:00:40.000000Z'
updated_at: '2026-03-25T06:00:40.000000Z'
deleted_at: null
contacts_count: 51
-
id: a76a62e1-6f67-4fbf-a195-c2e0735e7e30
user_id: 7a2d368b-5b05-4ccf-8863-0b9e14a965a9
name: 'wali santri'
description: null
color: '#2196F3'
is_active: true
created_at: '2026-03-10T01:23:43.000000Z'
updated_at: '2026-03-10T01:23:43.000000Z'
deleted_at: null
contacts_count: 0
-
id: c356cfbd-926f-4470-a75c-e6c07b1b4fb3
user_id: 1e508653-72b8-4868-914d-8b2637e2eab4
name: Pelanggan
description: null
color: '#2196F3'
is_active: true
created_at: '2026-03-02T18:14:06.000000Z'
updated_at: '2026-03-11T00:49:10.000000Z'
deleted_at: null
contacts_count: 1
-
id: febd2f46-85be-4f2c-82b1-f18638f4d7a7
user_id: 2d861fa9-91ae-4d74-bdf7-986a1717f58c
name: 'pengingat wa'
description: 'mengingtakan jadwal lab'
color: '#2196F3'
is_active: true
created_at: '2026-02-25T23:26:49.000000Z'
updated_at: '2026-02-25T23:26:49.000000Z'
deleted_at: null
contacts_count: 0
-
id: 8da6be98-8d1d-45ab-8887-466ab6a89c4d
user_id: fa375ac7-cfd7-46c0-9c0e-5c8b507c586b
name: manankaiyo
description: waapiperai
color: '#4CAF50'
is_active: true
created_at: '2026-02-21T19:32:36.000000Z'
updated_at: '2026-02-21T19:32:36.000000Z'
deleted_at: null
contacts_count: 0
-
id: d2974eab-9234-474b-bd46-8357081c7178
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: TEST
description: null
color: '#FF5722'
is_active: true
created_at: '2026-02-21T01:34:53.000000Z'
updated_at: '2026-02-21T01:34:53.000000Z'
deleted_at: null
contacts_count: 1
-
id: 9d521ac6-31ca-4c42-8a85-2743c46c2f5a
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: IT_SMG
description: 'IT SEMARANG'
color: '#FFEB3B'
is_active: true
created_at: '2026-02-13T07:47:54.000000Z'
updated_at: '2026-02-13T07:47:54.000000Z'
deleted_at: null
contacts_count: 16
-
id: af232f6e-67d0-4463-8370-a342ec23fad7
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: IT_MEDAN
description: null
color: '#2196F3'
is_active: true
created_at: '2026-02-09T06:11:52.000000Z'
updated_at: '2026-02-09T06:11:52.000000Z'
deleted_at: null
contacts_count: 15
-
id: e2e11959-9f47-4cf9-ba10-861d214f8498
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: user_flowkirim
description: null
color: '#2196F3'
is_active: true
created_at: '2026-02-07T03:04:11.000000Z'
updated_at: '2026-02-07T03:04:11.000000Z'
deleted_at: null
contacts_count: 40
-
id: d95be015-625a-4afa-a53c-050783b9fd39
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: targettest
description: test
color: '#2196F3'
is_active: true
created_at: '2026-02-06T01:34:00.000000Z'
updated_at: '2026-02-06T01:34:00.000000Z'
deleted_at: null
contacts_count: 3
-
id: 9bd8a558-a5a7-44e2-b88e-a8a520f1c0d0
user_id: fe223dfc-7573-43c0-8f7d-849d41956117
name: target1
description: null
color: '#2196F3'
is_active: true
created_at: '2026-02-06T01:19:35.000000Z'
updated_at: '2026-02-06T01:19:35.000000Z'
deleted_at: null
contacts_count: 43
-
id: 0b8855d0-ac5c-4268-9d53-5968440879a1
user_id: 678f8b0b-79b4-4211-b9b0-828125f024b3
name: SWA.BlmTrdftr.Hlmn6.030226
description: null
color: '#2196F3'
is_active: true
created_at: '2026-02-03T14:02:00.000000Z'
updated_at: '2026-02-03T14:02:00.000000Z'
deleted_at: null
contacts_count: 0
-
id: 46cdd329-3896-4953-873c-0c8d71215ea8
user_id: f798c2a9-73d3-4f6a-840e-910fd52b82c1
name: 'XII PH 1'
description: 'NO ORANG TUA SISWA'
color: '#2196F3'
is_active: true
created_at: '2026-01-31T17:05:47.000000Z'
updated_at: '2026-01-31T17:05:47.000000Z'
deleted_at: null
contacts_count: 28
-
id: 42fa1bf7-dedf-4a69-a710-51399654ae73
user_id: 2e036697-6794-4792-b7e1-90207ea19edc
name: CONTOH
description: CONTOH
color: '#2196F3'
is_active: true
created_at: '2026-01-29T04:32:05.000000Z'
updated_at: '2026-01-29T04:32:05.000000Z'
deleted_at: null
contacts_count: 2
items:
type: object
properties:
id:
type: string
example: 66273848-06ab-4003-a38c-3f3f624a1abe
user_id:
type: string
example: d933ba87-379c-4a52-ab32-cb196976a713
name:
type: string
example: tes
description:
type: string
example: Tes
color:
type: string
example: '#2196F3'
is_active:
type: boolean
example: true
created_at:
type: string
example: '2026-05-25T06:57:27.000000Z'
updated_at:
type: string
example: '2026-05-25T06:57:27.000000Z'
deleted_at:
type: string
example: null
contacts_count:
type: integer
example: 0
tags:
- Endpoints
security: []
/api/test-node-connection:
get:
summary: ''
operationId: getApiTestNodeConnection
description: ''
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
success: true
data:
success: true
status: OK
timestamp: '2026-05-27T13:16:52.860Z'
uptime: 1995
uptimeFormatted: '33m 14s'
node_version: v20.20.0
platform: linux
memory:
used: '42 MB'
total: '51 MB'
rss: '123 MB'
webhook_url: 'http://localhost:8000/whatsapp/webhook'
bulk_jobs: 0
scheduled_messages: 0
message_store_size: 1
circuitBreakersActive: []
sessions:
total: 2
connected: 1
connecting: 0
failed: 0
details:
-
sessionId: flowkirim-terbaik-2e036697-6794-4792-b7e1-90207ea19edc_1779886895
status: connection_unstable
lastActive: null
lastActiveSeconds: null
reconnectionAttempts: 0
socketConnected: true
socketUser: null
circuitBreaker: null
-
sessionId: broadcast-fe223dfc-7573-43c0-8f7d-849d41956117_1779886967
status: connected
phoneNumber: '6285194125056'
lastActive: '2026-05-27T13:16:50.798Z'
lastActiveSeconds: 2
reconnectionAttempts: 0
socketConnected: true
socketUser: '6285194125056'
circuitBreaker: null
properties:
success:
type: boolean
example: true
data:
type: object
properties:
success:
type: boolean
example: true
status:
type: string
example: OK
timestamp:
type: string
example: '2026-05-27T13:16:52.860Z'
uptime:
type: integer
example: 1995
uptimeFormatted:
type: string
example: '33m 14s'
node_version:
type: string
example: v20.20.0
platform:
type: string
example: linux
memory:
type: object
properties:
used:
type: string
example: '42 MB'
total:
type: string
example: '51 MB'
rss:
type: string
example: '123 MB'
webhook_url:
type: string
example: 'http://localhost:8000/whatsapp/webhook'
bulk_jobs:
type: integer
example: 0
scheduled_messages:
type: integer
example: 0
message_store_size:
type: integer
example: 1
circuitBreakersActive:
type: array
example: []
sessions:
type: object
properties:
total:
type: integer
example: 2
connected:
type: integer
example: 1
connecting:
type: integer
example: 0
failed:
type: integer
example: 0
details:
type: array
example:
-
sessionId: flowkirim-terbaik-2e036697-6794-4792-b7e1-90207ea19edc_1779886895
status: connection_unstable
lastActive: null
lastActiveSeconds: null
reconnectionAttempts: 0
socketConnected: true
socketUser: null
circuitBreaker: null
-
sessionId: broadcast-fe223dfc-7573-43c0-8f7d-849d41956117_1779886967
status: connected
phoneNumber: '6285194125056'
lastActive: '2026-05-27T13:16:50.798Z'
lastActiveSeconds: 2
reconnectionAttempts: 0
socketConnected: true
socketUser: '6285194125056'
circuitBreaker: null
items:
type: object
properties:
sessionId:
type: string
example: flowkirim-terbaik-2e036697-6794-4792-b7e1-90207ea19edc_1779886895
status:
type: string
example: connection_unstable
lastActive:
type: string
example: null
lastActiveSeconds:
type: string
example: null
reconnectionAttempts:
type: integer
example: 0
socketConnected:
type: boolean
example: true
socketUser:
type: string
example: null
circuitBreaker:
type: string
example: null
tags:
- Endpoints
security: []
/api/api-tokens:
get:
summary: ''
operationId: getApiApiTokens
description: ''
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: array
items:
type: object
example:
-
id: e775815e-99cc-4130-bf40-ff53a9e049e4
name: 'RedAim Shop Token'
token: 45feba31fcd7b99b15fb59337fa72a91834a4b24a96584f81a9022a85bdb57dd
created_at: '2026-05-25T22:43:21.000000Z'
user_id: 66529e01-d113-3473-8d6f-9e11e09332ea
expired_at: '2026-06-25T22:43:21.000000Z'
-
id: 161a4c64-6525-42f1-9539-f181e137e085
name: BOT_STOCK
token: db59928d119a49dfb520734af5d89837cca0242687d7ed458b38aedaa5133cb3
created_at: '2026-05-22T00:11:40.000000Z'
user_id: 66529e01-d113-3473-8d6f-9e11e09332ea
expired_at: '2026-06-22T00:11:40.000000Z'
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
user_id:
type: string
description: 'Must be a valid UUID.'
example: 66529e01-d113-3473-8d6f-9e11e09332ea
nullable: false
required:
- user_id
security: []
delete:
summary: ''
operationId: deleteApiApiTokens
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
user_id:
type: string
description: 'Must be a valid UUID.'
example: 66529e01-d113-3473-8d6f-9e11e09332ea
nullable: false
id:
type: string
description: ''
example: consequatur
nullable: false
required:
- user_id
- id
security: []
/api/api-tokens/generate:
post:
summary: ''
operationId: postApiApiTokensGenerate
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
user_id:
type: string
description: 'Must be a valid UUID.'
example: 462ee709-6d9f-345a-95e6-76f833111fb8
nullable: false
required:
- name
- user_id
security: []
/api/leads/scrape:
post:
summary: "Start scraping (returns task_id immediately for polling)\nPOST /api/leads/scrape"
operationId: startScrapingreturnsTaskIdImmediatelyForPollingPOSTapileadsscrape
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
query:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
total:
type: integer
description: 'Must be at least 1. Must not be greater than 1000.'
example: 1
nullable: true
user_id:
type: string
description: 'Must be a valid UUID.'
example: 87582a71-8e82-3d56-919d-d5863651492b
nullable: true
required:
- query
security: []
/api/leads/scrape/async:
post:
summary: "Start scraping (async - returns task_id)\nPOST /api/leads/scrape/async"
operationId: startScrapingasyncReturnsTaskIdPOSTapileadsscrapeasync
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
query:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
total:
type: integer
description: 'Must be at least 1. Must not be greater than 1000.'
example: 1
nullable: true
required:
- query
security: []
'/api/leads/scrape/task/{taskId}':
get:
summary: "Get task status/results\nGET /api/leads/scrape/task/{taskId}"
operationId: getTaskStatusresultsGETapileadsscrapetasktaskId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: taskId
description: ''
example: consequatur
required: true
schema:
type: string
/api/leads/tasks:
get:
summary: "Get scraper tasks list\nGET /api/leads/tasks"
operationId: getScraperTasksListGETapileadstasks
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
/api/leads/scraper-health:
get:
summary: "Get scraper service health\nGET /api/leads/scraper-health"
operationId: getScraperServiceHealthGETapileadsscraperHealth
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
/api/leads:
get:
summary: "Get all leads with filtering\nGET /api/leads"
operationId: getAllLeadsWithFilteringGETapileads
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
post:
summary: "Save a new lead\nPOST /api/leads"
operationId: saveANewLeadPOSTapileads
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
source:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
business_name:
type: string
description: 'Must not be greater than 255 characters.'
example: amniihfqcoynlazghdtqt
nullable: false
address:
type: string
description: ''
example: consequatur
nullable: true
website:
type: string
description: 'Must not be greater than 255 characters.'
example: mqeopfuudtdsufvyvddqa
nullable: true
phone:
type: string
description: 'Must not be greater than 50 characters.'
example: mniihfqcoynlazghdtqtq
nullable: true
latitude:
type: number
description: ''
example: 11613.31890586
nullable: true
longitude:
type: number
description: ''
example: 11613.31890586
nullable: true
status:
type: string
description: ''
example: read
nullable: false
enum:
- new
- pending
- sent
- read
- failed
user_id:
type: string
description: 'Must be a valid UUID.'
example: 57357f37-0ea3-38e5-8a6c-9de9d06e75fd
nullable: false
required:
- source
- business_name
- status
- user_id
security: []
/api/leads/bulk-import:
post:
summary: "Bulk import leads from Excel data\nPOST /api/leads/bulk-import"
operationId: bulkImportLeadsFromExcelDataPOSTapileadsbulkImport
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
leads:
type: array
description: ''
example: null
items:
type: object
properties:
business_name:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
address:
type: string
description: ''
example: consequatur
nullable: true
phone:
type: string
description: 'Must not be greater than 50 characters.'
example: mqeopfuudtdsufvyvddqa
nullable: true
website:
type: string
description: 'Must not be greater than 255 characters.'
example: mniihfqcoynlazghdtqtq
nullable: true
latitude:
type: number
description: ''
example: 11613.31890586
nullable: true
longitude:
type: number
description: ''
example: 11613.31890586
nullable: true
status:
type: string
description: ''
example: pending
nullable: true
enum:
- new
- pending
- sent
- read
- failed
source:
type: string
description: 'Must not be greater than 255 characters.'
example: opfuudtdsufvyvddqamni
nullable: true
user_id:
type: string
description: 'Must be a valid UUID.'
example: d63469cd-6701-3555-a16b-fc9764100c9a
nullable: true
required:
- business_name
security: []
/api/leads/statistics:
get:
summary: "Get leads statistics\nGET /api/leads/statistics"
operationId: getLeadsStatisticsGETapileadsstatistics
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
'/api/leads/{id}':
get:
summary: "Get a single lead\nGET /api/leads/{id}"
operationId: getASingleLeadGETapileadsid
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
patch:
summary: "Update lead status\nPATCH /api/leads/{id}"
operationId: updateLeadStatusPATCHapileadsid
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: ''
example: sent
nullable: false
enum:
- new
- pending
- sent
- read
- failed
required:
- status
security: []
delete:
summary: "Delete a lead\nDELETE /api/leads/{id}"
operationId: deleteALeadDELETEapileadsid
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: id
description: 'The ID of the lead.'
example: consequatur
required: true
schema:
type: string
/api/leads/bulk-status:
post:
summary: "Bulk update lead statuses\nPOST /api/leads/bulk-status"
operationId: bulkUpdateLeadStatusesPOSTapileadsbulkStatus
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
ids:
type: array
description: ''
example:
- consequatur
items:
type: string
status:
type: string
description: ''
example: sent
nullable: false
enum:
- new
- pending
- sent
- read
- failed
required:
- status
security: []
/api/leads/sync-status:
post:
summary: "Sync lead status from whatsapp_messages table\nPOST /api/leads/sync-status"
operationId: syncLeadStatusFromWhatsappMessagesTablePOSTapileadssyncStatus
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
ids:
type: array
description: ''
example:
- consequatur
items:
type: string
security: []
/api/templates:
get:
summary: "Get all templates\nGET /api/templates"
operationId: getAllTemplatesGETapitemplates
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
post:
summary: "Create a new template\nPOST /api/templates"
operationId: createANewTemplatePOSTapitemplates
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
content:
type: string
description: ''
example: consequatur
nullable: false
message_type:
type: string
description: ''
example: video
nullable: false
enum:
- text
- image
- document
- video
media_url:
type: string
description: ''
example: 'http://kunze.biz/iste-laborum-eius-est-dolor.html'
nullable: true
caption:
type: string
description: ''
example: consequatur
nullable: true
is_active:
type: boolean
description: ''
example: true
nullable: false
variables:
type: object
description: ''
example: null
nullable: true
properties: { }
user_id:
type: string
description: 'The id of an existing record in the users table.'
example: null
nullable: true
required:
- name
- content
- message_type
security: []
'/api/templates/{id}':
get:
summary: "Get a single template\nGET /api/templates/{id}"
operationId: getASingleTemplateGETapitemplatesid
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
put:
summary: "Update a template\nPUT/PATCH /api/templates/{id}"
operationId: updateATemplatePUTPATCHapitemplatesid
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
content:
type: string
description: ''
example: consequatur
nullable: false
message_type:
type: string
description: ''
example: image
nullable: false
enum:
- text
- image
- document
- video
media_url:
type: string
description: ''
example: 'http://kunze.biz/iste-laborum-eius-est-dolor.html'
nullable: true
caption:
type: string
description: ''
example: consequatur
nullable: true
is_active:
type: boolean
description: ''
example: false
nullable: false
variables:
type: object
description: ''
example: null
nullable: true
properties: { }
user_id:
type: string
description: 'The id of an existing record in the users table.'
example: null
nullable: true
security: []
patch:
summary: "Update a template\nPUT/PATCH /api/templates/{id}"
operationId: updateATemplatePUTPATCHapitemplatesid
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
content:
type: string
description: ''
example: consequatur
nullable: false
message_type:
type: string
description: ''
example: text
nullable: false
enum:
- text
- image
- document
- video
media_url:
type: string
description: ''
example: 'http://kunze.biz/iste-laborum-eius-est-dolor.html'
nullable: true
caption:
type: string
description: ''
example: consequatur
nullable: true
is_active:
type: boolean
description: ''
example: true
nullable: false
variables:
type: object
description: ''
example: null
nullable: true
properties: { }
user_id:
type: string
description: 'The id of an existing record in the users table.'
example: null
nullable: true
security: []
delete:
summary: "Delete a template\nDELETE /api/templates/{id}"
operationId: deleteATemplateDELETEapitemplatesid
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: id
description: 'The ID of the template.'
example: consequatur
required: true
schema:
type: string
'/api/templates/{id}/duplicate':
post:
summary: "Duplicate a template\nPOST /api/templates/{id}/duplicate"
operationId: duplicateATemplatePOSTapitemplatesidduplicate
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: id
description: 'The ID of the template.'
example: consequatur
required: true
schema:
type: string
/api/contacts:
get:
summary: 'Display a listing of contacts.'
operationId: displayAListingOfContacts
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
post:
summary: 'Store a newly created contact.'
operationId: storeANewlyCreatedContact
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
user_id:
type: string
description: 'The id of an existing record in the users table.'
example: null
nullable: true
name:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
phone:
type: string
description: 'Must not be greater than 255 characters.'
example: amniihfqcoynlazghdtqt
nullable: false
email:
type: string
description: 'Must be a valid email address. Must not be greater than 255 characters.'
example: andreanne00@example.org
nullable: true
company:
type: string
description: 'Must not be greater than 255 characters.'
example: wbpilpmufinllwloauydl
nullable: true
position:
type: string
description: 'Must not be greater than 255 characters.'
example: smsjuryvojcybzvrbyick
nullable: true
address:
type: string
description: ''
example: consequatur
nullable: true
city:
type: string
description: 'Must not be greater than 255 characters.'
example: mqeopfuudtdsufvyvddqa
nullable: true
country:
type: string
description: 'Must not be greater than 255 characters.'
example: mniihfqcoynlazghdtqtq
nullable: true
custom_fields:
type: object
description: ''
example: null
nullable: true
properties: { }
notes:
type: string
description: ''
example: consequatur
nullable: true
is_active:
type: boolean
description: ''
example: false
nullable: false
groups:
type: array
description: 'The id of an existing record in the contact_groups table.'
example: null
items:
type: string
required:
- name
- phone
security: []
/api/contacts/statistics:
get:
summary: 'Get contacts statistics.'
operationId: getContactsStatistics
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
/api/contacts/bulk-delete:
post:
summary: 'Bulk delete contacts.'
operationId: bulkDeleteContacts
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
contact_ids:
type: array
description: 'The id of an existing record in the contacts table.'
example: null
items:
type: string
security: []
/api/contacts/import:
post:
summary: 'Import contacts from Excel file.'
operationId: importContactsFromExcelFile
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: 'Must be a file. Must not be greater than 10240 kilobytes.'
nullable: false
group_id:
type: string
description: 'Max 10MB. The id of an existing record in the contact_groups table.'
example: null
nullable: true
skip_duplicates:
type: boolean
description: ''
example: false
nullable: true
set_active:
type: boolean
description: ''
example: false
nullable: true
required:
- file
security: []
/api/contacts/export:
get:
summary: 'Export contacts to Excel file.'
operationId: exportContactsToExcelFile
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
/api/contacts/template:
get:
summary: 'Download import template.'
operationId: downloadImportTemplate
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
'/api/contacts/{id}':
get:
summary: 'Display the specified contact.'
operationId: displayTheSpecifiedContact
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
put:
summary: 'Update the specified contact.'
operationId: updateTheSpecifiedContact
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
phone:
type: string
description: 'Must not be greater than 255 characters.'
example: amniihfqcoynlazghdtqt
nullable: false
email:
type: string
description: 'Must be a valid email address. Must not be greater than 255 characters.'
example: andreanne00@example.org
nullable: true
company:
type: string
description: 'Must not be greater than 255 characters.'
example: wbpilpmufinllwloauydl
nullable: true
position:
type: string
description: 'Must not be greater than 255 characters.'
example: smsjuryvojcybzvrbyick
nullable: true
address:
type: string
description: ''
example: consequatur
nullable: true
city:
type: string
description: 'Must not be greater than 255 characters.'
example: mqeopfuudtdsufvyvddqa
nullable: true
country:
type: string
description: 'Must not be greater than 255 characters.'
example: mniihfqcoynlazghdtqtq
nullable: true
custom_fields:
type: object
description: ''
example: null
nullable: true
properties: { }
notes:
type: string
description: ''
example: consequatur
nullable: true
is_active:
type: boolean
description: ''
example: false
nullable: false
groups:
type: array
description: 'The id of an existing record in the contact_groups table.'
example: null
items:
type: string
required:
- name
- phone
security: []
patch:
summary: 'Update the specified contact.'
operationId: updateTheSpecifiedContact
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
phone:
type: string
description: 'Must not be greater than 255 characters.'
example: amniihfqcoynlazghdtqt
nullable: false
email:
type: string
description: 'Must be a valid email address. Must not be greater than 255 characters.'
example: andreanne00@example.org
nullable: true
company:
type: string
description: 'Must not be greater than 255 characters.'
example: wbpilpmufinllwloauydl
nullable: true
position:
type: string
description: 'Must not be greater than 255 characters.'
example: smsjuryvojcybzvrbyick
nullable: true
address:
type: string
description: ''
example: consequatur
nullable: true
city:
type: string
description: 'Must not be greater than 255 characters.'
example: mqeopfuudtdsufvyvddqa
nullable: true
country:
type: string
description: 'Must not be greater than 255 characters.'
example: mniihfqcoynlazghdtqtq
nullable: true
custom_fields:
type: object
description: ''
example: null
nullable: true
properties: { }
notes:
type: string
description: ''
example: consequatur
nullable: true
is_active:
type: boolean
description: ''
example: true
nullable: false
groups:
type: array
description: 'The id of an existing record in the contact_groups table.'
example: null
items:
type: string
required:
- name
- phone
security: []
delete:
summary: 'Remove the specified contact.'
operationId: removeTheSpecifiedContact
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: id
description: 'The ID of the contact.'
example: 494790e4-9809-4825-96ca-6dad9b5f6c21
required: true
schema:
type: string
/api/contact-groups:
get:
summary: 'Display a listing of contact groups.'
operationId: displayAListingOfContactGroups
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
post:
summary: 'Store a newly created contact group.'
operationId: storeANewlyCreatedContactGroup
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
user_id:
type: string
description: 'The id of an existing record in the users table.'
example: null
nullable: true
name:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
description:
type: string
description: ''
example: 'Dolores dolorum amet iste laborum eius est dolor.'
nullable: true
color:
type: string
description: 'Must not be greater than 255 characters.'
example: dtdsufvyvddqamniihfqc
nullable: true
is_active:
type: boolean
description: ''
example: false
nullable: false
required:
- name
security: []
'/api/contact-groups/{id}':
get:
summary: 'Display the specified contact group.'
operationId: displayTheSpecifiedContactGroup
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
put:
summary: 'Update the specified contact group.'
operationId: updateTheSpecifiedContactGroup
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
description:
type: string
description: ''
example: 'Dolores dolorum amet iste laborum eius est dolor.'
nullable: true
color:
type: string
description: 'Must not be greater than 255 characters.'
example: dtdsufvyvddqamniihfqc
nullable: true
is_active:
type: boolean
description: ''
example: false
nullable: false
required:
- name
security: []
patch:
summary: 'Update the specified contact group.'
operationId: updateTheSpecifiedContactGroup
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
description:
type: string
description: ''
example: 'Dolores dolorum amet iste laborum eius est dolor.'
nullable: true
color:
type: string
description: 'Must not be greater than 255 characters.'
example: dtdsufvyvddqamniihfqc
nullable: true
is_active:
type: boolean
description: ''
example: false
nullable: false
required:
- name
security: []
delete:
summary: 'Remove the specified contact group.'
operationId: removeTheSpecifiedContactGroup
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: id
description: 'The ID of the contact group.'
example: 2a3dd333-830e-4df5-b8dc-d9846b7d31d6
required: true
schema:
type: string
'/api/contact-groups/{id}/contacts':
post:
summary: 'Add contacts to a group.'
operationId: addContactsToAGroup
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
contact_ids:
type: array
description: 'The id of an existing record in the contacts table.'
example: null
items:
type: string
security: []
delete:
summary: 'Remove contacts from a group.'
operationId: removeContactsFromAGroup
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
contact_ids:
type: array
description: 'The id of an existing record in the contacts table.'
example: null
items:
type: string
security: []
get:
summary: 'Get all contacts from group (for personalized messaging)'
operationId: getAllContactsFromGroupforPersonalizedMessaging
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: id
description: 'The ID of the contact group.'
example: 2a3dd333-830e-4df5-b8dc-d9846b7d31d6
required: true
schema:
type: string
'/api/contact-groups/{id}/phone-numbers':
get:
summary: 'Get phone numbers from a group for sending messages.'
operationId: getPhoneNumbersFromAGroupForSendingMessages
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: id
description: 'The ID of the contact group.'
example: 2a3dd333-830e-4df5-b8dc-d9846b7d31d6
required: true
schema:
type: string
'/api/contact-groups/{id}/personalized-preview':
post:
summary: 'Get contacts from group with personalized message previews'
operationId: getContactsFromGroupWithPersonalizedMessagePreviews
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
template:
type: string
description: ''
example: consequatur
nullable: false
required:
- template
security: []
parameters:
-
in: path
name: id
description: 'The ID of the contact group.'
example: 2a3dd333-830e-4df5-b8dc-d9846b7d31d6
required: true
schema:
type: string
/api/announcements:
get:
summary: 'Display a listing of active announcements (public).'
operationId: displayAListingOfActiveAnnouncementspublic
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
/api/announcements/admin:
get:
summary: 'Display all announcements (admin only).'
operationId: displayAllAnnouncementsadminOnly
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
post:
summary: 'Store a newly created announcement (admin only).'
operationId: storeANewlyCreatedAnnouncementadminOnly
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
message:
type: string
description: ''
example: consequatur
nullable: false
type:
type: string
description: ''
example: maintenance
nullable: false
enum:
- info
- warning
- maintenance
- promo
- urgent
is_active:
type: boolean
description: ''
example: false
nullable: false
starts_at:
type: string
description: 'Must be a valid date.'
example: '2026-05-27T13:16:53'
nullable: true
expires_at:
type: string
description: 'Must be a valid date. Must be a date after starts_at.'
example: '2107-06-26'
nullable: true
required:
- title
- message
- type
security: []
'/api/announcements/admin/{id}':
get:
summary: 'Display the specified announcement.'
operationId: displayTheSpecifiedAnnouncement
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
put:
summary: 'Update the specified announcement (admin only).'
operationId: updateTheSpecifiedAnnouncementadminOnly
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
message:
type: string
description: ''
example: consequatur
nullable: false
type:
type: string
description: ''
example: promo
nullable: false
enum:
- info
- warning
- maintenance
- promo
- urgent
is_active:
type: boolean
description: ''
example: true
nullable: false
starts_at:
type: string
description: 'Must be a valid date.'
example: '2026-05-27T13:16:53'
nullable: true
expires_at:
type: string
description: 'Must be a valid date. Must be a date after starts_at.'
example: '2107-06-26'
nullable: true
required:
- title
- message
- type
security: []
patch:
summary: 'Update the specified announcement (admin only).'
operationId: updateTheSpecifiedAnnouncementadminOnly
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: 'Must not be greater than 255 characters.'
example: vmqeopfuudtdsufvyvddq
nullable: false
message:
type: string
description: ''
example: consequatur
nullable: false
type:
type: string
description: ''
example: maintenance
nullable: false
enum:
- info
- warning
- maintenance
- promo
- urgent
is_active:
type: boolean
description: ''
example: false
nullable: false
starts_at:
type: string
description: 'Must be a valid date.'
example: '2026-05-27T13:16:53'
nullable: true
expires_at:
type: string
description: 'Must be a valid date. Must be a date after starts_at.'
example: '2107-06-26'
nullable: true
required:
- title
- message
- type
security: []
delete:
summary: 'Remove the specified announcement (admin only).'
operationId: removeTheSpecifiedAnnouncementadminOnly
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: id
description: 'The ID of the admin.'
example: consequatur
required: true
schema:
type: string
'/api/announcements/admin/{id}/toggle':
post:
summary: 'Toggle announcement active status (admin only).'
operationId: toggleAnnouncementActiveStatusadminOnly
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: id
description: 'The ID of the admin.'
example: consequatur
required: true
schema:
type: string
'/api/announcements/{id}':
get:
summary: 'Display the specified announcement.'
operationId: displayTheSpecifiedAnnouncement
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Unauthorized - No Bearer Token'
properties:
message:
type: string
example: 'Unauthorized - No Bearer Token'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: id
description: 'The ID of the announcement.'
example: consequatur
required: true
schema:
type: string
/api/whatsapp/messages/text:
post:
summary: 'Send a text message'
operationId: sendATextMessage
description: "Send a WhatsApp text message via a single device OR via a Send Pool\n(rotator). Exactly one of `session_id` or `pool_id` must be provided.\n\nWhen `pool_id` is set, the server picks a healthy member device from\nthe pool using round-robin and routes the message through it. Pool\nrouting is a Supporter-only feature; non-Supporters receive HTTP 402."
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
success: true
data:
id: 123
message_id: 3EB0XXXXXX
status: sent
quoted: null
mentions: []
routed_via:
pool_id: 7c39e0a4-...
device_id: device-a-fe223dfc-...
message: 'Message sent successfully'
properties:
success:
type: boolean
example: true
data:
type: object
properties:
id:
type: integer
example: 123
message_id:
type: string
example: 3EB0XXXXXX
status:
type: string
example: sent
quoted:
type: string
example: null
mentions:
type: array
example: []
routed_via:
type: object
properties:
pool_id:
type: string
example: 7c39e0a4-...
device_id:
type: string
example: device-a-fe223dfc-...
message:
type: string
example: 'Message sent successfully'
402:
description: 'pool routing requires Supporter'
content:
application/json:
schema:
type: object
example:
success: false
message: 'Send pools are a Supporter feature.'
upgrade_url: 'https://trakteer.id/flowkirim'
properties:
success:
type: boolean
example: false
message:
type: string
example: 'Send pools are a Supporter feature.'
upgrade_url:
type: string
example: 'https://trakteer.id/flowkirim'
503:
description: 'all pool members offline'
content:
application/json:
schema:
type: object
example:
success: false
message: 'No member device is currently connected. All pool members are offline or circuit-broken.'
properties:
success:
type: boolean
example: false
message:
type: string
example: 'No member device is currently connected. All pool members are offline or circuit-broken.'
tags:
- Messages
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
session_id:
type: string
description: 'Single-device send. Required unless `pool_id` is provided.'
example: my-device-fe223dfc-7573-43c0-8f7d-849d41956117_1769250847
nullable: true
pool_id:
type: string
description: 'Send Pool UUID for rotator routing. Required unless `session_id` is provided. Supporter-only.'
example: 7c39e0a4-4b8b-4f3a-9c8a-1f2d3e4f5a6b
nullable: true
to:
type: string
description: 'Recipient phone number with country code, no `+`.'
example: '6281234567890'
nullable: false
message:
type: string
description: 'The text body.'
example: 'Hello from Flowkirim!'
nullable: false
quoted_message_id:
type: string
description: 'Optional ID of a previous message to quote/reply to.'
example: 3EB0XXXXXXXX
nullable: true
mentions:
type: array
description: 'Optional list of JIDs to @-mention.'
example:
- 6281234567890@s.whatsapp.net
items:
type: string
required:
- to
- message
security: []
/api/whatsapp/messages/media:
post:
summary: 'Send a media message'
operationId: sendAMediaMessage
description: "Send a media (image / audio / video / document) message via a single\ndevice OR via a Send Pool. Exactly one of `session_id` or `pool_id`\nis required."
parameters: []
responses: { }
tags:
- Messages
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
session_id:
type: string
description: 'Single-device send. Required unless `pool_id` is provided.'
example: consequatur
nullable: true
pool_id:
type: string
description: 'Send Pool UUID for rotator routing. Required unless `session_id` is provided. Supporter-only.'
example: consequatur
nullable: true
to:
type: string
description: 'Recipient phone number.'
example: consequatur
nullable: false
media_url:
type: string
description: 'URL of the media file to download and send.'
example: 'http://kunze.biz/iste-laborum-eius-est-dolor.html'
nullable: false
type:
type: string
description: 'One of: image, audio, video, document.'
example: consequatur
nullable: false
caption:
type: string
description: 'Optional caption shown beneath the media.'
example: consequatur
nullable: true
required:
- to
- media_url
- type
security: []
/api/whatsapp/messages/group/text:
post:
summary: 'Send a text message to a group'
operationId: sendATextMessageToAGroup
description: "Send a text message to a WhatsApp group via a single device OR a Send Pool (rotator).\nExactly one of `session_id` or `pool_id` is required."
parameters: []
responses: { }
tags:
- Messages
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
session_id:
type: string
description: 'Single-device send. Required unless `pool_id` is provided.'
example: consequatur
nullable: true
pool_id:
type: string
description: 'Send Pool UUID for rotator routing. Required unless `session_id` is provided. Supporter-only.'
example: consequatur
nullable: true
group_id:
type: string
description: 'Group JID.'
example: 6281234567890-1234567890@g.us
nullable: false
message:
type: string
description: 'The text body.'
example: consequatur
nullable: false
quoted_message_id:
type: string
description: 'Optional ID of a previous message to quote/reply to.'
example: consequatur
nullable: true
mentions:
type: array
description: 'Optional list of JIDs to @-mention.'
example:
- consequatur
items:
type: string
required:
- group_id
- message
security: []
/api/whatsapp/messages/group/media:
post:
summary: 'Send a media message to a group'
operationId: sendAMediaMessageToAGroup
description: 'Send a media message to a WhatsApp group via a single device OR a Send Pool.'
parameters: []
responses: { }
tags:
- Messages
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
session_id:
type: string
description: 'Single-device send. Required unless `pool_id` is provided.'
example: consequatur
nullable: true
pool_id:
type: string
description: 'Send Pool UUID. Required unless `session_id` is provided. Supporter-only.'
example: consequatur
nullable: true
group_id:
type: string
description: 'Group JID.'
example: consequatur
nullable: false
media_url:
type: string
description: 'URL of the media file.'
example: 'http://kunze.biz/iste-laborum-eius-est-dolor.html'
nullable: false
type:
type: string
description: 'One of: image, audio, video, document.'
example: consequatur
nullable: false
caption:
type: string
description: 'Optional caption.'
example: consequatur
nullable: true
required:
- group_id
- media_url
- type
security: []
/api/whatsapp/messages/bulk/text:
post:
summary: 'Send bulk text messages'
operationId: sendBulkTextMessages
description: "Queue a bulk broadcast of the same text to many recipients. Exactly\none of `session_id` or `pool_id` must be provided.\n\nWhen `pool_id` is used (Supporter-only), the server picks a healthy\npool member device PER RECIPIENT using round-robin -- so a 500-\ncontact broadcast spreads evenly across however many devices are\nin the pool. This is the natural use case for rotators."
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
success: true
data:
job_id: bulk_pool-7c39...
total: 500
mentions: []
message: 'Bulk message job created'
properties:
success:
type: boolean
example: true
data:
type: object
properties:
job_id:
type: string
example: bulk_pool-7c39...
total:
type: integer
example: 500
mentions:
type: array
example: []
message:
type: string
example: 'Bulk message job created'
402:
description: 'pool routing requires Supporter'
content:
application/json:
schema:
type: object
example:
success: false
message: 'Send pools are a Supporter feature.'
upgrade_url: 'https://trakteer.id/flowkirim'
properties:
success:
type: boolean
example: false
message:
type: string
example: 'Send pools are a Supporter feature.'
upgrade_url:
type: string
example: 'https://trakteer.id/flowkirim'
tags:
- Messages
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
session_id:
type: string
description: 'Single-device send. Required unless `pool_id` is provided.'
example: my-device-fe223dfc-..._1769250847
nullable: true
pool_id:
type: string
description: 'Send Pool UUID. Required unless `session_id` is provided. Supporter-only.'
example: 7c39e0a4-4b8b-4f3a-9c8a-1f2d3e4f5a6b
nullable: true
contacts:
type: array
description: 'Array of recipient phone numbers (country code, no `+`). Max 1000.'
example:
- '6281234567890'
- '6285678901234'
items:
type: string
message:
type: string
description: 'Text body sent to every recipient.'
example: 'Halo dari Flowkirim!'
nullable: false
delay:
type: integer
description: 'Optional milliseconds between sends (default 1000, min 100, max 60000).'
example: 1500
nullable: true
mentions:
type: array
description: 'Optional list of mention JIDs.'
example:
- 6281234567890@s.whatsapp.net
items:
type: string
required:
- contacts
- message
security: []
/api/whatsapp/messages/schedule/text:
post:
summary: 'Schedule a text message'
operationId: scheduleATextMessage
description: "Schedule a text message for a future time, sent via a single device\nOR via a Send Pool (rotator). Pool routing for scheduled messages\nre-picks a healthy member device AT FIRE TIME and re-validates the\nowner's Supporter status -- if they lapsed before the scheduled\ntime, the scheduled message fails."
parameters: []
responses: { }
tags:
- Messages
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
session_id:
type: string
description: 'Single-device scheduled send. Required unless `pool_id` is provided.'
example: consequatur
nullable: true
pool_id:
type: string
description: 'Send Pool UUID for rotator routing. Required unless `session_id` is provided. Supporter-only at schedule time AND at fire time.'
example: consequatur
nullable: true
to:
type: string
description: 'Recipient phone number.'
example: consequatur
nullable: false
message:
type: string
description: 'The text body.'
example: consequatur
nullable: false
scheduled_at:
type: string
description: 'ISO 8601 timestamp in the future.'
example: '2026-06-15T14:30:00Z'
nullable: false
required:
- to
- message
- scheduled_at
security: []