API
READ
WRITE
Csatlakozás módja
Az API-kulcs megtekintése
A jobb felső menü > Beállítások > Fiók > API-kulcsok alatt tekintheti meg.
Hozzáadás a kérésfejléchez
Adja hozzá a kiadott API-kulcsot az Authorization fejléchez Bearer formátumban.
Kérés küldése az alap URL-re
Küldjön kérést az alábbi alap URL-re, a végpont elérési útjával kiegészítve.
⛔auth_key_note
Alap URL
https://stepeee.com/public-api/v1
Kérés példa
curl "https://stepeee.com/public-api/v1/projects" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/projects",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/projects", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/projects")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/projects"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/projects");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Válaszformátum és hibák
Minden válasz az alábbi burkolóformátumban érkezik.
Sikeres esetben
{ "data": ... }
Hiba esetén
{ "error": { "code": "...", "message": "...", "details": { ... } } }
Állapotkódok
| Állapot | Jelentés |
|---|---|
| 401 | Az API-kulcs érvénytelen vagy lejárt |
| 403 | ⛔status_403_desc |
| 404 | Az erőforrás nem létezik (ide tartozik az az eset is, ha nincs hozzáférési jogosultsága) |
| 405 | ⛔status_405_desc |
| 409 | ⛔status_409_desc |
| 422 | A paraméterek érvénytelenek |
| 429 | Túllépte a sebességkorlátot |
| 500 | Váratlan hiba történt |
| 503 | ⛔status_503_desc |
⛔conventions_heading
⛔conv_access_heading
⛔conv_access_desc
⛔conv_deleted_heading
⛔conv_deleted_desc
⛔conv_pagination_heading
⛔conv_pagination_desc
⛔conv_datetime_heading
⛔conv_datetime_desc
⛔conv_ids_heading
⛔conv_ids_desc
⛔conv_files_heading
⛔conv_files_desc
⛔conv_values_heading
⛔conv_values_desc
⛔conv_money_heading
⛔conv_money_desc
⛔conv_write_heading
⛔conv_write_desc
⛔conv_idempotency_heading
⛔conv_idempotency_desc
⛔conv_rate_limit_heading
⛔conv_rate_limit_desc
⛔conv_write_rate_limit_heading
⛔conv_write_rate_limit_desc
⛔conv_errors_heading
⛔conv_errors_desc
| ⛔th_code | Jelentés |
|---|---|
unauthorized | ⛔error_code_unauthorized |
forbidden | ⛔error_code_forbidden |
plan_required | ⛔error_code_plan_required |
team_plan_lost | ⛔error_code_team_plan_lost |
not_found | ⛔error_code_not_found |
method_not_allowed | ⛔error_code_method_not_allowed |
conflict | ⛔error_code_conflict |
idempotency_request_in_progress | ⛔error_code_idempotency_request_in_progress |
validation_error | ⛔error_code_validation_error |
idempotency_key_required | ⛔error_code_idempotency_key_required |
idempotency_key_invalid | ⛔error_code_idempotency_key_invalid |
idempotency_key_reused | ⛔error_code_idempotency_key_reused |
rate_limited | ⛔error_code_rate_limited |
internal_error | ⛔error_code_internal_error |
⛔conv_validation_example_heading
{
"error": {
"code": "validation_error",
"message": "The per page field must not be greater than 100.",
"details": {
"per_page": ["The per page field must not be greater than 100."]
}
}
}
⛔group_account_nav_label
⛔group_account_lead
-
⛔ep_me_title
GET /me -
⛔ep_me_subscription_title
GET /me/subscription -
⛔ep_me_tokens_title
GET /me/tokens -
⛔ep_me_token_usage_title
GET /me/token-usage -
⛔ep_me_storage_title
GET /me/storage -
⛔ep_me_payments_title
GET /me/payments -
⛔ep_me_referral_title
GET /me/referral
⛔ep_me_title
⛔ep_me_desc
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
user_unique |
string | ⛔f_me_user_unique |
nickname |
string | null | ⛔f_me_nickname |
email |
string | ⛔f_me_email |
plan |
string | ⛔f_me_plan |
limits |
object | ⛔f_me_limits |
limits.projects |
integer | null | ⛔f_me_limits_projects |
limits.moviemode_variations_per_title |
integer | null | ⛔f_me_limits_movie_variations |
limits.blogmode_variations_per_title |
integer | null | ⛔f_me_limits_blog_variations |
limits.carouselmode_variations_per_title |
integer | null | ⛔f_me_limits_carousel_variations |
limits.postmode_variations_per_concept |
integer | null | ⛔f_me_limits_post_variations |
limits.team |
boolean | ⛔f_me_limits_team |
limits.script_duration_max |
integer | ⛔f_me_limits_script_duration_max |
limits.reading_time_max |
integer | ⛔f_me_limits_reading_time_max |
limits.reading_time_max_fulltext |
integer | ⛔f_me_limits_reading_time_max_fulltext |
limits.slide_count_max |
integer | ⛔f_me_limits_slide_count_max |
limits.cta_enabled |
boolean | ⛔f_me_limits_cta_enabled |
limits.thread_enabled |
boolean | ⛔f_me_limits_thread_enabled |
limits.schedule_title_variation_max |
integer | ⛔f_me_limits_schedule_title_variation_max |
limits.schedule_variation_create_max |
integer | ⛔f_me_limits_schedule_variation_create_max |
language |
string | null | ⛔f_me_language |
timezone |
string | ⛔f_me_timezone |
team |
object | null | ⛔f_me_team |
team.team_unique |
string | ⛔f_team_unique |
team.role |
string | ⛔f_me_team_role |
created_at |
string | ⛔f_me_created_at |
curl "https://stepeee.com/public-api/v1/me" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/me",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/me", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/me")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/me"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/me");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"user_unique": "aB3dE5gH7j",
"nickname": "Alice",
"email": "alice@example.com",
"plan": "pro",
"limits": {
"projects": 3,
"moviemode_variations_per_title": null,
"blogmode_variations_per_title": null,
"carouselmode_variations_per_title": null,
"postmode_variations_per_concept": null,
"team": false,
"script_duration_max": 1800,
"reading_time_max": 15,
"reading_time_max_fulltext": 4,
"slide_count_max": 20,
"cta_enabled": true,
"thread_enabled": true,
"schedule_title_variation_max": 50,
"schedule_variation_create_max": 5
},
"language": "ja",
"timezone": "Asia/Tokyo",
"team": null,
"created_at": "2026-09-01T10:20:30Z"
}
}
⛔ep_me_subscription_title
⛔ep_me_subscription_desc
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
plan |
string | ⛔f_me_plan |
status |
string | ⛔f_sub_status |
managed_by_team |
boolean | ⛔f_sub_managed_by_team |
current_period_start |
string | null | ⛔f_sub_current_period_start |
current_period_end |
string | null | ⛔f_sub_current_period_end |
cancel_at_period_end |
boolean | ⛔f_sub_cancel_at_period_end |
cancel_at |
string | null | ⛔f_sub_cancel_at |
canceled_at |
string | null | ⛔f_sub_canceled_at |
scheduled_change |
object | null | ⛔f_sub_scheduled_change |
scheduled_change.plan |
string | ⛔f_sub_scheduled_change_plan |
scheduled_change.effective_at |
string | null | ⛔f_sub_scheduled_change_effective_at |
curl "https://stepeee.com/public-api/v1/me/subscription" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/me/subscription",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/me/subscription", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/me/subscription")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/me/subscription"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/me/subscription");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"plan": "pro",
"status": "active",
"managed_by_team": false,
"current_period_start": "2026-10-01T00:00:00Z",
"current_period_end": "2026-11-01T00:00:00Z",
"cancel_at_period_end": false,
"cancel_at": null,
"canceled_at": null,
"scheduled_change": {
"plan": "plus",
"effective_at": "2026-11-01T00:00:00Z"
}
}
}
⛔ep_me_tokens_title
⛔ep_me_tokens_desc
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
balance |
integer | ⛔f_tok_balance |
reserved |
integer | ⛔f_tok_reserved |
available |
integer | ⛔f_tok_available |
wallet |
string | ⛔f_tok_wallet |
team_quota |
object | null | ⛔f_tok_team_quota |
team_quota.unlimited |
boolean | ⛔f_tok_quota_unlimited |
team_quota.view_only |
boolean | ⛔f_tok_quota_view_only |
team_quota.budget |
integer | null | ⛔f_tok_quota_budget |
team_quota.used |
integer | ⛔f_tok_quota_used |
team_quota.available |
integer | null | ⛔f_tok_quota_available |
team_quota.period |
string | null | ⛔f_tok_quota_period |
team_quota.next_reset_at |
string | null | ⛔f_tok_quota_next_reset_at |
auto_purchase.enabled |
boolean | ⛔f_tok_auto_enabled |
auto_purchase.plan |
string | null | ⛔f_tok_auto_plan |
auto_purchase.threshold |
integer | ⛔f_tok_auto_threshold |
curl "https://stepeee.com/public-api/v1/me/tokens" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/me/tokens",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/me/tokens", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/me/tokens")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/me/tokens"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/me/tokens");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"balance": 90000,
"reserved": 1200,
"available": 88800,
"wallet": "team",
"team_quota": {
"unlimited": false,
"view_only": false,
"budget": 10000,
"used": 2500,
"available": 7500,
"period": "week",
"next_reset_at": "2026-10-26T00:00:00Z"
},
"auto_purchase": {
"enabled": true,
"plan": "token_100",
"threshold": 5000
}
}
}
⛔ep_me_token_usage_title
⛔ep_me_token_usage_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
from |
⛔in_query | string (YYYY-MM-DD) | ⛔required_no | — | ⛔p_usage_from |
to |
⛔in_query | string (YYYY-MM-DD) | ⛔required_no | — | ⛔p_usage_to |
group_by |
⛔in_query | string | ⛔required_no | day |
⛔p_usage_group_by |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].period |
string | ⛔f_usage_period |
data[].consumed |
integer | ⛔f_usage_consumed |
data[].added |
integer | ⛔f_usage_added |
data[].consumed_by_type |
object | ⛔f_usage_consumed_by_type |
data[].added_by_type |
object | ⛔f_usage_added_by_type |
meta.from |
string | ⛔f_usage_meta_from |
meta.to |
string | ⛔f_usage_meta_to |
meta.group_by |
string | ⛔f_usage_meta_group_by |
meta.total_consumed |
integer | ⛔f_usage_meta_total_consumed |
meta.total_added |
integer | ⛔f_usage_meta_total_added |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 403 | forbidden |
⛔e_usage_team_staff |
| 422 | validation_error |
⛔e_usage_range |
curl "https://stepeee.com/public-api/v1/me/token-usage?from=2026-10-01&to=2026-10-20&group_by=day" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/me/token-usage?from=2026-10-01&to=2026-10-20&group_by=day",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/me/token-usage?from=2026-10-01&to=2026-10-20&group_by=day", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/me/token-usage?from=2026-10-01&to=2026-10-20&group_by=day")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/me/token-usage?from=2026-10-01&to=2026-10-20&group_by=day"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/me/token-usage?from=2026-10-01&to=2026-10-20&group_by=day");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"period": "2026-10-18",
"consumed": 450,
"added": 0,
"consumed_by_type": { "image": 300, "text": 150 },
"added_by_type": {}
},
{
"period": "2026-10-20",
"consumed": 1000,
"added": 4800,
"consumed_by_type": { "video": 1000 },
"added_by_type": { "purchase": 5000, "referral_revoke": -200 }
}
],
"meta": {
"from": "2026-10-01",
"to": "2026-10-20",
"group_by": "day",
"total_consumed": 1450,
"total_added": 4800
}
}
⛔ep_me_storage_title
⛔ep_me_storage_desc
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
used_bytes |
integer | ⛔f_storage_used_bytes |
capacity_bytes |
integer | null | ⛔f_storage_capacity_bytes |
by_type[].file_type |
string | null | ⛔f_storage_file_type |
by_type[].bytes |
integer | ⛔f_storage_bytes |
by_type[].files |
integer | ⛔f_storage_files |
curl "https://stepeee.com/public-api/v1/me/storage" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/me/storage",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/me/storage", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/me/storage")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/me/storage"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/me/storage");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"used_bytes": 734003200,
"capacity_bytes": null,
"by_type": [
{ "file_type": "image", "bytes": 52428800, "files": 120 },
{ "file_type": "movie", "bytes": 629145600, "files": 8 },
{ "file_type": "voice", "bytes": 52428800, "files": 15 }
]
}
}
⛔ep_me_payments_title
⛔ep_me_payments_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
status |
⛔in_query | string | ⛔required_no | — | ⛔p_payments_status |
type |
⛔in_query | string | ⛔required_no | — | ⛔p_payments_type |
from |
⛔in_query | string | ⛔required_no | — | ⛔p_from_created |
to |
⛔in_query | string | ⛔required_no | — | ⛔p_to_created |
page |
⛔in_query | integer | ⛔required_no | 1 |
⛔p_page |
per_page |
⛔in_query | integer | ⛔required_no | 20 |
⛔p_per_page |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].payment_unique |
string | ⛔f_pay_payment_unique |
data[].type |
string | ⛔f_pay_type |
data[].description |
string | ⛔f_pay_description |
data[].status |
string | ⛔f_pay_status |
data[].currency |
string | ⛔f_pay_currency |
data[].amount_subtotal |
integer | ⛔f_pay_amount_subtotal |
data[].tax_amount |
integer | ⛔f_pay_tax_amount |
data[].amount_total |
integer | ⛔f_pay_amount_total |
data[].line_items[] |
object | ⛔f_pay_line_items |
data[].receipt_url |
string | null | ⛔f_pay_receipt_url |
data[].invoice_pdf_url |
string | null | ⛔f_pay_invoice_pdf_url |
data[].created_at |
string | ⛔f_pay_created_at |
meta.total |
integer | ⛔f_meta_total |
meta.current_page |
integer | ⛔f_meta_current_page |
meta.per_page |
integer | ⛔f_meta_per_page |
meta.last_page |
integer | ⛔f_meta_last_page |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 422 | validation_error |
⛔e_invalid_params |
curl "https://stepeee.com/public-api/v1/me/payments?status=succeeded&per_page=10" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/me/payments?status=succeeded&per_page=10",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/me/payments?status=succeeded&per_page=10", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/me/payments?status=succeeded&per_page=10")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/me/payments?status=succeeded&per_page=10"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/me/payments?status=succeeded&per_page=10");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"payment_unique": "Xy12AbCd34Ef",
"type": "subscription_team",
"description": "Team Monthly",
"status": "succeeded",
"currency": "usd",
"amount_subtotal": 5000,
"tax_amount": 500,
"amount_total": 5500,
"line_items": [
{ "type": "base_plan", "quantity": 1, "amount": 4000, "description": "Team plan" },
{ "type": "extra_member", "quantity": 2, "amount": 1000, "description": null }
],
"receipt_url": "https://pay.stripe.com/receipts/...",
"invoice_pdf_url": "https://pay.stripe.com/invoice/.../pdf",
"created_at": "2026-10-01T08:00:00Z"
}
],
"meta": { "total": 1, "current_page": 1, "per_page": 10, "last_page": 1 }
}
⛔ep_me_referral_title
⛔ep_me_referral_desc
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
code |
string | null | ⛔f_ref_code |
referral_url |
string | null | ⛔f_ref_referral_url |
is_active |
boolean | ⛔f_ref_is_active |
reward_type |
string | null | ⛔f_ref_reward_type |
clicks |
integer | ⛔f_ref_clicks |
signups |
integer | ⛔f_ref_signups |
conversions |
integer | ⛔f_ref_conversions |
earned |
object | ⛔f_ref_earned |
earned_tokens |
integer | ⛔f_ref_earned_tokens |
pending |
object | ⛔f_ref_pending |
available |
object | ⛔f_ref_available |
curl "https://stepeee.com/public-api/v1/me/referral" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/me/referral",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/me/referral", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/me/referral")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/me/referral"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/me/referral");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"code": "REFk5m2j8x9ab",
"referral_url": "https://stepeee.com?ref=REFk5m2j8x9ab",
"is_active": true,
"reward_type": "cash",
"clicks": 12,
"signups": 4,
"conversions": 2,
"earned": { "amount": 1300, "currency": "usd" },
"earned_tokens": 0,
"pending": { "amount": 300, "currency": "usd" },
"available": { "amount": 800, "currency": "usd" }
}
}
Projekt
⛔group_projects_lead
-
⛔ep_projects_list_title
GET /projects -
⛔ep_projects_detail_title
GET /projects/{project_unique} -
⛔ep_concepts_list_title
GET /projects/{project_unique}/concepts -
⛔ep_concepts_detail_title
GET /projects/{project_unique}/concepts/{concept_unique}
⛔ep_projects_list_title
Lekéri az API-kulcs tulajdonosa számára elérhető projektek listáját.
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
page |
⛔in_query | integer | ⛔required_no | 1 |
⛔p_page |
per_page |
⛔in_query | integer | ⛔required_no | 20 |
⛔p_per_page |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].project_unique |
string | ⛔f_proj_project_unique |
data[].project_name |
string | ⛔f_proj_project_name |
data[].description |
string | null | ⛔f_proj_description |
data[].access_level |
string | ⛔f_proj_access_level |
data[].team |
object | null | ⛔f_proj_team |
data[].team.team_unique |
string | ⛔f_team_unique |
data[].is_readonly |
boolean | ⛔f_proj_is_readonly |
data[].readonly_since |
string | null | ⛔f_proj_readonly_since |
data[].created_at |
string | ⛔f_created_at |
data[].updated_at |
string | ⛔f_updated_at |
meta.total |
integer | ⛔f_meta_total |
meta.current_page |
integer | ⛔f_meta_current_page |
meta.per_page |
integer | ⛔f_meta_per_page |
meta.last_page |
integer | ⛔f_meta_last_page |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 422 | validation_error |
⛔e_invalid_params |
curl "https://stepeee.com/public-api/v1/projects" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/projects",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/projects", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/projects")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/projects"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/projects");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"project_unique": "a1b2c3d4e5",
"project_name": "Sample Project",
"description": "Sample project description",
"access_level": "owner",
"team": null,
"is_readonly": false,
"readonly_since": null,
"created_at": "2026-01-10T09:00:00Z",
"updated_at": "2026-10-01T12:00:00Z"
}
],
"meta": { "total": 1, "current_page": 1, "per_page": 20, "last_page": 1 }
}
⛔ep_projects_detail_title
Lekéri egy projekt részletes adatait.
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
project_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_project_unique |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
project_unique |
string | ⛔f_proj_project_unique |
project_name |
string | ⛔f_proj_project_name |
description |
string | null | ⛔f_proj_description |
access_level |
string | ⛔f_proj_access_level |
team |
object | null | ⛔f_proj_team |
team.team_unique |
string | ⛔f_team_unique |
is_readonly |
boolean | ⛔f_proj_is_readonly |
readonly_since |
string | null | ⛔f_proj_readonly_since |
created_at |
string | ⛔f_created_at |
updated_at |
string | ⛔f_updated_at |
scope |
string | ⛔f_proj_scope |
scope_region |
string | null | ⛔f_proj_scope_region |
counts.{mode}.concepts |
integer | ⛔f_proj_counts_concepts |
counts.{mode}.titles |
integer | null | ⛔f_proj_counts_titles |
counts.{mode}.contents |
object | ⛔f_proj_counts_contents |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_project_not_found |
curl "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/projects/a1b2c3d4e5",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"project_unique": "a1b2c3d4e5",
"project_name": "Sample Project",
"description": "Sample project description",
"access_level": "owner",
"team": null,
"is_readonly": false,
"readonly_since": null,
"created_at": "2026-01-10T09:00:00Z",
"updated_at": "2026-10-01T12:00:00Z",
"scope": "region",
"scope_region": "JP",
"counts": {
"moviemode": {
"concepts": 2,
"titles": 5,
"contents": { "total": 8, "not_started": 1, "in_progress": 3, "complete": 4 }
},
"blogmode": {
"concepts": 1,
"titles": 3,
"contents": { "total": 3, "not_started": 0, "in_progress": 1, "complete": 2 }
},
"carouselmode": {
"concepts": 0,
"titles": 0,
"contents": { "total": 0, "not_started": 0, "in_progress": 0, "complete": 0 }
},
"postmode": {
"concepts": 1,
"titles": null,
"contents": { "total": 1, "not_started": 0, "in_progress": 1, "complete": 0 }
}
}
}
}
⛔ep_concepts_list_title
⛔ep_concepts_list_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
project_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_project_unique |
mode |
⛔in_query | string | ⛔required_no | — | ⛔p_mode |
page |
⛔in_query | integer | ⛔required_no | 1 |
⛔p_page |
per_page |
⛔in_query | integer | ⛔required_no | 20 |
⛔p_per_page |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].concept_unique |
string | ⛔f_concept_unique |
data[].mode |
string | ⛔f_mode |
data[].concept_name |
string | ⛔f_concept_name |
data[].title_count |
integer | null | ⛔f_concept_title_count |
data[].content_count |
integer | ⛔f_concept_content_count |
data[].created_at |
string | ⛔f_created_at |
data[].updated_at |
string | ⛔f_updated_at |
meta.total |
integer | ⛔f_meta_total |
meta.current_page |
integer | ⛔f_meta_current_page |
meta.per_page |
integer | ⛔f_meta_per_page |
meta.last_page |
integer | ⛔f_meta_last_page |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_project_not_found |
| 422 | validation_error |
⛔e_invalid_params |
curl "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/concepts?mode=moviemode,postmode" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/concepts?mode=moviemode,postmode",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/concepts?mode=moviemode,postmode", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/concepts?mode=moviemode,postmode")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/concepts?mode=moviemode,postmode"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/concepts?mode=moviemode,postmode");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"concept_unique": "pC7d2KqLx01m",
"mode": "postmode",
"concept_name": "SaaS growth tips",
"title_count": null,
"content_count": 1,
"created_at": "2026-10-02T09:00:00Z",
"updated_at": "2026-10-02T09:00:00Z"
},
{
"concept_unique": "mC4f9TnB2q",
"mode": "moviemode",
"concept_name": "Cat facts",
"title_count": 3,
"content_count": 5,
"created_at": "2026-09-20T03:00:00Z",
"updated_at": "2026-09-28T03:00:00Z"
}
],
"meta": { "total": 2, "current_page": 1, "per_page": 20, "last_page": 1 }
}
⛔ep_concepts_detail_title
⛔ep_concepts_detail_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
project_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_project_unique |
concept_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_concept_unique |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
concept_unique / mode / concept_name / title_count / content_count / created_at / updated_at |
— | ⛔f_concept_same_as_list |
description |
string | null | ⛔f_concept_description |
scope |
string | ⛔f_proj_scope |
scope_region |
string | null | ⛔f_proj_scope_region |
default_template_unique |
string | null | ⛔f_concept_default_template_unique |
titles |
array | null | ⛔f_concept_titles |
titles[].title_unique |
string | ⛔f_title_unique |
titles[].title_name |
string | ⛔f_title_name |
titles[].article_type |
string | null | ⛔f_title_article_type |
titles[].content_count |
integer | ⛔f_title_content_count |
persona |
object | null | ⛔f_persona |
persona.persona_unique |
string | ⛔f_persona_unique |
persona.gender |
string | ⛔f_persona_gender |
persona.generation |
string | ⛔f_persona_generation |
persona.region |
string | null | ⛔f_persona_region |
persona.keywords |
object | ⛔f_persona_keywords |
persona.description |
string | ⛔f_persona_description |
persona.casual_description |
string | null | ⛔f_persona_casual_description |
persona.taboos |
array | ⛔f_persona_taboos |
persona.timezone_mode |
string | ⛔f_persona_timezone_mode |
persona.timezone |
string | null | ⛔f_persona_timezone |
rule |
object | null | ⛔f_rule |
rule.rule_unique |
string | ⛔f_rule_unique |
rule.language |
string | ⛔f_rule_language |
rule.formality |
string | ⛔f_rule_formality |
rule.emoji |
string | ⛔f_rule_emoji |
rule.line_break |
string | ⛔f_rule_line_break |
rule.post_type_share |
object | ⛔f_rule_post_type_share |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_project_not_found |
| 404 | not_found |
⛔e_concept_not_found |
curl "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/concepts/pC7d2KqLx01m" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/concepts/pC7d2KqLx01m",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/concepts/pC7d2KqLx01m", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/concepts/pC7d2KqLx01m")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/concepts/pC7d2KqLx01m"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/concepts/pC7d2KqLx01m");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"concept_unique": "pC7d2KqLx01m",
"mode": "postmode",
"concept_name": "SaaS growth tips",
"title_count": null,
"content_count": 1,
"created_at": "2026-10-02T09:00:00Z",
"updated_at": "2026-10-02T09:00:00Z",
"description": "Practical growth tips for SaaS founders",
"scope": "global",
"scope_region": null,
"default_template_unique": null,
"titles": null,
"persona": {
"persona_unique": "aV3kQ9mN2pRt",
"gender": "female",
"generation": "30s",
"region": "JP",
"keywords": { "occupation": "SaaS marketer", "interest": ["growth", "analytics"] },
"description": "A B2B SaaS marketer with ten years of experience...",
"casual_description": null,
"taboos": ["politics"],
"timezone_mode": "auto",
"timezone": "Asia/Tokyo",
"updated_at": "2026-10-02T09:10:00Z"
},
"rule": {
"rule_unique": "rU5tW7yZ9aBc",
"language": "ja",
"formality": "polite",
"emoji": "sometimes",
"line_break": "moderate",
"post_type_share": { "assertion": 40, "knowhow": 30, "experience": 20, "casual": 10 },
"updated_at": "2026-10-02T09:20:00Z"
}
}
}
Tartalom
⛔group_contents_lead
-
⛔ep_contents_list_title
GET /projects/{project_unique}/contents -
⛔ep_contents_detail_title
GET /projects/{project_unique}/contents/{variation_unique} -
⛔ep_contents_schedule_title
GET /projects/{project_unique}/contents/{variation_unique}/schedule
⛔ep_contents_list_title
Lekéri a projekten belül generált tartalmak (posztok, blogok, képek és videók) összesített listáját.
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
project_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_project_unique |
mode |
⛔in_query | string | ⛔required_no | — | ⛔p_mode |
status |
⛔in_query | string | ⛔required_no | — | ⛔p_contents_status |
concept_unique |
⛔in_query | string | ⛔required_no | — | ⛔p_contents_concept_unique |
title_unique |
⛔in_query | string | ⛔required_no | — | ⛔p_contents_title_unique |
language |
⛔in_query | string | ⛔required_no | — | ⛔p_contents_language |
published |
⛔in_query | string | ⛔required_no | — | ⛔p_contents_published |
from |
⛔in_query | string | ⛔required_no | — | ⛔p_from_created |
to |
⛔in_query | string | ⛔required_no | — | ⛔p_to_created |
sort |
⛔in_query | string | ⛔required_no | -created_at |
⛔p_contents_sort |
page |
⛔in_query | integer | ⛔required_no | 1 |
⛔p_page |
per_page |
⛔in_query | integer | ⛔required_no | 20 |
⛔p_per_page |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].mode |
string | ⛔f_mode |
data[].variation_unique |
string | ⛔f_content_variation_unique |
data[].variation_no |
integer | ⛔f_content_variation_no |
data[].title |
string | ⛔f_content_title |
data[].concept |
object | ⛔f_content_concept |
data[].title_unique |
string | null | ⛔f_content_title_unique |
data[].language |
string | null | ⛔f_content_language |
data[].status |
string | ⛔f_content_status |
data[].progress.step_process |
integer | ⛔f_content_step_process |
data[].progress.is_complete |
boolean | ⛔f_content_is_complete |
data[].is_readonly |
boolean | ⛔f_content_is_readonly |
data[].confirmed_at |
string | null | ⛔f_content_confirmed_at |
data[].published_platforms |
array | ⛔f_content_published_platforms |
data[].created_at |
string | ⛔f_created_at |
data[].updated_at |
string | ⛔f_updated_at |
meta.total |
integer | ⛔f_meta_total |
meta.current_page |
integer | ⛔f_meta_current_page |
meta.per_page |
integer | ⛔f_meta_per_page |
meta.last_page |
integer | ⛔f_meta_last_page |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_project_not_found |
| 422 | validation_error |
⛔e_invalid_params |
curl "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents?mode=blogmode&status=complete&published=false" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents?mode=blogmode&status=complete&published=false",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents?mode=blogmode&status=complete&published=false", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents?mode=blogmode&status=complete&published=false")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents?mode=blogmode&status=complete&published=false"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents?mode=blogmode&status=complete&published=false");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"mode": "blogmode",
"variation_unique": "bmA1b2C3d4E5",
"variation_no": 1,
"title": "How to start a blog",
"concept": { "concept_unique": "bC2x8RtY4u", "concept_name": "Blogging for beginners" },
"title_unique": "bT9kL3mN5pQr",
"language": "en",
"status": "complete",
"progress": { "step_process": 3, "is_complete": true },
"is_readonly": false,
"confirmed_at": "2026-10-03T08:00:00Z",
"published_platforms": [],
"created_at": "2026-10-01T03:00:00Z",
"updated_at": "2026-10-03T08:00:00Z"
}
],
"meta": { "total": 1, "current_page": 1, "per_page": 20, "last_page": 1 }
}
⛔ep_contents_detail_title
Lekéri egy tartalom részletes adatait. Tartalmazza a generált szöveget/eszközöket, valamint a publikálási állapotot (közösségi médiára/WordPress-re stb. történő közzététel eredményét). A „content” mező tartalma módonként eltérő formátumú.
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
project_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_project_unique |
variation_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_variation_unique |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
mode / variation_unique / … / updated_at |
— | ⛔f_content_same_as_list |
publish[] |
object | ⛔f_content_publish |
publish[].platform |
string | ⛔f_platform |
publish[].status |
string | ⛔f_publish_status |
publish[].post_url |
string | null | ⛔f_post_url |
publish[].posted_at |
string | null | ⛔f_posted_at |
content |
object | ⛔f_content_content |
package |
object | null | ⛔f_content_package |
package.video (moviemode) |
object | null | ⛔f_pkg_movie_video |
package.youtube.title (moviemode) |
string | null | ⛔f_pkg_youtube_title |
package.youtube.description (moviemode) |
string | null | ⛔f_pkg_youtube_description |
package.youtube.thumbnail (moviemode) |
object | null | ⛔f_pkg_youtube_thumbnail |
package.tiktok.caption (moviemode) |
string | null | ⛔f_pkg_tiktok_caption |
package.instagram.caption (moviemode / carouselmode) |
string | null | ⛔f_pkg_instagram_caption |
package.instagram.cover (moviemode) |
object | null | ⛔f_pkg_instagram_cover |
package.x.posts (moviemode / blogmode / carouselmode) |
array | ⛔f_pkg_x_posts |
package.title (blogmode) |
string | null | ⛔f_pkg_blog_title |
package.meta_description (blogmode) |
string | null | ⛔f_pkg_blog_meta_description |
package.body_html (blogmode) |
string | null | ⛔f_pkg_blog_body_html |
package.images (blogmode) |
array | ⛔f_pkg_blog_images |
package.cover_image (blogmode) |
object | null | ⛔f_pkg_blog_cover_image |
package.audio (blogmode) |
object | null | ⛔f_pkg_blog_audio |
package.slides[] (carouselmode) |
object | ⛔f_pkg_carousel_slides |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_project_not_found |
| 404 | not_found |
⛔e_content_not_found |
curl "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents/bmA1b2C3d4E5" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents/bmA1b2C3d4E5",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents/bmA1b2C3d4E5", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents/bmA1b2C3d4E5")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents/bmA1b2C3d4E5"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents/bmA1b2C3d4E5");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"mode": "blogmode",
"variation_unique": "bmA1b2C3d4E5",
"variation_no": 1,
"title": "How to start a blog",
"concept": { "concept_unique": "bC2x8RtY4u", "concept_name": "Blogging for beginners" },
"title_unique": "bT9kL3mN5pQr",
"language": "en",
"status": "complete",
"progress": { "step_process": 3, "is_complete": true },
"is_readonly": false,
"confirmed_at": "2026-10-03T08:00:00Z",
"published_platforms": ["wordpress"],
"created_at": "2026-10-01T03:00:00Z",
"updated_at": "2026-10-03T08:00:00Z",
"publish": [
{
"platform": "wordpress",
"status": "success",
"post_url": "https://blog.example.com/how-to-start-a-blog/",
"posted_at": "2026-10-03T09:00:00Z"
}
],
"content": { "body_html": "<h2>Why start a blog</h2><p>...</p>" },
"package": {
"title": "How to Start a Blog in 2026",
"meta_description": "A step-by-step guide to starting your first blog.",
"body_html": "<h2>Why start a blog</h2><p>...</p><figure><img src=\"https://...\" alt=\"\" /></figure>",
"images": [
{ "url": "https://...", "expires_at": "2026-10-21T10:00:00Z", "width": 1536, "height": 1024 }
],
"cover_image": { "url": "https://...", "expires_at": "2026-10-21T10:00:00Z", "width": 1200, "height": 630 },
"audio": null,
"x": { "posts": ["New post: How to start a blog in 2026"] }
}
}
}
⛔ep_contents_schedule_title
⛔ep_contents_schedule_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
project_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_project_unique |
variation_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_variation_unique |
from |
⛔in_query | string | ⛔required_no | — | ⛔p_schedule_from |
to |
⛔in_query | string | ⛔required_no | — | ⛔p_schedule_to |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
automation.enabled |
boolean | ⛔f_sch_auto_enabled |
automation.is_executing |
boolean | ⛔f_sch_auto_is_executing |
automation.week_limit |
integer | null | ⛔f_sch_auto_week_limit |
automation.week_count |
integer | ⛔f_sch_auto_week_count |
automation.next_refill_at |
string | null | ⛔f_sch_auto_next_refill_at |
automation.timezone |
string | null | ⛔f_sch_auto_timezone |
items[].schedule_unique |
string | ⛔f_sch_schedule_unique |
items[].post_unique |
string | null | ⛔f_sch_post_unique |
items[].scheduled_at |
string | ⛔f_sch_scheduled_at |
items[].scheduled_at_local |
string | ⛔f_sch_scheduled_at_local |
items[].timezone |
string | ⛔f_sch_timezone |
items[].status |
string | ⛔f_sch_status |
items[].confirm_state |
string | ⛔f_sch_confirm_state |
items[].created_via |
string | ⛔f_sch_created_via |
items[].post_type |
string | ⛔f_sch_post_type |
items[].text |
string | null | ⛔f_sch_text |
items[].thread[] |
object | ⛔f_sch_thread |
items[].image |
object | null | ⛔f_sch_image |
items[].post_url |
string | null | ⛔f_post_url |
items[].posted_at |
string | null | ⛔f_posted_at |
items[].fail_reason |
string | null | ⛔f_sch_fail_reason |
meta.from / meta.to |
string | ⛔f_sch_meta_range |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_project_not_found |
| 404 | not_found |
⛔e_schedule_not_found |
| 422 | validation_error |
⛔e_schedule_range |
curl "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents/pmV7d2KqLx01/schedule?from=2026-10-20&to=2026-11-20" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents/pmV7d2KqLx01/schedule?from=2026-10-20&to=2026-11-20",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents/pmV7d2KqLx01/schedule?from=2026-10-20&to=2026-11-20", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents/pmV7d2KqLx01/schedule?from=2026-10-20&to=2026-11-20")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents/pmV7d2KqLx01/schedule?from=2026-10-20&to=2026-11-20"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/contents/pmV7d2KqLx01/schedule?from=2026-10-20&to=2026-11-20");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"automation": {
"enabled": true,
"is_executing": true,
"week_limit": 4,
"week_count": 2,
"next_refill_at": "2026-10-26T15:00:00Z",
"timezone": "Asia/Tokyo"
},
"items": [
{
"schedule_unique": "Sc1aB2cD3eF4",
"post_unique": "Po1aB2cD3eF4",
"scheduled_at": "2026-10-20T01:00:00Z",
"scheduled_at_local": "2026-10-20T10:00:00",
"timezone": "Asia/Tokyo",
"status": "posted",
"confirm_state": "none",
"created_via": "auto",
"post_type": "assertion",
"text": "Most teams overthink onboarding...",
"thread": [
{
"text": "First, cut the steps in half.",
"post_url": "https://x.com/i/status/1848000000000000002",
"posted_at": "2026-10-20T01:00:05Z",
"image": null
}
],
"image": { "url": "https://...", "expires_at": "2026-10-21T10:00:00Z" },
"post_url": "https://x.com/i/status/1848000000000000001",
"posted_at": "2026-10-20T01:00:00Z",
"fail_reason": null
},
{
"schedule_unique": "Sc9zY8xW7vU6",
"post_unique": null,
"scheduled_at": "2026-10-25T09:30:00Z",
"scheduled_at_local": "2026-10-25T18:30:00",
"timezone": "Asia/Tokyo",
"status": "pending",
"confirm_state": "none",
"created_via": "auto",
"post_type": "knowhow",
"text": null,
"thread": [],
"image": null,
"post_url": null,
"posted_at": null,
"fail_reason": null
}
]
},
"meta": { "from": "2026-10-20T00:00:00Z", "to": "2026-11-20T23:59:59Z" }
}
⛔group_publish_nav_label
⛔group_publish_lead
-
⛔ep_publications_list_title
GET /projects/{project_unique}/publications -
⛔ep_accounts_list_title
GET /projects/{project_unique}/accounts
⛔ep_publications_list_title
⛔ep_publications_list_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
project_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_project_unique |
mode |
⛔in_query | string | ⛔required_no | — | ⛔p_mode |
platform |
⛔in_query | string | ⛔required_no | — | ⛔p_publications_platform |
status |
⛔in_query | string | ⛔required_no | — | ⛔p_publications_status |
from |
⛔in_query | string | ⛔required_no | — | ⛔p_publications_from |
to |
⛔in_query | string | ⛔required_no | — | ⛔p_publications_to |
page |
⛔in_query | integer | ⛔required_no | 1 |
⛔p_page |
per_page |
⛔in_query | integer | ⛔required_no | 20 |
⛔p_per_page |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].publication_unique |
string | ⛔f_pub_publication_unique |
data[].mode |
string | ⛔f_mode |
data[].content.variation_unique |
string | ⛔f_content_variation_unique |
data[].content.title |
string | null | ⛔f_content_title |
data[].platform |
string | ⛔f_platform |
data[].account |
object | null | ⛔f_pub_account |
data[].status |
string | ⛔f_publish_status |
data[].post_url |
string | null | ⛔f_post_url |
data[].error_code |
string | null | ⛔f_pub_error_code |
data[].is_automation |
boolean | ⛔f_pub_is_automation |
data[].posted_at |
string | null | ⛔f_posted_at |
data[].created_at |
string | ⛔f_created_at |
meta.total |
integer | ⛔f_meta_total |
meta.current_page |
integer | ⛔f_meta_current_page |
meta.per_page |
integer | ⛔f_meta_per_page |
meta.last_page |
integer | ⛔f_meta_last_page |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_project_not_found |
| 422 | validation_error |
⛔e_invalid_params |
curl "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/publications?platform=x,youtube&status=failed" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/publications?platform=x,youtube&status=failed",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/publications?platform=x,youtube&status=failed", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/publications?platform=x,youtube&status=failed")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/publications?platform=x,youtube&status=failed"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/publications?platform=x,youtube&status=failed");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"publication_unique": "Xk3p9QmZ2aLw",
"mode": "postmode",
"content": { "variation_unique": "pmV7d2KqLx01", "title": "SaaS growth tips" },
"platform": "x",
"account": null,
"status": "success",
"post_url": "https://x.com/i/status/1848123456789012345",
"error_code": null,
"is_automation": true,
"posted_at": "2026-10-04T10:00:00Z",
"created_at": "2026-10-03T22:10:00Z"
},
{
"publication_unique": "Pq2wE4rT6yUi",
"mode": "blogmode",
"content": { "variation_unique": "bmA1b2C3d4E5", "title": "How to start a blog" },
"platform": "wordpress",
"account": { "account_unique": "Wp3xY5zA7bCd", "name": "My WP Site" },
"status": "failed",
"post_url": null,
"error_code": "auth_failed",
"is_automation": false,
"posted_at": null,
"created_at": "2026-10-02T10:00:00Z"
}
],
"meta": { "total": 2, "current_page": 1, "per_page": 20, "last_page": 1 }
}
⛔ep_accounts_list_title
⛔ep_accounts_list_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
project_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_project_unique |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].account_unique |
string | ⛔f_acc_account_unique |
data[].platform |
string | ⛔f_platform |
data[].name |
string | ⛔f_acc_name |
data[].image_url |
string | null | ⛔f_acc_image_url |
data[].status |
string | ⛔f_acc_status |
data[].token_expires_at |
string | null | ⛔f_acc_token_expires_at |
data[].connected_at |
string | null | ⛔f_acc_connected_at |
data[].last_used_at |
string | null | ⛔f_acc_last_used_at |
data[].site_url |
string | null | ⛔f_acc_site_url |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_project_not_found |
curl "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/accounts" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/accounts",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/accounts", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/accounts")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/accounts"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/projects/a1b2c3d4e5/accounts");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"account_unique": "Wh9kQ2mN4pRt",
"platform": "webhook",
"name": "https://hooks.example.com/…",
"image_url": null,
"status": "active",
"token_expires_at": null,
"connected_at": "2026-07-01T00:00:00Z",
"last_used_at": null,
"site_url": null
},
{
"account_unique": "Wp3xY5zA7bCd",
"platform": "wordpress",
"name": "Example Blog",
"image_url": null,
"status": "connection_error",
"token_expires_at": null,
"connected_at": "2026-08-01T00:00:00Z",
"last_used_at": null,
"site_url": "https://blog.example.com"
},
{
"account_unique": "Yt4aB6cD8eFg",
"platform": "youtube",
"name": "Channel B",
"image_url": "https://yt3.ggpht.com/abc.png",
"status": "expired",
"token_expires_at": "2026-10-01T00:00:00Z",
"connected_at": "2026-09-01T00:00:00Z",
"last_used_at": "2026-09-30T00:00:00Z",
"site_url": null
}
]
}
⛔group_automations_nav_label
⛔group_automations_lead
-
⛔ep_automations_list_title
GET /automations -
⛔ep_automations_detail_title
GET /automations/{auto_unique}
⛔ep_automations_list_title
⛔ep_automations_list_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
status |
⛔in_query | string | ⛔required_no | — | ⛔p_auto_status |
mode |
⛔in_query | string | ⛔required_no | — | ⛔p_auto_mode |
project_unique |
⛔in_query | string | ⛔required_no | — | ⛔p_auto_project_unique |
from |
⛔in_query | string | ⛔required_no | — | ⛔p_from_created |
to |
⛔in_query | string | ⛔required_no | — | ⛔p_to_created |
page |
⛔in_query | integer | ⛔required_no | 1 |
⛔p_page |
per_page |
⛔in_query | integer | ⛔required_no | 20 |
⛔p_per_page |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].auto_unique |
string | ⛔f_auto_auto_unique |
data[].mode |
string | ⛔f_auto_mode |
data[].project |
object | ⛔f_auto_project |
data[].content.variation_unique |
string | ⛔f_content_variation_unique |
data[].content.title |
string | null | ⛔f_content_title |
data[].run_no |
integer | ⛔f_auto_run_no |
data[].status |
string | ⛔f_auto_status |
data[].execution_mode |
string | ⛔f_auto_execution_mode |
data[].phases |
object | ⛔f_auto_phases |
data[].template.setup_template_name |
string | null | ⛔f_auto_setup_template_name |
data[].template.automation_template_name |
string | null | ⛔f_auto_automation_template_name |
data[].reserved_at |
string | null | ⛔f_auto_reserved_at |
data[].executed_at |
string | null | ⛔f_auto_executed_at |
data[].completed_at |
string | null | ⛔f_auto_completed_at |
data[].created_at |
string | ⛔f_auto_created_at |
meta.total |
integer | ⛔f_meta_total |
meta.current_page |
integer | ⛔f_meta_current_page |
meta.per_page |
integer | ⛔f_meta_per_page |
meta.last_page |
integer | ⛔f_meta_last_page |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_project_not_found |
| 422 | validation_error |
⛔e_invalid_params |
curl "https://stepeee.com/public-api/v1/automations?status=executing,waiting_confirmation" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/automations?status=executing,waiting_confirmation",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/automations?status=executing,waiting_confirmation", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/automations?status=executing,waiting_confirmation")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/automations?status=executing,waiting_confirmation"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/automations?status=executing,waiting_confirmation");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"auto_unique": "aB3dE5fG7h",
"mode": "blogmode",
"project": { "project_unique": "Pq7Rs9Tu1V", "project_name": "My Blog" },
"content": { "variation_unique": "Xy12Zw34Ab56", "title": "Spring travel tips" },
"run_no": 2,
"status": "executing",
"execution_mode": "sequential",
"phases": { "setup": "done", "step1": "done", "step2": "running", "step3": "not_started" },
"template": { "setup_template_name": "Default setup", "automation_template_name": null },
"reserved_at": null,
"executed_at": "2026-10-19T23:09:27Z",
"completed_at": null,
"created_at": "2026-10-19T23:09:20Z"
}
],
"meta": { "total": 1, "current_page": 1, "per_page": 20, "last_page": 1 }
}
⛔ep_automations_detail_title
⛔ep_automations_detail_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
auto_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_auto_unique |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
auto_unique / mode / … / created_at |
— | ⛔f_auto_same_as_list |
steps[].key |
string | ⛔f_step_key |
steps[].phase |
string | ⛔f_step_phase |
steps[].status |
string | ⛔f_step_status |
steps[].started_at |
string | null | ⛔f_step_started_at |
steps[].finished_at |
string | null | ⛔f_step_finished_at |
steps[].duration_sec |
number | null | ⛔f_step_duration_sec |
steps[].error_code |
string | null | ⛔f_step_error_code |
accounts[] |
object | ⛔f_auto_accounts |
stop_requested |
boolean | ⛔f_auto_stop_requested |
confirmation.requested_at |
string | null | ⛔f_auto_confirm_requested_at |
confirmation.confirmed_at |
string | null | ⛔f_auto_confirmed_at |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_automation_not_found |
curl "https://stepeee.com/public-api/v1/automations/aB3dE5fG7h" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/automations/aB3dE5fG7h",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/automations/aB3dE5fG7h", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/automations/aB3dE5fG7h")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/automations/aB3dE5fG7h"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/automations/aB3dE5fG7h");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"auto_unique": "aB3dE5fG7h",
"mode": "blogmode",
"project": { "project_unique": "Pq7Rs9Tu1V", "project_name": "My Blog" },
"content": { "variation_unique": "Xy12Zw34Ab56", "title": "Spring travel tips" },
"run_no": 2,
"status": "failed",
"execution_mode": "sequential",
"phases": { "setup": "done", "step1": "done", "step2": "done", "step3": "error" },
"template": { "setup_template_name": "Default setup", "automation_template_name": "Skip voice" },
"reserved_at": null,
"executed_at": "2026-10-19T23:09:27Z",
"completed_at": "2026-10-19T23:17:50Z",
"created_at": "2026-10-19T23:09:20Z",
"steps": [
{ "key": "setup", "phase": "setup", "status": "success", "started_at": null, "finished_at": "2026-10-19T23:09:29Z", "duration_sec": 2.3, "error_code": null },
{ "key": "step1_1_text", "phase": "step1", "status": "success", "started_at": null, "finished_at": "2026-10-19T23:11:40Z", "duration_sec": 126.3, "error_code": null },
{ "key": "step2_2", "phase": "step2", "status": "skipped", "started_at": null, "finished_at": "2026-10-19T23:17:39Z", "duration_sec": null, "error_code": null },
{ "key": "step3_4_webhook", "phase": "step3", "status": "error", "started_at": null, "finished_at": "2026-10-19T23:17:46Z", "duration_sec": 1.2, "error_code": "automation_server_error" }
],
"accounts": [
{ "platform": "webhook", "account_unique": "dxuD2gk3NYuA", "name": null }
],
"stop_requested": false,
"confirmation": { "requested_at": null, "confirmed_at": null }
}
}
⛔group_materials_nav_label
⛔group_materials_lead
-
⛔ep_materials_list_title
GET /materials -
⛔ep_materials_detail_title
GET /materials/{material_unique} -
⛔ep_material_categories_title
GET /material-categories -
⛔ep_templates_list_title
GET /templates
⛔ep_materials_list_title
⛔ep_materials_list_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
kind |
⛔in_query | string | ⛔required_no | — | ⛔p_mat_kind |
type |
⛔in_query | string | ⛔required_no | — | ⛔p_mat_type |
category_unique |
⛔in_query | string | ⛔required_no | — | ⛔p_mat_category_unique |
page |
⛔in_query | integer | ⛔required_no | 1 |
⛔p_page |
per_page |
⛔in_query | integer | ⛔required_no | 20 |
⛔p_per_page |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].material_unique |
string | ⛔f_mat_material_unique |
data[].kind |
string | ⛔f_mat_kind |
data[].type |
string | ⛔f_mat_type |
data[].category |
object | null | ⛔f_mat_category |
data[].width / data[].height |
integer | null | ⛔f_mat_size_px |
data[].duration_ms |
integer | null | ⛔f_mat_duration_ms |
data[].size_bytes |
integer | ⛔f_mat_size_bytes |
data[].file |
object | ⛔f_mat_file |
data[].thumbnail |
object | null | ⛔f_mat_thumbnail |
data[].created_at |
string | ⛔f_created_at |
meta.total |
integer | ⛔f_meta_total |
meta.current_page |
integer | ⛔f_meta_current_page |
meta.per_page |
integer | ⛔f_meta_per_page |
meta.last_page |
integer | ⛔f_meta_last_page |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 422 | validation_error |
⛔e_invalid_params |
curl "https://stepeee.com/public-api/v1/materials?kind=image&type=image_vertical" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/materials?kind=image&type=image_vertical",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/materials?kind=image&type=image_vertical", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/materials?kind=image&type=image_vertical")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/materials?kind=image&type=image_vertical"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/materials?kind=image&type=image_vertical");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"material_unique": "aB3dE5fG7hJ9kL1mN3pQ",
"kind": "image",
"type": "image_vertical",
"category": { "category_unique": "Xy12Ab34Cd", "name": "Product shots" },
"width": 768,
"height": 1344,
"duration_ms": null,
"size_bytes": 1234567,
"file": { "url": "https://...", "expires_at": "2026-10-21T11:00:00Z" },
"thumbnail": { "url": "https://...", "expires_at": "2026-10-21T11:00:00Z" },
"created_at": "2026-10-01T10:00:00Z"
},
{
"material_unique": "Zq9Wv8Ut7Sr6Qp5On4Ml",
"kind": "bgm",
"type": "bgm",
"category": null,
"width": null,
"height": null,
"duration_ms": 30000,
"size_bytes": 482133,
"file": { "url": "https://...", "expires_at": "2026-10-21T11:00:00Z" },
"thumbnail": null,
"created_at": "2026-09-30T08:12:00Z"
}
],
"meta": { "total": 2, "current_page": 1, "per_page": 20, "last_page": 1 }
}
⛔ep_materials_detail_title
⛔ep_materials_detail_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
material_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_material_unique |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
material_unique |
string | ⛔f_mat_material_unique |
kind |
string | ⛔f_mat_kind |
type |
string | ⛔f_mat_type |
category |
object | null | ⛔f_mat_category |
width / height |
integer | null | ⛔f_mat_size_px |
duration_ms |
integer | null | ⛔f_mat_duration_ms |
size_bytes |
integer | ⛔f_mat_size_bytes |
file |
object | ⛔f_mat_file |
thumbnail |
object | null | ⛔f_mat_thumbnail |
created_at |
string | ⛔f_created_at |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_material_not_found |
curl "https://stepeee.com/public-api/v1/materials/aB3dE5fG7hJ9kL1mN3pQ" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/materials/aB3dE5fG7hJ9kL1mN3pQ",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/materials/aB3dE5fG7hJ9kL1mN3pQ", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/materials/aB3dE5fG7hJ9kL1mN3pQ")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/materials/aB3dE5fG7hJ9kL1mN3pQ"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/materials/aB3dE5fG7hJ9kL1mN3pQ");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"material_unique": "aB3dE5fG7hJ9kL1mN3pQ",
"kind": "image",
"type": "image_vertical",
"category": { "category_unique": "Xy12Ab34Cd", "name": "Product shots" },
"width": 768,
"height": 1344,
"duration_ms": null,
"size_bytes": 1234567,
"file": { "url": "https://...", "expires_at": "2026-10-21T11:00:00Z" },
"thumbnail": { "url": "https://...", "expires_at": "2026-10-21T11:00:00Z" },
"created_at": "2026-10-01T10:00:00Z"
}
}
⛔ep_material_categories_title
⛔ep_material_categories_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
kind |
⛔in_query | string | ⛔required_no | — | ⛔p_mat_kind |
type |
⛔in_query | string | ⛔required_no | — | ⛔p_mat_type |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].category_unique |
string | ⛔f_matcat_category_unique |
data[].name |
string | ⛔f_matcat_name |
data[].kind |
string | ⛔f_mat_kind |
data[].type |
string | ⛔f_mat_type |
data[].is_system |
boolean | ⛔f_matcat_is_system |
data[].material_count |
integer | ⛔f_matcat_material_count |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 422 | validation_error |
⛔e_invalid_params |
curl "https://stepeee.com/public-api/v1/material-categories?kind=image" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/material-categories?kind=image",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/material-categories?kind=image", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/material-categories?kind=image")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/material-categories?kind=image"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/material-categories?kind=image");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"category_unique": "Bg12Ab34Cd",
"name": "Lo-fi",
"kind": "bgm",
"type": "bgm",
"is_system": false,
"material_count": 3
},
{
"category_unique": "Xy12Ab34Cd",
"name": "Product shots",
"kind": "image",
"type": "image_vertical",
"is_system": false,
"material_count": 12
}
]
}
⛔ep_templates_list_title
⛔ep_templates_list_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
mode |
⛔in_query | string | ⛔required_no | — | ⛔p_tpl_mode |
kind |
⛔in_query | string | ⛔required_no | — | ⛔p_tpl_kind |
page |
⛔in_query | integer | ⛔required_no | 1 |
⛔p_page |
per_page |
⛔in_query | integer | ⛔required_no | 20 |
⛔p_per_page |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].template_unique |
string | ⛔f_tpl_template_unique |
data[].kind |
string | ⛔f_tpl_kind |
data[].mode |
string | ⛔f_mode |
data[].name |
string | ⛔f_tpl_name |
data[].created_at |
string | ⛔f_created_at |
data[].updated_at |
string | ⛔f_updated_at |
meta.total |
integer | ⛔f_meta_total |
meta.current_page |
integer | ⛔f_meta_current_page |
meta.per_page |
integer | ⛔f_meta_per_page |
meta.last_page |
integer | ⛔f_meta_last_page |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 422 | validation_error |
⛔e_invalid_params |
curl "https://stepeee.com/public-api/v1/templates?kind=setup&mode=moviemode" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/templates?kind=setup&mode=moviemode",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/templates?kind=setup&mode=moviemode", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/templates?kind=setup&mode=moviemode")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/templates?kind=setup&mode=moviemode"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/templates?kind=setup&mode=moviemode");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"template_unique": "Ab12Cd34Ef",
"kind": "automation",
"mode": "carouselmode",
"name": "Morning carousel",
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-10-05T00:00:00Z"
},
{
"template_unique": "Gh56Ij78Kl",
"kind": "setup",
"mode": "moviemode",
"name": "60-second explainer",
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-10-01T00:00:00Z"
}
],
"meta": { "total": 2, "current_page": 1, "per_page": 20, "last_page": 1 }
}
⛔group_write_contents_nav_label
⛔group_write_contents_lead
-
⛔ep_titles_store_title
POST /projects/{project_unique}/concepts/{concept_unique}/titles -
⛔ep_contents_destroy_title
DELETE /projects/{project_unique}/contents/{variation_unique}
⛔ep_titles_store_title
⛔ep_titles_store_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
project_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_project_unique |
concept_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_titles_concept_unique |
titles |
⛔in_body | string[] | ⛔required_yes | — | ⛔p_titles_titles |
language |
⛔in_body | string | ⛔required_yes | — | ⛔p_titles_language |
setup_template_unique |
⛔in_body | string | null | ⛔required_no | — | ⛔p_titles_setup_template_unique |
Idempotency-Key |
⛔in_header | string | ⛔required_no | — | ⛔p_idempotency_key_optional |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
created[] |
object | ⛔f_titles_created |
created[].title_unique |
string | ⛔f_titles_title_unique |
created[].title_name |
string | ⛔f_titles_title_name |
created[].variation_unique |
string | null | ⛔f_titles_variation_unique |
skipped[] |
object | ⛔f_titles_skipped |
skipped[].title_name |
string | ⛔f_titles_title_name |
skipped[].reason |
string | ⛔f_titles_skipped_reason |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 403 | plan_required |
⛔e_plan_required |
| 403 | team_plan_lost |
⛔e_team_plan_lost |
| 403 | readonly |
⛔e_titles_readonly |
| 404 | not_found |
⛔e_titles_not_found |
| 409 | title_limit_reached |
⛔e_title_limit_reached |
| 409 | idempotency_request_in_progress |
⛔e_idempotency_request_in_progress |
| 422 | validation_error |
⛔e_invalid_params |
| 422 | mode_not_supported |
⛔e_titles_mode_not_supported |
| 422 | template_not_found |
⛔e_titles_template_not_found |
| 422 | idempotency_key_invalid |
⛔e_idempotency_key_invalid |
| 422 | idempotency_key_reused |
⛔e_idempotency_key_reused |
curl -X POST "https://stepeee.com/public-api/v1/projects/Pq7Rs9Tu1V/concepts/Cx2Yz4Wv6Ut8/titles" \
-H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90" \
-d '{
"titles": ["Easy breakfast for beginners", "Meal prep in 5 minutes", "Easy breakfast for beginners"],
"language": "en",
"setup_template_unique": "Gh56Ij78Kl"
}'
import requests
body = """{
"titles": ["Easy breakfast for beginners", "Meal prep in 5 minutes", "Easy breakfast for beginners"],
"language": "en",
"setup_template_unique": "Gh56Ij78Kl"
}"""
response = requests.request(
"POST",
"https://stepeee.com/public-api/v1/projects/Pq7Rs9Tu1V/concepts/Cx2Yz4Wv6Ut8/titles",
headers={
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
"Idempotency-Key": "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
},
data=body,
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/projects/Pq7Rs9Tu1V/concepts/Cx2Yz4Wv6Ut8/titles", {
method: "POST",
headers: {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
"Idempotency-Key": "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
},
body: JSON.stringify({
"titles": ["Easy breakfast for beginners", "Meal prep in 5 minutes", "Easy breakfast for beginners"],
"language": "en",
"setup_template_unique": "Gh56Ij78Kl"
}),
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/projects/Pq7Rs9Tu1V/concepts/Cx2Yz4Wv6Ut8/titles")!)
request.httpMethod = "POST"
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90", forHTTPHeaderField: "Idempotency-Key")
request.httpBody = """
{
"titles": ["Easy breakfast for beginners", "Meal prep in 5 minutes", "Easy breakfast for beginners"],
"language": "en",
"setup_template_unique": "Gh56Ij78Kl"
}
""".data(using: .utf8)
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/projects/Pq7Rs9Tu1V/concepts/Cx2Yz4Wv6Ut8/titles"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.header("Content-Type", "application/json")
.header("Idempotency-Key", "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"titles": ["Easy breakfast for beginners", "Meal prep in 5 minutes", "Easy breakfast for beginners"],
"language": "en",
"setup_template_unique": "Gh56Ij78Kl"
}
"""))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$body = <<<'JSON'
{
"titles": ["Easy breakfast for beginners", "Meal prep in 5 minutes", "Easy breakfast for beginners"],
"language": "en",
"setup_template_unique": "Gh56Ij78Kl"
}
JSON;
$ch = curl_init("https://stepeee.com/public-api/v1/projects/Pq7Rs9Tu1V/concepts/Cx2Yz4Wv6Ut8/titles");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type: application/json",
"Idempotency-Key: 5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"created": [
{ "title_unique": "q8Wm2LzR0pXa", "title_name": "Easy breakfast for beginners", "variation_unique": "Hn4kT7sY1cVb" },
{ "title_unique": "Zr5uP9eK3wQd", "title_name": "Meal prep in 5 minutes", "variation_unique": "Jm8oB2fN6xLe" }
],
"skipped": [
{ "title_name": "Easy breakfast for beginners", "reason": "duplicate" }
]
}
}
⛔ep_contents_destroy_title
⛔ep_contents_destroy_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
project_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_project_unique |
variation_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_variation_unique |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
variation_unique |
string | ⛔f_deleted_variation_unique |
mode |
string | ⛔f_deleted_mode |
delete_at |
string | ⛔f_deleted_delete_at |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 403 | plan_required |
⛔e_plan_required |
| 403 | team_plan_lost |
⛔e_team_plan_lost |
| 403 | readonly |
⛔e_contents_destroy_readonly |
| 404 | not_found |
⛔e_contents_destroy_not_found |
| 409 | automation_running |
⛔e_automation_running |
| 409 | last_variation |
⛔e_last_variation |
| 422 | mode_not_supported |
⛔e_contents_destroy_mode_not_supported |
curl -X DELETE "https://stepeee.com/public-api/v1/projects/Pq7Rs9Tu1V/contents/Hn4kT7sY1cVb" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.request(
"DELETE",
"https://stepeee.com/public-api/v1/projects/Pq7Rs9Tu1V/contents/Hn4kT7sY1cVb",
headers={
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/projects/Pq7Rs9Tu1V/contents/Hn4kT7sY1cVb", {
method: "DELETE",
headers: {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
},
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/projects/Pq7Rs9Tu1V/contents/Hn4kT7sY1cVb")!)
request.httpMethod = "DELETE"
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/projects/Pq7Rs9Tu1V/contents/Hn4kT7sY1cVb"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.method("DELETE", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/projects/Pq7Rs9Tu1V/contents/Hn4kT7sY1cVb");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"variation_unique": "Hn4kT7sY1cVb",
"mode": "blogmode",
"delete_at": "2026-10-24T12:00:00Z"
}
}
⛔group_write_automations_nav_label
⛔group_write_automations_lead
-
⛔ep_automations_store_title
POST /automations -
⛔ep_automations_update_title
PATCH /automations/{auto_unique} -
⛔ep_automations_stop_title
POST /automations/{auto_unique}/stop -
⛔ep_automations_confirm_title
POST /automations/{auto_unique}/confirm
⛔ep_automations_store_title
⛔ep_automations_store_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
variation_uniques |
⛔in_body | string[] | ⛔required_yes | — | ⛔p_auto_variation_uniques |
automation_template_unique |
⛔in_body | string | ⛔required_yes | — | ⛔p_auto_automation_template_unique |
reserved_at |
⛔in_body | string | ⛔required_no | — | ⛔p_auto_reserved_at |
Idempotency-Key |
⛔in_header | string | ⛔required_yes | — | ⛔p_idempotency_key_required |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].auto_unique |
string | ⛔f_auto_auto_unique |
data[].mode |
string | ⛔f_auto_mode |
data[].project |
object | ⛔f_auto_project |
data[].content.variation_unique |
string | ⛔f_content_variation_unique |
data[].content.title |
string | null | ⛔f_content_title |
data[].run_no |
integer | ⛔f_auto_run_no |
data[].status |
string | ⛔f_auto_status |
data[].execution_mode |
string | ⛔f_auto_execution_mode |
data[].phases |
object | ⛔f_auto_phases |
data[].template.setup_template_name |
string | null | ⛔f_auto_setup_template_name |
data[].template.automation_template_name |
string | null | ⛔f_auto_automation_template_name |
data[].reserved_at |
string | null | ⛔f_auto_reserved_at |
data[].executed_at |
string | null | ⛔f_auto_executed_at |
data[].completed_at |
string | null | ⛔f_auto_completed_at |
data[].created_at |
string | ⛔f_auto_created_at |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 403 | plan_required |
⛔e_plan_required |
| 403 | team_plan_lost |
⛔e_team_plan_lost |
| 404 | content_not_found |
⛔e_auto_content_not_found |
| 404 | automation_template_not_found |
⛔e_auto_template_not_found |
| 409 | contents_not_automatable |
⛔e_contents_not_automatable |
| 409 | idempotency_request_in_progress |
⛔e_idempotency_request_in_progress |
| 422 | validation_error |
⛔e_auto_store_invalid |
| 422 | mode_not_supported |
⛔e_auto_mode_not_supported |
| 422 | mixed_modes |
⛔e_auto_mixed_modes |
| 422 | mixed_projects |
⛔e_auto_mixed_projects |
| 422 | automation_template_mode_mismatch |
⛔e_auto_template_mode_mismatch |
| 422 | idempotency_key_required |
⛔e_idempotency_key_required |
| 422 | idempotency_key_invalid |
⛔e_idempotency_key_invalid |
| 422 | idempotency_key_reused |
⛔e_idempotency_key_reused |
| 503 | automation_dispatch_failed |
⛔e_auto_dispatch_failed_start |
curl -X POST "https://stepeee.com/public-api/v1/automations" \
-H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90" \
-d '{
"variation_uniques": ["Ab3dEf6hIj9k", "Lm2nOp5qRs8t"],
"automation_template_unique": "Tm7pL2xQ9z",
"reserved_at": "2030-01-02T12:04:05+09:00"
}'
import requests
body = """{
"variation_uniques": ["Ab3dEf6hIj9k", "Lm2nOp5qRs8t"],
"automation_template_unique": "Tm7pL2xQ9z",
"reserved_at": "2030-01-02T12:04:05+09:00"
}"""
response = requests.request(
"POST",
"https://stepeee.com/public-api/v1/automations",
headers={
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
"Idempotency-Key": "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
},
data=body,
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/automations", {
method: "POST",
headers: {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
"Idempotency-Key": "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
},
body: JSON.stringify({
"variation_uniques": ["Ab3dEf6hIj9k", "Lm2nOp5qRs8t"],
"automation_template_unique": "Tm7pL2xQ9z",
"reserved_at": "2030-01-02T12:04:05+09:00"
}),
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/automations")!)
request.httpMethod = "POST"
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90", forHTTPHeaderField: "Idempotency-Key")
request.httpBody = """
{
"variation_uniques": ["Ab3dEf6hIj9k", "Lm2nOp5qRs8t"],
"automation_template_unique": "Tm7pL2xQ9z",
"reserved_at": "2030-01-02T12:04:05+09:00"
}
""".data(using: .utf8)
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/automations"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.header("Content-Type", "application/json")
.header("Idempotency-Key", "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"variation_uniques": ["Ab3dEf6hIj9k", "Lm2nOp5qRs8t"],
"automation_template_unique": "Tm7pL2xQ9z",
"reserved_at": "2030-01-02T12:04:05+09:00"
}
"""))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$body = <<<'JSON'
{
"variation_uniques": ["Ab3dEf6hIj9k", "Lm2nOp5qRs8t"],
"automation_template_unique": "Tm7pL2xQ9z",
"reserved_at": "2030-01-02T12:04:05+09:00"
}
JSON;
$ch = curl_init("https://stepeee.com/public-api/v1/automations");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type: application/json",
"Idempotency-Key: 5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"auto_unique": "Qw3eRt6yUi",
"mode": "blogmode",
"project": { "project_unique": "Pj8kL3mN2b", "project_name": "My Project" },
"content": { "variation_unique": "Ab3dEf6hIj9k", "title": "My blog title" },
"run_no": 1,
"status": "pending",
"execution_mode": "sequential",
"phases": { "setup": "running", "step1": "not_started", "step2": "not_started", "step3": "not_started" },
"template": { "setup_template_name": null, "automation_template_name": "Morning blog" },
"reserved_at": "2030-01-02T03:04:05Z",
"executed_at": null,
"completed_at": null,
"created_at": "2026-10-21T10:00:00Z"
},
{
"auto_unique": "As4dFg7hJk",
"mode": "blogmode",
"project": { "project_unique": "Pj8kL3mN2b", "project_name": "My Project" },
"content": { "variation_unique": "Lm2nOp5qRs8t", "title": "My blog title" },
"run_no": 1,
"status": "pending",
"execution_mode": "sequential",
"phases": { "setup": "running", "step1": "not_started", "step2": "not_started", "step3": "not_started" },
"template": { "setup_template_name": null, "automation_template_name": "Morning blog" },
"reserved_at": "2030-01-02T03:04:05Z",
"executed_at": null,
"completed_at": null,
"created_at": "2026-10-21T10:00:00Z"
}
]
}
⛔ep_automations_update_title
⛔ep_automations_update_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
auto_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_auto_unique |
reserved_at |
⛔in_body | string | ⛔required_yes | — | ⛔p_auto_reserved_at_new |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
auto_unique |
string | ⛔f_auto_auto_unique |
mode |
string | ⛔f_auto_mode |
project |
object | ⛔f_auto_project |
content.variation_unique |
string | ⛔f_content_variation_unique |
content.title |
string | null | ⛔f_content_title |
run_no |
integer | ⛔f_auto_run_no |
status |
string | ⛔f_auto_status |
execution_mode |
string | ⛔f_auto_execution_mode |
phases |
object | ⛔f_auto_phases |
template.setup_template_name |
string | null | ⛔f_auto_setup_template_name |
template.automation_template_name |
string | null | ⛔f_auto_automation_template_name |
reserved_at |
string | null | ⛔f_auto_reserved_at |
executed_at |
string | null | ⛔f_auto_executed_at |
completed_at |
string | null | ⛔f_auto_completed_at |
created_at |
string | ⛔f_auto_created_at |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 403 | plan_required |
⛔e_plan_required |
| 403 | team_plan_lost |
⛔e_team_plan_lost |
| 404 | not_found |
⛔e_automation_not_found |
| 409 | automation_not_pending |
⛔e_automation_not_pending |
| 422 | validation_error |
⛔e_auto_reserved_at_invalid |
curl -X PATCH "https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi" \
-H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"reserved_at": "2031-05-06T07:08:09+09:00"
}'
import requests
body = """{
"reserved_at": "2031-05-06T07:08:09+09:00"
}"""
response = requests.request(
"PATCH",
"https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi",
headers={
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
data=body,
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi", {
method: "PATCH",
headers: {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({
"reserved_at": "2031-05-06T07:08:09+09:00"
}),
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi")!)
request.httpMethod = "PATCH"
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = """
{
"reserved_at": "2031-05-06T07:08:09+09:00"
}
""".data(using: .utf8)
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.header("Content-Type", "application/json")
.method("PATCH", HttpRequest.BodyPublishers.ofString("""
{
"reserved_at": "2031-05-06T07:08:09+09:00"
}
"""))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$body = <<<'JSON'
{
"reserved_at": "2031-05-06T07:08:09+09:00"
}
JSON;
$ch = curl_init("https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type: application/json",
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"auto_unique": "Qw3eRt6yUi",
"mode": "blogmode",
"project": { "project_unique": "Pj8kL3mN2b", "project_name": "My Project" },
"content": { "variation_unique": "Ab3dEf6hIj9k", "title": "My blog title" },
"run_no": 1,
"status": "pending",
"execution_mode": "sequential",
"phases": { "setup": "running", "step1": "not_started", "step2": "not_started", "step3": "not_started" },
"template": { "setup_template_name": null, "automation_template_name": "Morning blog" },
"reserved_at": "2031-05-05T22:08:09Z",
"executed_at": null,
"completed_at": null,
"created_at": "2026-10-21T10:00:00Z"
}
}
⛔ep_automations_stop_title
⛔ep_automations_stop_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
auto_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_auto_unique |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
auto_unique |
string | ⛔f_auto_auto_unique |
mode |
string | ⛔f_auto_mode |
project |
object | ⛔f_auto_project |
content.variation_unique |
string | ⛔f_content_variation_unique |
content.title |
string | null | ⛔f_content_title |
run_no |
integer | ⛔f_auto_run_no |
status |
string | ⛔f_auto_status |
execution_mode |
string | ⛔f_auto_execution_mode |
phases |
object | ⛔f_auto_phases |
template.setup_template_name |
string | null | ⛔f_auto_setup_template_name |
template.automation_template_name |
string | null | ⛔f_auto_automation_template_name |
reserved_at |
string | null | ⛔f_auto_reserved_at |
executed_at |
string | null | ⛔f_auto_executed_at |
completed_at |
string | null | ⛔f_auto_completed_at |
created_at |
string | ⛔f_auto_created_at |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_automation_not_found |
curl -X POST "https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi/stop" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.request(
"POST",
"https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi/stop",
headers={
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi/stop", {
method: "POST",
headers: {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
},
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi/stop")!)
request.httpMethod = "POST"
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi/stop"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi/stop");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"auto_unique": "Qw3eRt6yUi",
"mode": "blogmode",
"project": { "project_unique": "Pj8kL3mN2b", "project_name": "My Project" },
"content": { "variation_unique": "Ab3dEf6hIj9k", "title": "My blog title" },
"run_no": 1,
"status": "stopped",
"execution_mode": "sequential",
"phases": { "setup": "running", "step1": "not_started", "step2": "not_started", "step3": "not_started" },
"template": { "setup_template_name": null, "automation_template_name": "Morning blog" },
"reserved_at": "2030-01-02T03:04:05Z",
"executed_at": null,
"completed_at": "2026-10-21T10:05:00Z",
"created_at": "2026-10-21T10:00:00Z"
}
}
⛔ep_automations_confirm_title
⛔ep_automations_confirm_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
auto_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_auto_unique |
Idempotency-Key |
⛔in_header | string | ⛔required_no | — | ⛔p_idempotency_key_optional |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
auto_unique |
string | ⛔f_auto_auto_unique |
mode |
string | ⛔f_auto_mode |
project |
object | ⛔f_auto_project |
content.variation_unique |
string | ⛔f_content_variation_unique |
content.title |
string | null | ⛔f_content_title |
run_no |
integer | ⛔f_auto_run_no |
status |
string | ⛔f_auto_status |
execution_mode |
string | ⛔f_auto_execution_mode |
phases |
object | ⛔f_auto_phases |
template.setup_template_name |
string | null | ⛔f_auto_setup_template_name |
template.automation_template_name |
string | null | ⛔f_auto_automation_template_name |
reserved_at |
string | null | ⛔f_auto_reserved_at |
executed_at |
string | null | ⛔f_auto_executed_at |
completed_at |
string | null | ⛔f_auto_completed_at |
created_at |
string | ⛔f_auto_created_at |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 403 | plan_required |
⛔e_plan_required |
| 403 | team_plan_lost |
⛔e_team_plan_lost |
| 404 | not_found |
⛔e_automation_not_found |
| 409 | automation_not_waiting_confirmation |
⛔e_automation_not_waiting_confirmation |
| 409 | content_readonly |
⛔e_auto_content_readonly |
| 409 | idempotency_request_in_progress |
⛔e_idempotency_request_in_progress |
| 422 | idempotency_key_invalid |
⛔e_idempotency_key_invalid |
| 422 | idempotency_key_reused |
⛔e_idempotency_key_reused |
| 503 | automation_dispatch_failed |
⛔e_auto_dispatch_failed_confirm |
curl -X POST "https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi/confirm" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx" \ -H "Idempotency-Key: 5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90"
import requests
response = requests.request(
"POST",
"https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi/confirm",
headers={
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Idempotency-Key": "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi/confirm", {
method: "POST",
headers: {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Idempotency-Key": "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
},
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi/confirm")!)
request.httpMethod = "POST"
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
request.setValue("5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90", forHTTPHeaderField: "Idempotency-Key")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi/confirm"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.header("Idempotency-Key", "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90")
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/automations/Qw3eRt6yUi/confirm");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
"Idempotency-Key: 5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"auto_unique": "Qw3eRt6yUi",
"mode": "carouselmode",
"project": { "project_unique": "Pj8kL3mN2b", "project_name": "My Project" },
"content": { "variation_unique": "Ab3dEf6hIj9k", "title": "My carousel title" },
"run_no": 1,
"status": "pending",
"execution_mode": "parallel",
"phases": { "setup": "done", "step1": "done", "step2": "done", "step3": "running" },
"template": { "setup_template_name": null, "automation_template_name": "Weekly carousel" },
"reserved_at": null,
"executed_at": "2026-10-21T09:00:00Z",
"completed_at": null,
"created_at": "2026-10-21T09:00:00Z"
}
}
⛔group_write_posts_nav_label
⛔group_write_posts_lead
-
⛔ep_post_confirms_list_title
GET /post-confirms -
⛔ep_post_schedules_approve_title
POST /post-schedules/{schedule_unique}/approve -
⛔ep_post_schedules_post_now_title
POST /post-schedules/{schedule_unique}/post-now -
⛔ep_post_schedules_update_title
PATCH /post-schedules/{schedule_unique} -
⛔ep_post_schedules_destroy_title
DELETE /post-schedules/{schedule_unique}
⛔ep_post_confirms_list_title
⛔ep_post_confirms_list_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
state |
⛔in_query | string | ⛔required_no | — | ⛔p_pc_state |
project_unique |
⛔in_query | string | ⛔required_no | — | ⛔p_pc_project_unique |
page |
⛔in_query | integer | ⛔required_no | 1 |
⛔p_page |
per_page |
⛔in_query | integer | ⛔required_no | 20 |
⛔p_per_page |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].schedule_unique |
string | ⛔f_pc_schedule_unique |
data[].state |
string | null | ⛔f_pc_state |
data[].confirm_state |
string | ⛔f_pc_confirm_state |
data[].confirm_mode |
string | ⛔f_pc_confirm_mode |
data[].can_approve |
boolean | ⛔f_pc_can_approve |
data[].can_post_now |
boolean | ⛔f_pc_can_post_now |
data[].can_reschedule |
boolean | ⛔f_pc_can_reschedule |
data[].scheduled_at |
string | ⛔f_sch_scheduled_at |
data[].scheduled_at_local |
string | ⛔f_sch_scheduled_at_local |
data[].timezone |
string | ⛔f_sch_timezone |
data[].deadline_at |
string | null | ⛔f_pc_deadline_at |
data[].project |
object | ⛔f_auto_project |
data[].concept |
object | ⛔f_pc_concept |
data[].variation_unique |
string | ⛔f_content_variation_unique |
data[].post_unique |
string | ⛔f_pc_post_unique |
data[].post_type |
string | ⛔f_sch_post_type |
data[].text |
string | ⛔f_pc_text |
data[].thread[] |
object | ⛔f_pc_thread |
data[].image |
object | null | ⛔f_pc_image |
meta.total |
integer | ⛔f_meta_total |
meta.current_page |
integer | ⛔f_meta_current_page |
meta.per_page |
integer | ⛔f_meta_per_page |
meta.last_page |
integer | ⛔f_meta_last_page |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_project_not_found |
| 422 | validation_error |
⛔e_invalid_params |
curl "https://stepeee.com/public-api/v1/post-confirms?state=upcoming" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/post-confirms?state=upcoming",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/post-confirms?state=upcoming", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/post-confirms?state=upcoming")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/post-confirms?state=upcoming"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/post-confirms?state=upcoming");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"schedule_unique": "aB3dE5fG7hJ9",
"state": "upcoming",
"confirm_state": "awaiting",
"confirm_mode": "required",
"can_approve": true,
"can_post_now": false,
"can_reschedule": false,
"scheduled_at": "2026-10-19T13:00:00Z",
"scheduled_at_local": "2026-10-19T22:00:00",
"timezone": "Asia/Tokyo",
"deadline_at": "2026-10-19T13:00:00Z",
"project": { "project_unique": "Pq7Rs9Tu1V", "project_name": "My brand" },
"concept": { "concept_unique": "Cx2Yz4Wv6Ut8", "concept_name": "Morning tips" },
"variation_unique": "Vr5Ws7Xt9Yu1",
"post_unique": "Ps3Qt5Ru7Sv9",
"post_type": "knowhow",
"text": "First post of the thread",
"thread": [
{ "text": "Second post", "image": null },
{ "text": "Third post", "image": { "url": "https://...", "expires_at": "2026-10-19T13:00:00Z" } }
],
"image": null
}
],
"meta": { "total": 1, "current_page": 1, "per_page": 20, "last_page": 1 }
}
⛔ep_post_schedules_approve_title
⛔ep_post_schedules_approve_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
schedule_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_schedule_unique |
Idempotency-Key |
⛔in_header | string | ⛔required_no | — | ⛔p_idempotency_key_optional |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
schedule_unique / state / … / image |
— | ⛔f_pc_same_as_list |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 403 | plan_required |
⛔e_plan_required |
| 403 | team_plan_lost |
⛔e_team_plan_lost |
| 404 | post_schedule_not_found |
⛔e_post_schedule_not_found |
| 409 | confirm_expired |
⛔e_confirm_expired |
| 409 | confirm_not_pending |
⛔e_confirm_not_pending |
| 409 | idempotency_request_in_progress |
⛔e_idempotency_request_in_progress |
| 422 | idempotency_key_invalid |
⛔e_idempotency_key_invalid |
| 422 | idempotency_key_reused |
⛔e_idempotency_key_reused |
curl -X POST "https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9/approve" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx" \ -H "Idempotency-Key: 5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90"
import requests
response = requests.request(
"POST",
"https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9/approve",
headers={
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Idempotency-Key": "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9/approve", {
method: "POST",
headers: {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Idempotency-Key": "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
},
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9/approve")!)
request.httpMethod = "POST"
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
request.setValue("5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90", forHTTPHeaderField: "Idempotency-Key")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9/approve"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.header("Idempotency-Key", "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90")
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9/approve");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
"Idempotency-Key: 5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"schedule_unique": "aB3dE5fG7hJ9",
"state": null,
"confirm_state": "confirmed",
"confirm_mode": "required",
"can_approve": false,
"can_post_now": false,
"can_reschedule": false,
"scheduled_at": "2026-10-19T13:00:00Z",
"scheduled_at_local": "2026-10-19T22:00:00",
"timezone": "Asia/Tokyo",
"deadline_at": null,
"project": { "project_unique": "Pq7Rs9Tu1V", "project_name": "My brand" },
"concept": { "concept_unique": "Cx2Yz4Wv6Ut8", "concept_name": "Morning tips" },
"variation_unique": "Vr5Ws7Xt9Yu1",
"post_unique": "Ps3Qt5Ru7Sv9",
"post_type": "knowhow",
"text": "First post of the thread",
"thread": [
{ "text": "Second post", "image": null },
{ "text": "Third post", "image": { "url": "https://...", "expires_at": "2026-10-19T13:00:00Z" } }
],
"image": null
}
}
⛔ep_post_schedules_post_now_title
⛔ep_post_schedules_post_now_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
schedule_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_schedule_unique |
allow_close_slot |
⛔in_body | boolean | ⛔required_no | false |
⛔p_allow_close_slot |
Idempotency-Key |
⛔in_header | string | ⛔required_no | — | ⛔p_idempotency_key_optional |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
schedule_unique / state / … / image |
— | ⛔f_pc_same_as_list |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 403 | plan_required |
⛔e_plan_required |
| 403 | team_plan_lost |
⛔e_team_plan_lost |
| 403 | resource_readonly |
⛔e_resource_readonly |
| 404 | post_schedule_not_found |
⛔e_post_schedule_not_found |
| 409 | confirm_not_expired |
⛔e_confirm_not_expired |
| 409 | schedule_close_to_other_slot |
⛔e_schedule_close_to_other_slot |
| 409 | schedule_locked |
⛔e_schedule_locked |
| 409 | schedule_processing |
⛔e_schedule_processing |
| 409 | idempotency_request_in_progress |
⛔e_idempotency_request_in_progress |
| 422 | validation_error |
⛔e_allow_close_slot_invalid |
| 422 | idempotency_key_invalid |
⛔e_idempotency_key_invalid |
| 422 | idempotency_key_reused |
⛔e_idempotency_key_reused |
curl -X POST "https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9/post-now" \
-H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90" \
-d '{
"allow_close_slot": true
}'
import requests
body = """{
"allow_close_slot": true
}"""
response = requests.request(
"POST",
"https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9/post-now",
headers={
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
"Idempotency-Key": "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
},
data=body,
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9/post-now", {
method: "POST",
headers: {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
"Idempotency-Key": "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
},
body: JSON.stringify({
"allow_close_slot": true
}),
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9/post-now")!)
request.httpMethod = "POST"
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90", forHTTPHeaderField: "Idempotency-Key")
request.httpBody = """
{
"allow_close_slot": true
}
""".data(using: .utf8)
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9/post-now"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.header("Content-Type", "application/json")
.header("Idempotency-Key", "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"allow_close_slot": true
}
"""))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$body = <<<'JSON'
{
"allow_close_slot": true
}
JSON;
$ch = curl_init("https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9/post-now");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type: application/json",
"Idempotency-Key: 5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"schedule_unique": "aB3dE5fG7hJ9",
"state": null,
"confirm_state": "confirmed",
"confirm_mode": "required",
"can_approve": false,
"can_post_now": false,
"can_reschedule": false,
"scheduled_at": "2026-10-21T12:01:00Z",
"scheduled_at_local": "2026-10-21T21:01:00",
"timezone": "Asia/Tokyo",
"deadline_at": null,
"project": { "project_unique": "Pq7Rs9Tu1V", "project_name": "My brand" },
"concept": { "concept_unique": "Cx2Yz4Wv6Ut8", "concept_name": "Morning tips" },
"variation_unique": "Vr5Ws7Xt9Yu1",
"post_unique": "Ps3Qt5Ru7Sv9",
"post_type": "knowhow",
"text": "First post of the thread",
"thread": [
{ "text": "Second post", "image": null },
{ "text": "Third post", "image": { "url": "https://...", "expires_at": "2026-10-19T13:00:00Z" } }
],
"image": null
}
}
⛔ep_post_schedules_update_title
⛔ep_post_schedules_update_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
schedule_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_schedule_unique |
scheduled_at |
⛔in_body | string | ⛔required_yes | — | ⛔p_pc_scheduled_at |
allow_close_slot |
⛔in_body | boolean | ⛔required_no | false |
⛔p_allow_close_slot |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
schedule_unique / state / … / image |
— | ⛔f_pc_same_as_list |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 403 | plan_required |
⛔e_plan_required |
| 403 | team_plan_lost |
⛔e_team_plan_lost |
| 403 | resource_readonly |
⛔e_resource_readonly |
| 404 | post_schedule_not_found |
⛔e_post_schedule_not_found |
| 409 | confirm_not_expired |
⛔e_confirm_not_expired |
| 409 | schedule_close_to_other_slot |
⛔e_schedule_close_to_other_slot |
| 409 | schedule_locked |
⛔e_schedule_locked |
| 409 | schedule_processing |
⛔e_schedule_processing |
| 422 | confirm_reschedule_past |
⛔e_confirm_reschedule_past |
| 422 | validation_error |
⛔e_pc_update_invalid |
curl -X PATCH "https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9" \
-H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"scheduled_at": "2026-10-22T09:30:00-05:00",
"allow_close_slot": false
}'
import requests
body = """{
"scheduled_at": "2026-10-22T09:30:00-05:00",
"allow_close_slot": false
}"""
response = requests.request(
"PATCH",
"https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9",
headers={
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
data=body,
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9", {
method: "PATCH",
headers: {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({
"scheduled_at": "2026-10-22T09:30:00-05:00",
"allow_close_slot": false
}),
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9")!)
request.httpMethod = "PATCH"
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = """
{
"scheduled_at": "2026-10-22T09:30:00-05:00",
"allow_close_slot": false
}
""".data(using: .utf8)
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.header("Content-Type", "application/json")
.method("PATCH", HttpRequest.BodyPublishers.ofString("""
{
"scheduled_at": "2026-10-22T09:30:00-05:00",
"allow_close_slot": false
}
"""))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$body = <<<'JSON'
{
"scheduled_at": "2026-10-22T09:30:00-05:00",
"allow_close_slot": false
}
JSON;
$ch = curl_init("https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type: application/json",
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"schedule_unique": "aB3dE5fG7hJ9",
"state": null,
"confirm_state": "confirmed",
"confirm_mode": "required",
"can_approve": false,
"can_post_now": false,
"can_reschedule": false,
"scheduled_at": "2026-10-22T14:30:00Z",
"scheduled_at_local": "2026-10-22T23:30:00",
"timezone": "Asia/Tokyo",
"deadline_at": null,
"project": { "project_unique": "Pq7Rs9Tu1V", "project_name": "My brand" },
"concept": { "concept_unique": "Cx2Yz4Wv6Ut8", "concept_name": "Morning tips" },
"variation_unique": "Vr5Ws7Xt9Yu1",
"post_unique": "Ps3Qt5Ru7Sv9",
"post_type": "knowhow",
"text": "First post of the thread",
"thread": [
{ "text": "Second post", "image": null },
{ "text": "Third post", "image": { "url": "https://...", "expires_at": "2026-10-19T13:00:00Z" } }
],
"image": null
}
}
⛔ep_post_schedules_destroy_title
⛔ep_post_schedules_destroy_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
schedule_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_schedule_unique |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
schedule_unique |
string | ⛔f_pc_deleted_schedule_unique |
deleted |
boolean | ⛔f_deleted_flag |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 403 | plan_required |
⛔e_plan_required |
| 403 | team_plan_lost |
⛔e_team_plan_lost |
| 403 | resource_readonly |
⛔e_resource_readonly |
| 404 | post_schedule_not_found |
⛔e_post_schedule_not_found |
| 409 | post_posting_locked |
⛔e_post_posting_locked |
curl -X DELETE "https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.request(
"DELETE",
"https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9",
headers={
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9", {
method: "DELETE",
headers: {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
},
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9")!)
request.httpMethod = "DELETE"
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.method("DELETE", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/post-schedules/aB3dE5fG7hJ9");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"schedule_unique": "aB3dE5fG7hJ9",
"deleted": true
}
}
⛔group_write_webhooks_nav_label
⛔group_write_webhooks_lead
-
⛔ep_webhooks_list_title
GET /webhooks -
⛔ep_webhooks_store_title
POST /webhooks -
⛔ep_webhooks_destroy_title
DELETE /webhooks/{webhook_unique} -
⛔ep_webhooks_test_title
POST /webhooks/{webhook_unique}/test
⛔ep_webhooks_list_title
⛔ep_webhooks_list_desc
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
data[].webhook_unique |
string | ⛔f_wh_webhook_unique |
data[].url |
string | ⛔f_wh_url |
data[].events |
string[] | ⛔f_wh_events |
data[].description |
string | null | ⛔f_wh_description |
data[].is_active |
boolean | ⛔f_wh_is_active |
data[].last_delivery_at |
string | null | ⛔f_wh_last_delivery_at |
data[].last_delivery_status |
string | null | ⛔f_wh_last_delivery_status |
data[].last_response_status |
integer | null | ⛔f_wh_last_response_status |
data[].last_error |
string | null | ⛔f_wh_last_error |
data[].created_at |
string | ⛔f_created_at |
curl "https://stepeee.com/public-api/v1/webhooks" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.get(
"https://stepeee.com/public-api/v1/webhooks",
headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/webhooks", {
headers: { Authorization: "Bearer sk_xxxxxxxxxxxxxxxx" },
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/webhooks")!)
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/webhooks"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/webhooks");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": [
{
"webhook_unique": "Xk3pQ9vLm2Ta",
"url": "https://example.com/hooks/stepeee",
"events": ["automation.completed", "post.published"],
"description": "production hook",
"is_active": true,
"last_delivery_at": "2026-10-21T12:01:00Z",
"last_delivery_status": "failed",
"last_response_status": 503,
"last_error": "non_2xx_response",
"created_at": "2026-10-20T09:00:00Z"
}
]
}
⛔ep_webhooks_store_title
⛔ep_webhooks_store_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
url |
⛔in_body | string | ⛔required_yes | — | ⛔p_wh_url |
events |
⛔in_body | string[] | ⛔required_yes | — | ⛔p_wh_events |
description |
⛔in_body | string | null | ⛔required_no | — | ⛔p_wh_description |
Idempotency-Key |
⛔in_header | string | ⛔required_no | — | ⛔p_idempotency_key_optional |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
webhook_unique |
string | ⛔f_wh_webhook_unique |
url |
string | ⛔f_wh_url |
events |
string[] | ⛔f_wh_events |
description |
string | null | ⛔f_wh_description |
is_active |
boolean | ⛔f_wh_is_active |
last_delivery_at |
string | null | ⛔f_wh_last_delivery_at |
last_delivery_status |
string | null | ⛔f_wh_last_delivery_status |
last_response_status |
integer | null | ⛔f_wh_last_response_status |
last_error |
string | null | ⛔f_wh_last_error |
created_at |
string | ⛔f_created_at |
secret |
string | ⛔f_wh_secret |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 403 | plan_required |
⛔e_plan_required |
| 403 | team_plan_lost |
⛔e_team_plan_lost |
| 409 | webhook_limit_reached |
⛔e_webhook_limit_reached |
| 409 | idempotency_request_in_progress |
⛔e_idempotency_request_in_progress |
| 422 | validation_error |
⛔e_webhook_invalid |
| 422 | idempotency_key_invalid |
⛔e_idempotency_key_invalid |
| 422 | idempotency_key_reused |
⛔e_idempotency_key_reused |
curl -X POST "https://stepeee.com/public-api/v1/webhooks" \
-H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90" \
-d '{
"url": "https://example.com/hooks/stepeee",
"events": ["automation.completed", "post.published"],
"description": "production hook"
}'
import requests
body = """{
"url": "https://example.com/hooks/stepeee",
"events": ["automation.completed", "post.published"],
"description": "production hook"
}"""
response = requests.request(
"POST",
"https://stepeee.com/public-api/v1/webhooks",
headers={
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
"Idempotency-Key": "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
},
data=body,
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/webhooks", {
method: "POST",
headers: {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
"Idempotency-Key": "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
},
body: JSON.stringify({
"url": "https://example.com/hooks/stepeee",
"events": ["automation.completed", "post.published"],
"description": "production hook"
}),
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/webhooks")!)
request.httpMethod = "POST"
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90", forHTTPHeaderField: "Idempotency-Key")
request.httpBody = """
{
"url": "https://example.com/hooks/stepeee",
"events": ["automation.completed", "post.published"],
"description": "production hook"
}
""".data(using: .utf8)
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/webhooks"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.header("Content-Type", "application/json")
.header("Idempotency-Key", "5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"url": "https://example.com/hooks/stepeee",
"events": ["automation.completed", "post.published"],
"description": "production hook"
}
"""))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$body = <<<'JSON'
{
"url": "https://example.com/hooks/stepeee",
"events": ["automation.completed", "post.published"],
"description": "production hook"
}
JSON;
$ch = curl_init("https://stepeee.com/public-api/v1/webhooks");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
"Content-Type: application/json",
"Idempotency-Key: 5f0c2d8e-7a41-4c1b-9d3e-2b8f6a1c4e90",
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"webhook_unique": "Xk3pQ9vLm2Ta",
"url": "https://example.com/hooks/stepeee",
"events": ["automation.completed", "post.published"],
"description": "production hook",
"is_active": true,
"last_delivery_at": null,
"last_delivery_status": null,
"last_response_status": null,
"last_error": null,
"created_at": "2026-10-21T12:00:00Z",
"secret": "whsec_5f0c2a9e8b7d4c3a1f6e9d8c7b6a5f4e3d2c1b0a9f8e7d6c"
}
}
⛔ep_webhooks_destroy_title
⛔ep_webhooks_destroy_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
webhook_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_webhook_unique |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
webhook_unique |
string | ⛔f_wh_deleted_webhook_unique |
deleted |
boolean | ⛔f_deleted_flag |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 404 | not_found |
⛔e_webhook_not_found |
curl -X DELETE "https://stepeee.com/public-api/v1/webhooks/Xk3pQ9vLm2Ta" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.request(
"DELETE",
"https://stepeee.com/public-api/v1/webhooks/Xk3pQ9vLm2Ta",
headers={
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/webhooks/Xk3pQ9vLm2Ta", {
method: "DELETE",
headers: {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
},
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/webhooks/Xk3pQ9vLm2Ta")!)
request.httpMethod = "DELETE"
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/webhooks/Xk3pQ9vLm2Ta"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.method("DELETE", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/webhooks/Xk3pQ9vLm2Ta");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"webhook_unique": "Xk3pQ9vLm2Ta",
"deleted": true
}
}
⛔ep_webhooks_test_title
⛔ep_webhooks_test_desc
| ⛔th_name | ⛔th_in | ⛔th_type | ⛔th_required | ⛔th_default | ⛔th_desc |
|---|---|---|---|---|---|
webhook_unique |
⛔in_path | string | ⛔required_yes | — | ⛔p_webhook_unique |
| ⛔th_field | ⛔th_type | ⛔th_desc |
|---|---|---|
delivered |
boolean | ⛔f_wh_test_delivered |
response_status |
integer | null | ⛔f_wh_test_response_status |
error |
string | null | ⛔f_wh_test_error |
| ⛔th_status | ⛔th_code | ⛔th_when |
|---|---|---|
| 403 | plan_required |
⛔e_plan_required |
| 403 | team_plan_lost |
⛔e_team_plan_lost |
| 404 | not_found |
⛔e_webhook_not_found |
curl -X POST "https://stepeee.com/public-api/v1/webhooks/Xk3pQ9vLm2Ta/test" \ -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
import requests
response = requests.request(
"POST",
"https://stepeee.com/public-api/v1/webhooks/Xk3pQ9vLm2Ta/test",
headers={
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
},
)
print(response.json())
const response = await fetch("https://stepeee.com/public-api/v1/webhooks/Xk3pQ9vLm2Ta/test", {
method: "POST",
headers: {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx",
},
});
const data = await response.json();
console.log(data);
var request = URLRequest(url: URL(string: "https://stepeee.com/public-api/v1/webhooks/Xk3pQ9vLm2Ta/test")!)
request.httpMethod = "POST"
request.setValue("Bearer sk_xxxxxxxxxxxxxxxx", forHTTPHeaderField: "Authorization")
let (data, _) = try await URLSession.shared.data(for: request)
print(String(data: data, encoding: .utf8)!)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://stepeee.com/public-api/v1/webhooks/Xk3pQ9vLm2Ta/test"))
.header("Authorization", "Bearer sk_xxxxxxxxxxxxxxxx")
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
$ch = curl_init("https://stepeee.com/public-api/v1/webhooks/Xk3pQ9vLm2Ta/test");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer sk_xxxxxxxxxxxxxxxx",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
{
"data": {
"delivered": false,
"response_status": 500,
"error": "non_2xx_response"
}
}
⛔webhook_events_heading
⛔webhook_events_lead
| ⛔webhook_th_event | Jelentés |
|---|---|
automation.waiting_confirmation | ⛔webhook_event_automation_waiting_confirmation |
automation.completed | ⛔webhook_event_automation_completed |
automation.failed | ⛔webhook_event_automation_failed |
post.published | ⛔webhook_event_post_published |
post.failed | ⛔webhook_event_post_failed |
post.confirm_required | ⛔webhook_event_post_confirm_required |
webhook.test | ⛔webhook_event_webhook_test |
⛔webhook_payload_heading
⛔webhook_payload_desc
| ⛔webhook_th_event | ⛔webhook_th_data |
|---|---|
automation.* | ⛔webhook_data_automation |
post.publishedpost.failed | ⛔webhook_data_post |
post.confirm_required | ⛔webhook_data_post_confirm_required |
webhook.test | {"webhook_unique": "…"} |
⛔webhook_payload_example_heading
automation.failed{
"id": "evt_Q2x8Lr0aZk9MvB3pT7cYw1Nd",
"type": "automation.failed",
"created_at": "2026-10-21T12:01:03Z",
"data": {
"auto_unique": "a8Kd02LmQz",
"mode": "blogmode",
"project": { "project_unique": "Pj7Xc2Lq9W", "project_name": "My Project" },
"content": { "variation_unique": "Vb3Nq8Ls1Kd0", "title": "How to start" },
"run_no": 2,
"status": "token_shortage",
"execution_mode": "sequential",
"phases": { "setup": "done", "step1": "done", "step2": "running", "step3": "not_started" },
"template": { "setup_template_name": "Default", "automation_template_name": null },
"reserved_at": null,
"executed_at": "2026-10-21T11:40:00Z",
"completed_at": "2026-10-21T12:00:41Z",
"created_at": "2026-10-21T11:39:58Z"
}
}
post.published{
"id": "evt_7hT2mWq9Zp3LxR8cVb1Nk5Ds",
"type": "post.published",
"created_at": "2026-10-21T12:02:10Z",
"data": {
"publication_unique": "Lg4Hs9Pq2Wx7",
"mode": "moviemode",
"project": { "project_unique": "Pj7Xc2Lq9W", "project_name": "My Project" },
"content": { "variation_unique": "Mv8Kq2Zt5Rb1", "title": "5 tips" },
"platform": "youtube",
"account": { "account_unique": "Ac1Bd2Ef3Gh4", "name": "My Channel" },
"status": "success",
"post_url": "https://www.youtube.com/watch?v=xxxxxxxx",
"error_code": null,
"is_automation": true,
"posted_at": "2026-10-21T12:01:55Z",
"created_at": "2026-10-21T12:01:20Z"
}
}
post.failed{
"id": "evt_9Zq1Lm4Xc7Vb2Nk8Ds3Pt6Wr",
"type": "post.failed",
"created_at": "2026-10-21T09:00:40Z",
"data": {
"publication_unique": "Pp5Kd8Lw2Qz9",
"mode": "postmode",
"project": { "project_unique": "Pj7Xc2Lq9W", "project_name": "My Project" },
"content": { "variation_unique": "Pv4Lk9Qz2Wx6", "title": "My X concept" },
"platform": "x",
"account": null,
"status": "failed",
"post_url": null,
"error_code": "token_expired",
"is_automation": true,
"posted_at": null,
"created_at": "2026-10-20T21:00:12Z",
"schedule_unique": "Sc6Hj1Kl8Mn3"
}
}
post.confirm_required{
"id": "evt_3Kd8Lq2Wz7Xc1Vb9Nm4Pt6Rs",
"type": "post.confirm_required",
"created_at": "2026-10-19T08:15:02Z",
"data": {
"schedule_unique": "aB3dE5fG7hJ9",
"state": "upcoming",
"confirm_state": "awaiting",
"confirm_mode": "required",
"can_approve": true,
"can_post_now": false,
"can_reschedule": false,
"scheduled_at": "2026-10-19T13:00:00Z",
"scheduled_at_local": "2026-10-19T22:00:00",
"timezone": "Asia/Tokyo",
"deadline_at": "2026-10-19T13:00:00Z",
"project": { "project_unique": "Pq7Rs9Tu1V", "project_name": "My brand" },
"concept": { "concept_unique": "Cx2Yz4Wv6Ut8", "concept_name": "Morning tips" },
"variation_unique": "Vr5Ws7Xt9Yu1",
"post_unique": "Ps3Qt5Ru7Sv9",
"post_type": "knowhow",
"text": "First post of the thread",
"thread": [
{ "text": "Second post", "image": null }
],
"image": { "url": "https://...", "expires_at": "2026-10-19T09:15:02Z" }
}
}
webhook.test{
"id": "evt_Q2x8Lr0aZk9MvB3pT7cYw1Nd",
"type": "webhook.test",
"created_at": "2026-10-21T12:00:00Z",
"data": { "webhook_unique": "Xk3pQ9vLm2Ta" }
}
⛔webhook_headers_heading
| ⛔webhook_th_header | ⛔th_desc |
|---|---|
Content-Type: application/json | ⛔webhook_header_content_type |
Stepeee-Signature: t=1792584000,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd | ⛔webhook_header_signature |
Stepeee-Event-Id: evt_Q2x8Lr0aZk9MvB3pT7cYw1Nd | ⛔webhook_header_event_id |
Stepeee-Event-Type: automation.failed | ⛔webhook_header_event_type |
User-Agent: Stepeee-Webhooks/1.0 | ⛔webhook_header_user_agent |
⛔webhook_verify_heading
⛔webhook_verify_lead
- ⛔webhook_verify_step1
- ⛔webhook_verify_step2
- ⛔webhook_verify_step3
- ⛔webhook_verify_step4
- ⛔webhook_verify_step5
- ⛔webhook_verify_step6
⛔webhook_verify_code_heading
import hmac, hashlib, time
def verify(body: bytes, header: str, secret: str, tolerance: int = 300) -> bool:
parts = dict(p.split("=", 1) for p in header.split(","))
t, v1 = parts.get("t"), parts.get("v1")
if not t or not v1 or abs(time.time() - int(t)) > tolerance:
return False
expected = hmac.new(secret.encode(), f"{t}.".encode() + body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, v1)
# Flask: verify(request.get_data(), request.headers["Stepeee-Signature"], SECRET)
const crypto = require("crypto");
function verify(rawBody, header, secret, toleranceSec = 300) {
const parts = Object.fromEntries(header.split(",").map((p) => p.split("=", 2)));
const t = parts.t, v1 = parts.v1;
if (!t || !v1 || Math.abs(Date.now() / 1000 - Number(t)) > toleranceSec) return false;
const expected = crypto.createHmac("sha256", secret).update(`${t}.`).update(rawBody).digest("hex");
return v1.length === expected.length && crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}
// Express: receive the body as raw bytes with express.raw()
app.post("/hooks/stepeee", express.raw({ type: "application/json" }), (req, res) => {
if (!verify(req.body, req.get("Stepeee-Signature"), process.env.STEPEEE_WEBHOOK_SECRET)) return res.sendStatus(400);
const event = JSON.parse(req.body.toString("utf8"));
res.sendStatus(200);
});
function verifyStepeeeSignature(string $body, string $header, string $secret, int $tolerance = 300): bool
{
$parts = [];
foreach (explode(',', $header) as $part) {
[$k, $v] = array_pad(explode('=', $part, 2), 2, '');
$parts[$k] = $v;
}
if (! isset($parts['t'], $parts['v1']) || abs(time() - (int) $parts['t']) > $tolerance) {
return false;
}
$expected = hash_hmac('sha256', $parts['t'].'.'.$body, $secret);
return hash_equals($expected, $parts['v1']);
}
$ok = verifyStepeeeSignature(file_get_contents('php://input'), $_SERVER['HTTP_STEPEEE_SIGNATURE'] ?? '', $secret);
# BODY: raw request body, T: t from Stepeee-Signature, SECRET: whsec_...
printf '%s.%s' "$T" "$BODY" | openssl dgst -sha256 -hmac "$SECRET" -hex | awk '{print $NF}'
# The signature is valid if the output equals v1
⛔webhook_retry_heading
⛔webhook_retry_desc
⛔webhook_duplicate_desc
⛔webhook_destination_heading
⛔webhook_destination_desc