Marketing
Lead-capture forms, landing pages, booking links, automation rules and their public pages.
17 endpoints· 5 called live· 12 not exercised here· verified against http://127.0.0.1:8741
17 endpoints
GET/api/v1/salesshift/automationsCalled liveThe organization's automation rules.
Request
curl 'https://api.vxcloud.io/api/v1/salesshift/automations' \
-H "Authorization: Bearer $SS_TOKEN"Response · 200
{
"success": "bool",
"data": [
{
"id": "str",
"name": "str",
"trigger_type": "str",
"action_type": "str",
"config": {
"title": "..."
},
"is_active": "bool",
"run_count": "int"
},
"...x1"
]
}POST/api/v1/salesshift/automationsNot exercised hereCreate an automation rule from a known trigger and action pair.
Request body (required)
Untyped Dict[str, Any] body — there is no Pydantic model, so these are the field names the handler actually reads.
action_typeconfigis_activenametrigger_type
Values in the request below are typed placeholders, not sample data.
Request
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/automations' \
-H "Authorization: Bearer $SS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{ "action_type": "<value>", "config": "<value>", "is_active": "<value>", "name": "<value>", "trigger_type": "<value>" }'Response · 201
{
"id": "…",
"success": "…"
}Errors
| Status | detail |
|---|---|
| 400 | Unknown trigger_type: {...} |
| 400 | Unknown action_type: {...} |
PUT/api/v1/salesshift/automations/{rule_id}Not exercised hereUpdate an automation rule.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| rule_id | string(uuid) | required |
Request body (required)
Accepts a JSON object; the source declares no field list.
Request
curl -X PUT 'https://api.vxcloud.io/api/v1/salesshift/automations/{rule_id}' \
-H "Authorization: Bearer $SS_TOKEN"Response · 200
{
"success": "…"
}Errors
| Status | detail |
|---|---|
| 404 | Rule not found |
DELETE/api/v1/salesshift/automations/{rule_id}Not exercised hereDelete an automation rule.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| rule_id | string(uuid) | required |
Request
curl -X DELETE 'https://api.vxcloud.io/api/v1/salesshift/automations/{rule_id}' \
-H "Authorization: Bearer $SS_TOKEN"Response · 200
{
"success": "…"
}Errors
| Status | detail |
|---|---|
| 404 | Rule not found |
GET/api/v1/salesshift/booking-linksCalled liveThe organization's booking links and their booking counts.
Request
curl 'https://api.vxcloud.io/api/v1/salesshift/booking-links' \
-H "Authorization: Bearer $SS_TOKEN"Response · 200
{
"success": "bool",
"data": {
"links": [
{
"id": "...",
"name": "...",
"slug": "...",
"duration_minutes": "...",
"is_active": "...",
"public_url": "..."
},
"...x1"
],
"bookings": [
"<empty list>"
]
}
}POST/api/v1/salesshift/booking-linksNot exercised hereCreate a booking link owned by the calling user.
Request body (required)
Untyped Dict[str, Any] body — there is no Pydantic model, so these are the field names the handler actually reads.
descriptionduration_minutesname
Values in the request below are typed placeholders, not sample data.
Request
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/booking-links' \
-H "Authorization: Bearer $SS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{ "description": "<value>", "duration_minutes": "<value>", "name": "<value>" }'Response · 201
{
"id": "…",
"slug": "…",
"success": "…"
}GET/api/v1/salesshift/formsCalled liveThe organization's lead-capture forms.
Request
curl 'https://api.vxcloud.io/api/v1/salesshift/forms' \
-H "Authorization: Bearer $SS_TOKEN"Response · 200
{
"success": "bool",
"data": [
"<empty list>"
]
}POST/api/v1/salesshift/formsNot exercised hereCreate a lead-capture form; the field set must include an email field.
Request body (required)
Untyped Dict[str, Any] body — there is no Pydantic model, so these are the field names the handler actually reads.
descriptionfieldsnamesubmit_labelsuccess_message
Values in the request below are typed placeholders, not sample data.
Request
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/forms' \
-H "Authorization: Bearer $SS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{ "description": "<value>", "fields": "<value>", "name": "<value>", "submit_label": "<value>", "success_message": "<value>" }'Response · 201
{
"id": "…",
"success": "…"
}Errors
| Status | detail |
|---|---|
| 400 | Form must include an email field |
DELETE/api/v1/salesshift/forms/{form_id}Not exercised hereDelete a form.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| form_id | string(uuid) | required |
Request
curl -X DELETE 'https://api.vxcloud.io/api/v1/salesshift/forms/{form_id}' \
-H "Authorization: Bearer $SS_TOKEN"Response · 200
{
"success": "…"
}Errors
| Status | detail |
|---|---|
| 404 | Form not found |
GET/api/v1/salesshift/pagesCalled liveThe organization's landing pages.
Request
curl 'https://api.vxcloud.io/api/v1/salesshift/pages' \
-H "Authorization: Bearer $SS_TOKEN"Response · 200
{
"success": "bool",
"data": [
"<empty list>"
]
}POST/api/v1/salesshift/pagesNot exercised hereCreate a landing page with a slug derived from its name.
Request body (required)
Untyped Dict[str, Any] body — there is no Pydantic model, so these are the field names the handler actually reads.
contentform_idis_publishedname
Values in the request below are typed placeholders, not sample data.
Request
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/pages' \
-H "Authorization: Bearer $SS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{ "content": "<value>", "form_id": "<value>", "is_published": "<value>", "name": "<value>" }'Response · 201
{
"id": "…",
"slug": "…",
"success": "…"
}DELETE/api/v1/salesshift/pages/{page_id}Not exercised hereDelete a landing page.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| page_id | string(uuid) | required |
Request
curl -X DELETE 'https://api.vxcloud.io/api/v1/salesshift/pages/{page_id}' \
-H "Authorization: Bearer $SS_TOKEN"Response · 200
{
"success": "…"
}Errors
| Status | detail |
|---|---|
| 404 | Page not found |
GET/api/v1/salesshift/public/book/{slug}public-by-designNot exercised herePublic HTML booking page for an active link.
A public booking page. Only active links render.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| slug | string | required |
Request
curl 'https://api.vxcloud.io/api/v1/salesshift/public/book/{slug}'Response · 200
Returns text/html (html).
POST/api/v1/salesshift/public/book/{slug}public-by-designNot exercised herePublic booking submit; records the booking and returns an HTML confirmation.
Anonymous booking submit.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| slug | string | required |
Request
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/public/book/{slug}'Response · 200
Returns text/html (html).
GET/api/v1/salesshift/public/forms/{form_id}public-by-designCalled livePublic HTML render of an active form.
A published form, meant to be world-readable. Only active forms render.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| form_id | string(uuid) | required |
Request
curl 'https://api.vxcloud.io/api/v1/salesshift/public/forms/{form_id}'Response · 200
"<non-json 14 bytes>"POST/api/v1/salesshift/public/forms/{form_id}/submitpublic-by-designNot exercised herePublic form submit; creates a submission and an HTML confirmation.
Anonymous form submit — that is the point of a lead-capture form.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| form_id | string(uuid) | required |
Request
curl -X POST 'https://api.vxcloud.io/api/v1/salesshift/public/forms/{form_id}/submit'Response · 200
Returns text/html (html).
GET/api/v1/salesshift/public/p/{slug}public-by-designNot exercised herePublic HTML render of a published landing page by slug.
A published landing page. Only published pages render.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
| slug | string | required |
Request
curl 'https://api.vxcloud.io/api/v1/salesshift/public/p/{slug}'Response · 200
Returns text/html (html).