Create conversation
curl --request POST \
--url https://woes.dev/api/v1/conversations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"subject": "Need help with auth",
"customer": {
"id": "cus_123",
"name": "Ada Lovelace",
"email": "ada@example.com",
"company": "Example API Co"
}
}
'const url = 'https://woes.dev/api/v1/conversations';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
subject: 'Need help with auth',
customer: {
id: 'cus_123',
name: 'Ada Lovelace',
email: 'ada@example.com',
company: 'Example API Co'
}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://woes.dev/api/v1/conversations"
payload = {
"subject": "Need help with auth",
"customer": {
"id": "cus_123",
"name": "Ada Lovelace",
"email": "ada@example.com",
"company": "Example API Co"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
subject: 'Need help with auth',
customer: {
id: 'cus_123',
name: 'Ada Lovelace',
email: 'ada@example.com',
company: 'Example API Co'
}
})
};
fetch('https://woes.dev/api/v1/conversations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"conversation": {
"object": "<string>",
"id": "<string>",
"priority": "<string>",
"subject": "<string>",
"preview": "<string>",
"customer": {
"id": "<string>",
"name": "<string>",
"email": "jsmith@example.com",
"company": "<string>",
"identitySource": "<string>"
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"lastMessageAt": "2023-11-07T05:31:56Z",
"closedAt": "2023-11-07T05:31:56Z"
}
}{
"code": "invalid_request",
"error": "Request body is invalid."
}{
"code": "unauthorized",
"error": "A valid workspace API key is required."
}{
"code": "insufficient_scope",
"error": "This API key is missing the required scope."
}{
"code": "conflict",
"error": "A record with this identifier already exists."
}{
"code": "rate_limited",
"error": "Too many API requests. Slow down and try again shortly."
}{
"code": "internal_error",
"error": "The API request could not be completed."
}Create conversation
Creates an API-origin conversation in the authenticated workspace.
POST
https://woes.dev
/
api
/
v1
/
conversations
Create conversation
curl --request POST \
--url https://woes.dev/api/v1/conversations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"subject": "Need help with auth",
"customer": {
"id": "cus_123",
"name": "Ada Lovelace",
"email": "ada@example.com",
"company": "Example API Co"
}
}
'const url = 'https://woes.dev/api/v1/conversations';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
subject: 'Need help with auth',
customer: {
id: 'cus_123',
name: 'Ada Lovelace',
email: 'ada@example.com',
company: 'Example API Co'
}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://woes.dev/api/v1/conversations"
payload = {
"subject": "Need help with auth",
"customer": {
"id": "cus_123",
"name": "Ada Lovelace",
"email": "ada@example.com",
"company": "Example API Co"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
subject: 'Need help with auth',
customer: {
id: 'cus_123',
name: 'Ada Lovelace',
email: 'ada@example.com',
company: 'Example API Co'
}
})
};
fetch('https://woes.dev/api/v1/conversations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"conversation": {
"object": "<string>",
"id": "<string>",
"priority": "<string>",
"subject": "<string>",
"preview": "<string>",
"customer": {
"id": "<string>",
"name": "<string>",
"email": "jsmith@example.com",
"company": "<string>",
"identitySource": "<string>"
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"lastMessageAt": "2023-11-07T05:31:56Z",
"closedAt": "2023-11-07T05:31:56Z"
}
}{
"code": "invalid_request",
"error": "Request body is invalid."
}{
"code": "unauthorized",
"error": "A valid workspace API key is required."
}{
"code": "insufficient_scope",
"error": "This API key is missing the required scope."
}{
"code": "conflict",
"error": "A record with this identifier already exists."
}{
"code": "rate_limited",
"error": "Too many API requests. Slow down and try again shortly."
}{
"code": "internal_error",
"error": "The API request could not be completed."
}Authorizations
Workspace API key that starts with woesk_. Paste your own key into the docs playground; never expose it in browser code.
Body
application/json
Required string length:
1 - 160Available options:
api, live-chat, email, discord Required string length:
1 - 200Required string length:
1 - 32Response
Conversation created.
Hide child attributes
Hide child attributes
Allowed value:
"conversation"Available options:
api, live-chat, email, discord Available options:
open, waiting, solved Hide child attributes
Hide child attributes
Required string length:
1 - 200Maximum string length:
160Maximum string length:
320Maximum string length:
160Last modified on July 4, 2026
Was this page helpful?
⌘I
