Skip to main content
GET
/
whatsapp
/
resources
List WhatsApp resources
curl --request GET \
  --url https://api.otpiq.com/api/whatsapp/resources \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.otpiq.com/api/whatsapp/resources"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.otpiq.com/api/whatsapp/resources', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.otpiq.com/api/whatsapp/resources",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.otpiq.com/api/whatsapp/resources"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.otpiq.com/api/whatsapp/resources")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.otpiq.com/api/whatsapp/resources")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "success": true,
  "data": {
    "project": {
      "id": "65a0a0a0a0a0a0a0a0a0a0a0",
      "slug": "my-project",
      "name": "My Project"
    },
    "summary": {
      "businessCount": 1,
      "accountCount": 2,
      "phoneNumberCount": 3,
      "templateCount": 12
    },
    "businesses": [
      {
        "id": "65b1b1b1b1b1b1b1b1b1b1b1",
        "businessId": "123456789012345",
        "name": "Business 123456789012345",
        "whatsappAccounts": [
          {
            "id": "65c2c2c2c2c2c2c2c2c2c2c2",
            "whatsappBusinessId": "987654321098765",
            "name": "My WABA",
            "accountReviewStatus": "APPROVED",
            "businessVerificationStatus": "verified",
            "banState": "",
            "banDate": "",
            "violationType": "",
            "phoneNumbers": [
              {
                "id": "65d3d3d3d3d3d3d3d3d3d3d3",
                "phoneNumberId": "112233445566778",
                "displayPhoneNumber": "+964 770 123 4567",
                "phoneNumber": "+9647701234567",
                "verifiedName": "My Business",
                "qualityRating": "GREEN",
                "messagingLimit": "TIER_1K",
                "status": "CONNECTED",
                "codeVerificationStatus": "VERIFIED",
                "isOfficialBusinessAccount": false,
                "nameStatus": "APPROVED",
                "createdAt": "2026-01-15T10:00:00.000Z"
              }
            ],
            "templates": [
              {
                "id": "65e4e4e4e4e4e4e4e4e4e4e4",
                "name": "otp_verification",
                "category": "AUTHENTICATION",
                "parameter_format": "POSITIONAL",
                "language": "en",
                "messageSendTtlSeconds": 600,
                "reason": "",
                "status": "APPROVED",
                "isWhatsappFlow": false,
                "createdAt": "2026-01-20T08:30:00.000Z"
              }
            ],
            "createdAt": "2026-01-10T12:00:00.000Z"
          }
        ],
        "createdAt": "2026-01-10T12:00:00.000Z"
      }
    ]
  }
}
{
"error": "<string>"
}
{
"message": "<string>"
}
{
"message": "<string>"
}
{
"success": true,
"message": "<string>"
}
For large integrations, start with includeTemplateComponents=false and only request full template components when you need to render or inspect template structure.

Authorizations

Authorization
string
header
required

Project API key (sk_live… or sk_dev…). Send it as Authorization: Bearer <api_key>.

Query Parameters

includeTemplateComponents
boolean
default:false

When true, each template includes its full components array (header, body, buttons, etc.). When false, only template metadata is returned. Accepted values: true, false, 1, 0 (case-insensitive).

Example:

true

Response

WhatsApp resources retrieved successfully.

success
boolean
required
Example:

true

data
object
required