API Overview & Authentication

Welcome to the QuickFlow Developer API documentation. You can use our REST API to manage contacts, contact groups, and send SMS messages seamlessly.

Base URL

All API requests should be made to the following base URL:

https://api.quickflow.co.ke/api/method

Authentication & Example Usage

We use token-based authentication. You must include your API Key and API Secret in the headers of all your requests. Pass them in the Authorization header using the format token api_key:api_secret.

Endpoints are constructed by appending the method path to the <baseurl>. For example, to send an SMS, the endpoint is https://api.quickflow.co.ke/api/method/quickflow.sms.send.

Example cURL Request:

curl -X POST https://api.quickflow.co.ke/api/method/quickflow.sms.send \
  -H "Authorization: token your_api_key:your_api_secret" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient": "254700000000",
    "sender_id": "YOUR_SENDER_ID",
    "message": "Hello from QuickFlow!"
  }'

SMS API

Endpoints for sending SMS messages, managing campaigns, and checking credit balance.

POST/quickflow.sms.send

Send SMS

Send a single or bulk SMS to specific phone numbers.

Parameters (JSON Body):
  • recipient (string, required) - Phone number(s) separated by comma.
  • sender_id (string, required) - Your assigned Sender ID.
  • message (string, required) - The text message to send.
  • type (string, optional) - Type of message (default: "plain").
  • schedule_time (string, optional) - Time to schedule message.
  • dlt_template_id (string, optional) - DLT Template ID if applicable.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.sms.send
POST/quickflow.sms.campaign

Send Campaign

Send SMS to all contacts within a specific contact group.

Parameters (JSON Body):
  • contact_list_id (string, required) - ID of the contact group.
  • sender_id (string, required) - Your assigned Sender ID.
  • message (string, required) - The text message to send.
  • type (string, optional) - Type of message (default: "plain").
  • schedule_time (string, optional) - Time to schedule message.
  • dlt_template_id (string, optional) - DLT Template ID if applicable.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.sms.campaign
GET/quickflow.sms.get

Get SMS Status

Retrieve the status of a specific SMS message.

Query Parameters:
  • uid (string, required) - The unique ID of the SMS.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.sms.get
GET/quickflow.sms.list_all

List All SMS

Retrieve a paginated history of all sent SMS messages for a given Sender ID. Requires authorization.

Query Parameters:
  • sender_id (string, required) — Your assigned Sender ID to filter logs.
  • page (integer, optional) — Page number. Defaults to 1.
  • limit (integer, optional) — Records per page. Defaults to 25.
Response Fields (per record):
  • id — Internal document name.
  • uid — Unique message identifier.
  • to — Recipient phone number.
  • from — Sender ID used.
  • message — The SMS content.
  • status — Delivery status (e.g. success, failed).
  • cost — SMS units consumed.
Pagination Fields:
  • current_page, last_page, per_page, total
  • first_page_url, last_page_url, next_page_url, prev_page_url
  • from, to — Record range shown on the current page.
  • links — Array of pagination link objects (url, label, active).

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.sms.list_all

Example cURL Request:

curl -G "https://api.quickflow.co.ke/api/method/quickflow.sms.list_all" \
  -H "Authorization: token your_api_key:your_api_secret" \
  --data-urlencode "sender_id=YOUR_SENDER_ID" \
  -d "page=1" \
  -d "limit=25"

Example Response:

{
  "message": {
    "status": "success",
    "data": {
      "current_page": 1,
      "per_page": 25,
      "total": 120,
      "last_page": 5,
      "from": 1,
      "to": 25,
      "first_page_url": ".../quickflow.sms.list_all?sender_id=MYSENDER&page=1",
      "next_page_url": ".../quickflow.sms.list_all?sender_id=MYSENDER&page=2",
      "prev_page_url": null,
      "data": [
        {
          "id": "TSL-00001",
          "uid": "abc123uid",
          "to": "254712345678",
          "from": "MYSENDER",
          "message": "Hello from QuickFlow!",
          "status": "success",
          "cost": "1"
        }
      ]
    }
  }
}
GET/quickflow.sms.balance

Check Balance

Check your current credit balance for a specific Sender ID.

Query Parameters:
  • sender_id (string, required) - Your assigned Sender ID.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.sms.balance
POST/quickflow.services.rest.initiate_payment

Top Up SMS Units

Initiate an M-Pesa STK push to top up SMS units for the authenticated account. Requires authorization.

Parameters (JSON Body):
  • amount (number, required) — Amount in KES to top up.
  • mobile (string, required) — M-Pesa phone number to receive the STK push (e.g. 254712345678).

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.services.rest.initiate_payment

Example cURL Request:

curl -X POST "https://api.quickflow.co.ke/api/method/quickflow.services.rest.initiate_payment" \
  -H "Authorization: token your_api_key:your_api_secret" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 500,
    "mobile": "254712345678"
  }'

Contacts API

Endpoints for managing individual contacts within contact groups.

POST/quickflow.contact.store_contact

Create Contact

Add a new contact to an existing contact group.

Parameters (JSON Body):
  • sender_id (string, required) - Your assigned Sender ID.
  • group_id (string, required) - ID of the contact group.
  • phone (string, required) - The contact's phone number.
  • first_name (string, optional) - Contact's first name.
  • last_name (string, optional) - Contact's last name.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.contact.store_contact
GET/quickflow.contact.search_contact

Get Contact

Retrieve details of a specific contact.

Query Parameters:
  • sender_id (string, required) - Your assigned Sender ID.
  • group_id (string, required) - ID of the contact group.
  • uid (string, required) - Unique ID of the contact.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.contact.search_contact
POST/quickflow.contact.update_contact

Update Contact

Update an existing contact's information.

Parameters (JSON Body):
  • sender_id (string, required) - Your assigned Sender ID.
  • group_id (string, required) - ID of the contact group.
  • uid (string, required) - Unique ID of the contact.
  • phone (string, optional) - New phone number.
  • first_name (string, optional) - New first name.
  • last_name (string, optional) - New last name.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.contact.update_contact
POST/quickflow.contact.delete_contact

Delete Contact

Delete a contact from a group.

Parameters (JSON Body):
  • sender_id (string, required) - Your assigned Sender ID.
  • group_id (string, required) - ID of the contact group.
  • uid (string, required) - Unique ID of the contact to delete.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.contact.delete_contact
GET/quickflow.contact.all_contacts

List All Contacts

Retrieve all contacts within a specific group.

Query Parameters:
  • sender_id (string, required) - Your assigned Sender ID.
  • group_id (string, required) - ID of the contact group.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.contact.all_contacts

Contact Groups API

Endpoints for creating and managing contact groups.

POST/quickflow.contact.store_group

Create Group

Create a new contact group for organizing your contacts.

Parameters (JSON Body):
  • sender_id (string, required) - Your assigned Sender ID.
  • name (string, required) - Name of the new contact group.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.contact.store_group
GET/quickflow.contact.show_group

Get Group Details

Retrieve details of a specific contact group.

Query Parameters:
  • sender_id (string, required) - Your assigned Sender ID.
  • group_id (string, required) - ID of the contact group to retrieve.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.contact.show_group
POST/quickflow.contact.update_group

Update Group

Update the name of an existing contact group.

Parameters (JSON Body):
  • sender_id (string, required) - Your assigned Sender ID.
  • group_id (string, required) - ID of the contact group.
  • name (string, required) - New name for the group.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.contact.update_group
POST/quickflow.contact.delete_group

Delete Group

Delete a contact group. (Ensure it contains no active dependencies if required by logic).

Parameters (JSON Body):
  • sender_id (string, required) - Your assigned Sender ID.
  • group_id (string, required) - ID of the contact group to delete.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.contact.delete_group
GET/quickflow.contact.all_groups

List All Groups

Retrieve all contact groups assigned to your Sender ID.

Query Parameters:
  • sender_id (string, required) - Your assigned Sender ID.

Endpoint URL:

https://api.quickflow.co.ke/api/method/quickflow.contact.all_groups

@2025.All rights reserved by Quickflow