curl --request POST \
--url https://api-v2.watchcollect.com/v2/outbound/drafts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"session_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7070"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({session_id: '018f06e2-4f8d-7c01-8a0d-cc6fd78f7070'})
};
fetch('https://api-v2.watchcollect.com/v2/outbound/drafts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-v2.watchcollect.com/v2/outbound/drafts"
payload = { "session_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7070" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"actor_user_id": "<string>",
"session_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_name": "<string>",
"session_label": "<string>",
"group_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"text": "<string>",
"media": [
{
"url": "https://watchatic-media.example/outbound/org_123/watch.jpg",
"mimetype": "image/jpeg",
"filename": "watch.jpg",
"sha256": "9a0364b9e99bb480dd25e1f0284c8555",
"size_bytes": 238991,
"storage_key": "outbound/org_123/20260511T025700.000-watch.jpg"
}
],
"created_at_ms": 123,
"updated_at_ms": 123,
"schedule": {
"first_run_at_ms": 1777809600000,
"interval_ms": 3600000,
"max_occurrences": 3
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}Save the caller's outbound send draft
Creates a new caller-owned draft for the selected send-capable session. This endpoint never sends, schedules, or enqueues WhatsApp messages.
curl --request POST \
--url https://api-v2.watchcollect.com/v2/outbound/drafts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"session_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7070"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({session_id: '018f06e2-4f8d-7c01-8a0d-cc6fd78f7070'})
};
fetch('https://api-v2.watchcollect.com/v2/outbound/drafts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-v2.watchcollect.com/v2/outbound/drafts"
payload = { "session_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7070" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"actor_user_id": "<string>",
"session_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_name": "<string>",
"session_label": "<string>",
"group_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"text": "<string>",
"media": [
{
"url": "https://watchatic-media.example/outbound/org_123/watch.jpg",
"mimetype": "image/jpeg",
"filename": "watch.jpg",
"sha256": "9a0364b9e99bb480dd25e1f0284c8555",
"size_bytes": 238991,
"storage_key": "outbound/org_123/20260511T025700.000-watch.jpg"
}
],
"created_at_ms": 123,
"updated_at_ms": 123,
"schedule": {
"first_run_at_ms": 1777809600000,
"interval_ms": 3600000,
"max_occurrences": 3
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Send-capable session id this draft belongs to. A caller can create multiple drafts for the same session.
Internal group ids from /v2/groups that are present in the selected session. May be empty while composing.
100Draft text body, or image caption when media is present.
4096Already-uploaded image media URLs to keep with the draft. Multipart local files are not accepted by draft saves.
10Show child attributes
Show child attributes
Show child attributes
Show child attributes
{
"first_run_at_ms": 1777809600000,
"interval_ms": 3600000,
"max_occurrences": 3
}
Response
Draft saved.
Clerk user id that owns this draft. Only this actor can read or delete it.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
{
"first_run_at_ms": 1777809600000,
"interval_ms": 3600000,
"max_occurrences": 3
}