Skip to content
vocapable.Docs

Text a customer (sent, scheduled, or saved for review per your role)

POST
/v1/workspace/inbox/threads/{contact_id}/texts
curl --request POST \
--url https://api.vocapable.com/v1/workspace/inbox/threads/example/texts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "body": "example", "purpose": "informational", "send_at": "2026-04-15T12:00:00Z", "phone_number_id": "example", "media_ids": [ "example" ], "template_id": "example", "source_call_id": "example" }'
contact_id
required
Contact Id
string
Idempotency-Key
Any of:
string
Media typeapplication/json
WorkspaceTextCompose

A new text to a customer (from their record, the thread or “new message”).

Reviewed roles: saved for review (nothing is sent). Trusted roles (the owner’s setting): sent now, or at send_at. Either way the live contact policy, quiet hours and registration are checked again at the moment it leaves.

object
body
required
Body
string
<= 1600 characters
purpose
Any of:
string
Allowed values: informational marketing
send_at
Any of:
string format: date-time
phone_number_id
Any of:
string
media_ids
Media Ids
Array<string>
<= 10 items
template_id
Any of:
string
source_call_id
Any of:
string

Successful Response

Media typeapplication/json
WorkspaceReply

A reply to a customer: drafted, reviewed as an exact version, then sent once.

object
id
required
Id
string
contact_id
required
Any of:
string
case_id
required
Any of:
string
channel
required
Channel
string
Allowed values: sms email
body
required
Body
string
state
required
State
string
Allowed values: draft pending_review changes_requested declined approved sending provider_accepted delivered failed uncertain scheduled canceled
author
required
Any of:
WorkspacePersonRef

A teammate named on a record: the id the server holds and the name to show.

object
user_id
required
User Id
string
name
required
Name
string
approval
required
Any of:
WorkspaceReplyApproval
object
id
required
Id
string
status
required
Status
string
Allowed values: awaiting_review changes_requested approved declined expired stale executing confirmed failed
reviewer
required
Any of:
WorkspacePersonRef

A teammate named on a record: the id the server holds and the name to show.

object
user_id
required
User Id
string
name
required
Name
string
decided_by
required
Any of:
WorkspacePersonRef

A teammate named on a record: the id the server holds and the name to show.

object
user_id
required
User Id
string
name
required
Name
string
reason
required
Any of:
string
revision
required
Revision
integer
to_address
required
Any of:
string
from_address
required
Any of:
string
provider_status
required
Any of:
string
error
required
Any of:
string
sent_at
required
Any of:
string format: date-time
delivered_at
required
Any of:
string format: date-time
can_edit
required
Can Edit
boolean
can_review
required
Can Review
boolean
can_send
required
Can Send
boolean
revision
required
Revision
integer
created_at
required
Created At
string format: date-time
updated_at
required
Updated At
string format: date-time
origin
required
Origin
string
Allowed values: reply compose recap
send_basis
required
Send Basis
string
Allowed values: review trusted_role
purpose
required
Any of:
string
Allowed values: informational marketing
scheduled_for
required
Any of:
string format: date-time
media
required
Media
Array<object>
WorkspaceMessageMedia
object
id
required
Id
string
content_type
required
Content Type
string
size_bytes
required
Any of:
integer
status
required
Status
string
Allowed values: pending stored failed
can_cancel
required
Can Cancel
boolean
Example
{
"channel": "sms",
"state": "draft",
"approval": {
"status": "awaiting_review"
},
"origin": "reply",
"send_basis": "review",
"purpose": "informational",
"media": [
{
"status": "pending"
}
]
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}