List Forms
curl --request GET \
--url https://app.thinnest.ai/api/v1/forms \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/forms', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/forms"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"id": "form_3a9b6d2e-4c1f-4b87-9e5a-7d0c2f8b1e64",
"name": "Book a cleaning",
"agent": "ag_2c7e9a14-5b3d-4f8e-a1c6-7d9b0e3f5a21",
"category": "APPOINTMENT_BOOKING",
"form": {
"title": "Book your cleaning",
"submitLabel": "Request slot",
"fields": [
{
"name": "patient_name",
"label": "Patient name",
"kind": "text",
"required": true
},
{
"name": "preferred_day",
"label": "Preferred day",
"kind": "date",
"required": true
},
{
"name": "time_of_day",
"label": "Time of day",
"kind": "choice",
"required": false,
"options": [
"Morning",
"Evening"
]
}
]
},
"published": true,
"publishedAt": "2026-10-01T06:12:33.871Z",
"createdAt": "2026-09-30T12:48:09.415Z",
"updatedAt": "2026-10-01T06:12:33.871Z"
}
],
"nextCursor": null
}{
"error": "`agent` is not an agent id."
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"error": "Over 240 requests a minute. Slow down and retry."
}Forms
List Forms
Your workspace’s WhatsApp forms, newest first, published or not.
GET
/
forms
List Forms
curl --request GET \
--url https://app.thinnest.ai/api/v1/forms \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/forms', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/forms"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"id": "form_3a9b6d2e-4c1f-4b87-9e5a-7d0c2f8b1e64",
"name": "Book a cleaning",
"agent": "ag_2c7e9a14-5b3d-4f8e-a1c6-7d9b0e3f5a21",
"category": "APPOINTMENT_BOOKING",
"form": {
"title": "Book your cleaning",
"submitLabel": "Request slot",
"fields": [
{
"name": "patient_name",
"label": "Patient name",
"kind": "text",
"required": true
},
{
"name": "preferred_day",
"label": "Preferred day",
"kind": "date",
"required": true
},
{
"name": "time_of_day",
"label": "Time of day",
"kind": "choice",
"required": false,
"options": [
"Morning",
"Evening"
]
}
]
},
"published": true,
"publishedAt": "2026-10-01T06:12:33.871Z",
"createdAt": "2026-09-30T12:48:09.415Z",
"updatedAt": "2026-10-01T06:12:33.871Z"
}
],
"nextCursor": null
}{
"error": "`agent` is not an agent id."
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"error": "Over 240 requests a minute. Slow down and retry."
}Authorizations
Your API key (ta_live_…) from Settings → API keys, sent as Authorization: Bearer <key>. Keep it on a server: it can message every customer you have. A key is full, build or read-only; a request its level does not allow is refused with 403.
Headers
Developers only: the customer workspace this request acts in — its org_… id from POST /customers. Leave it out to act in your own workspace.
Example:
"org_3fKq9TzQ1mN8vB2xR7cLpA"
Query Parameters
Only this agent's forms (ag_…).
How many items to return, 1 to 100.
Required range:
1 <= x <= 100The nextCursor from the previous page. Leave it out for the first page.