Stage a low-level ad action job
curl --request POST \
--url https://app.bily.ai/api/customer/v1/platform/{resourceUrl}/action-jobs \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{}'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://app.bily.ai/api/customer/v1/platform/{resourceUrl}/action-jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.bily.ai/api/customer/v1/platform/{resourceUrl}/action-jobs"
payload = {}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"ok": true,
"job": {
"id": "<string>",
"status": "staging",
"actionCount": 1,
"completedCount": 1,
"succeededCount": 1,
"failedCount": 1,
"actions": [
{
"index": 1,
"capabilityId": "<string>",
"label": "<string>",
"status": "staged",
"data": "<unknown>",
"error": "<string>",
"httpStatus": 123,
"retryable": true,
"details": "<unknown>"
}
],
"canRetry": true,
"canCancel": true,
"cancelRequestedAt": "<string>"
}
}{
"ok": true,
"job": {
"id": "<string>",
"status": "staging",
"actionCount": 1,
"completedCount": 1,
"succeededCount": 1,
"failedCount": 1,
"actions": [
{
"index": 1,
"capabilityId": "<string>",
"label": "<string>",
"status": "staged",
"data": "<unknown>",
"error": "<string>",
"httpStatus": 123,
"retryable": true,
"details": "<unknown>"
}
],
"canRetry": true,
"canCancel": true,
"cancelRequestedAt": "<string>"
}
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}Ad drafts and jobs
Stage a low-level ad action job
Prefer saving an action draft. This low-level endpoint can start immediately: inline actions auto-start unless autoStart is false. Set autoStart:false to stage, review all actions, then call start explicitly. Empty jobs use actionCount and PUT each action index before start. Idempotency does not make an uncertain platform mutation safe to replay.
POST
/
platform
/
{resourceUrl}
/
action-jobs
Stage a low-level ad action job
curl --request POST \
--url https://app.bily.ai/api/customer/v1/platform/{resourceUrl}/action-jobs \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{}'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://app.bily.ai/api/customer/v1/platform/{resourceUrl}/action-jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.bily.ai/api/customer/v1/platform/{resourceUrl}/action-jobs"
payload = {}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"ok": true,
"job": {
"id": "<string>",
"status": "staging",
"actionCount": 1,
"completedCount": 1,
"succeededCount": 1,
"failedCount": 1,
"actions": [
{
"index": 1,
"capabilityId": "<string>",
"label": "<string>",
"status": "staged",
"data": "<unknown>",
"error": "<string>",
"httpStatus": 123,
"retryable": true,
"details": "<unknown>"
}
],
"canRetry": true,
"canCancel": true,
"cancelRequestedAt": "<string>"
}
}{
"ok": true,
"job": {
"id": "<string>",
"status": "staging",
"actionCount": 1,
"completedCount": 1,
"succeededCount": 1,
"failedCount": 1,
"actions": [
{
"index": 1,
"capabilityId": "<string>",
"label": "<string>",
"status": "staged",
"data": "<unknown>",
"error": "<string>",
"httpStatus": 123,
"retryable": true,
"details": "<unknown>"
}
],
"canRetry": true,
"canCancel": true,
"cancelRequestedAt": "<string>"
}
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}Authorizations
ApiKeyAuthBearerAuth
A server-side Bily API key created under Settings > AI tools > Access keys. Select the intended workspace before creating it.
Headers
An organization ID returned by GET /context or GET /organizations. Omit it when a scoped key supplies the organization. Otherwise provide it when no organization is selected.
Example:
"org_01J8W7T9G3E6ZQ4M2K5N8P1R0S"
Path Parameters
Exact workspace URL returned by GET /context.
Body
application/json