Early access: these pages are being written and reviewed. Facts in the header boxes come straight from the product.
Create a workflow
POST
/api/v1/workflows
const url = 'https://api.pitch2sale.com/api/v1/workflows';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"name":"example","description":"example","trigger":{"type":"manual","conditions":{}},"subject_type":"lead","run_mode":"once","steps":[],"goals":[{"type":"reply_received"}],"communication_window":{"days":[1],"start_hour":1,"start_minute":1,"end_hour":1,"end_minute":1,"timezone":"example"},"blackout_dates":["2026-04-15T12:00:00Z"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.pitch2sale.com/api/v1/workflows \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "name": "example", "description": "example", "trigger": { "type": "manual", "conditions": {} }, "subject_type": "lead", "run_mode": "once", "steps": [], "goals": [ { "type": "reply_received" } ], "communication_window": { "days": [ 1 ], "start_hour": 1, "start_minute": 1, "end_hour": 1, "end_minute": 1, "timezone": "example" }, "blackout_dates": [ "2026-04-15T12:00:00Z" ] }'Workflows are created inactive; activate one to start enrolling records on its trigger.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
name
required
string
description
string
trigger
required
object
type
required
string
conditions
object
key
additional properties
subject_type
string
run_mode
string
steps
Array<object>
object
type
required
string
order
required
integer
delay_seconds
integer
config
object
key
additional properties
description
string
goals
Array<object>
object
type
required
string
communication_window
object
days
required
Array<integer>
start_hour
required
integer
start_minute
required
integer
end_hour
required
integer
end_minute
required
integer
timezone
required
string
blackout_dates
Array<string>
Responses
Section titled “Responses”The new workflow
Media typeapplication/json
object
workflow
required
object
_id
required
string
name
required
string
is_active
required
boolean
key
additional properties
any
Examplegenerated
{ "workflow": { "_id": "example", "name": "example", "is_active": true }}Validation failed
Media typeapplication/json
object
error
required
string
code
string
message
string
details
Array<object>
object
field
required
string
message
required
string
code
required
string
Examplegenerated
{ "error": "example", "code": "example", "message": "example", "details": [ { "field": "example", "message": "example", "code": "example" } ]}Authentication required or token invalid
Media typeapplication/json
object
error
required
string
code
string
message
string
details
Array<object>
object
field
required
string
message
required
string
code
required
string
Examplegenerated
{ "error": "example", "code": "example", "message": "example", "details": [ { "field": "example", "message": "example", "code": "example" } ]}Role permission or token scope missing
Media typeapplication/json
object
error
required
string
code
string
message
string
details
Array<object>
object
field
required
string
message
required
string
code
required
string
Examplegenerated
{ "error": "example", "code": "example", "message": "example", "details": [ { "field": "example", "message": "example", "code": "example" } ]}Rate limit exceeded
Media typeapplication/json
object
error
required
string
code
string
message
string
details
Array<object>
object
field
required
string
message
required
string
code
required
string
Examplegenerated
{ "error": "example", "code": "example", "message": "example", "details": [ { "field": "example", "message": "example", "code": "example" } ]}