Content Actions
Endpoints for executing custom actions and navigations on content items. Actions can run synchronously or asynchronously with callback support for long-running workflows.
Base URL: https://api.contit.cloud
/actions/{contentTypeKey}/{contentId}/{actionId}/execute
Execute action
Execute a custom action defined on a content type for a specific content item. If the action has UseCallback enabled, returns an operationId and callbackUrl for async tracking. Otherwise, executes synchronously and returns the result.
ReadAccess policy
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
contentTypeKey |
string | ✓ | The content type key |
contentId |
string | ✓ | The content item ID (GUID) |
actionId |
string | ✓ | The action identifier |
Responses
operationId |
string | Execution tracking ID (callback mode only) |
callbackUrl |
string | URL for the external service to report results (callback mode only) |
result |
object | Action-specific result data (sync mode only) |
Code examples
curl -X GET "https://api.contit.cloud/actions/{contentTypeKey}/{contentId}/{actionId}/execute" \
-H "X-Api-Key: YOUR_API_KEY"
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-Api-Key", "YOUR_API_KEY");
var response = await http.GetAsync("https://api.contit.cloud/actions/{contentTypeKey}/{contentId}/{actionId}/execute");
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
const response = await fetch(
"https://api.contit.cloud/actions/{contentTypeKey}/{contentId}/{actionId}/execute",
{
method: "GET",
headers: {
"X-Api-Key": "YOUR_API_KEY",
}
}
);
const data = await response.json();
import requests
headers = {"X-Api-Key": "YOUR_API_KEY"}
response = requests.get(
"https://api.contit.cloud/actions/{contentTypeKey}/{contentId}/{actionId}/execute",
headers=headers
)
data = response.json()
GET /actions/Article/a1b2c3d4-e5f6-7890-abcd-ef1234567890/send-notification/execute
{
"operationId": "d4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8",
"callbackUrl": "https://api.contit.cloud/actions/callback/ws-123/d4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8"
}
/actions/{contentTypeKey}/{contentId}/{actionId}/status
Get action execution status
Get the current execution status of a content action. Used to poll for completion when UseCallback is enabled.
ReadAccess policy
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
contentTypeKey |
string | ✓ | The content type key |
contentId |
string | ✓ | The content item ID (GUID) |
actionId |
string | ✓ | The action identifier |
Responses
operationId |
string | Execution tracking ID |
status |
string | Execution status: Running (0), Succeeded (1), Failed (-1) |
result |
string | Result data (available when Succeeded) |
progress |
integer? | Progress percentage 0-100 (optional, set by external service) |
message |
string | Status message for display |
error |
string | Error details (available when Failed) |
updatedAt |
datetime | Last update timestamp |
Code examples
curl -X GET "https://api.contit.cloud/actions/{contentTypeKey}/{contentId}/{actionId}/status" \
-H "X-Api-Key: YOUR_API_KEY"
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-Api-Key", "YOUR_API_KEY");
var response = await http.GetAsync("https://api.contit.cloud/actions/{contentTypeKey}/{contentId}/{actionId}/status");
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
const response = await fetch(
"https://api.contit.cloud/actions/{contentTypeKey}/{contentId}/{actionId}/status",
{
method: "GET",
headers: {
"X-Api-Key": "YOUR_API_KEY",
}
}
);
const data = await response.json();
import requests
headers = {"X-Api-Key": "YOUR_API_KEY"}
response = requests.get(
"https://api.contit.cloud/actions/{contentTypeKey}/{contentId}/{actionId}/status",
headers=headers
)
data = response.json()
GET /actions/Article/a1b2c3d4-e5f6-7890-abcd-ef1234567890/send-notification/status
{
"operationId": "d4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8",
"status": "Running",
"result": null,
"progress": 50,
"message": "Processing order items...",
"error": null,
"updatedAt": "2026-04-02T10:30:00Z"
}
/actions/callback/{workspaceId}/{operationId}
Action execution callback
Callback endpoint for external services (n8n, Zapier, etc.) to report action execution results. Does not require authentication — security is based on the unguessable operation ID. Send progress < 100 for intermediate updates, or set success to true/false for final completion.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
workspaceId |
string | ✓ | The workspace ID |
operationId |
string | ✓ | The operation ID returned by the execute endpoint |
Request Body application/json
| Property | Type | Required | Description |
|---|---|---|---|
success |
boolean | ✓ | true for success, false for failure |
result |
string | — | Result data returned to the client on success |
error |
string | — | Error message returned to the client on failure |
message |
string | — | Status message displayed in the UI |
progress |
integer? | — | Progress percentage (0-100). Values < 100 update progress without completing the action |
Responses
Code examples
curl -X POST "https://api.contit.cloud/actions/callback/{workspaceId}/{operationId}" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"success": true,
"result": "result_value",
"error": "error_value",
"message": "message_value",
"progress": "progress_value"
}'
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-Api-Key", "YOUR_API_KEY");
var content = new StringContent("{
\"success\": true,
\"result\": \"result_value\",
\"error\": \"error_value\",
\"message\": \"message_value\",
\"progress\": \"progress_value\"
}",
Encoding.UTF8, "application/json");
var response = await http.PostAsync(
"https://api.contit.cloud/actions/callback/{workspaceId}/{operationId}", content);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
const response = await fetch(
"https://api.contit.cloud/actions/callback/{workspaceId}/{operationId}",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
"success": true,
"result": "result_value",
"error": "error_value",
"message": "message_value",
"progress": "progress_value"
})
}
);
const data = await response.json();
import requests
headers = {"X-Api-Key": "YOUR_API_KEY"}
payload = {
"success": true,
"result": "result_value",
"error": "error_value",
"message": "message_value",
"progress": "progress_value"
}
response = requests.post(
"https://api.contit.cloud/actions/callback/{workspaceId}/{operationId}",
json=payload,
headers=headers
)
data = response.json()
POST /actions/callback/ws-123/d4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8
{
"success": true,
"result": "Order processed successfully",
"message": "Completed"
}