curl --request POST \
--url https://api.geekidea.ai/v1/workflow_runs/{id}/steps/{stepKey}/redo \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.geekidea.ai/v1/workflow_runs/{id}/steps/{stepKey}/redo"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.geekidea.ai/v1/workflow_runs/{id}/steps/{stepKey}/redo', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "run_0192f1c3a7b87c3e9a4f5b6c7d8e9f01",
"object": "workflow.run",
"workflow": "geekidea/drama-episode",
"status": "running",
"progress": 40,
"auto_continue": true,
"budget_usd": 123,
"model_cost_usd": 123,
"fee_usd": 123,
"cost_usd": 123,
"held_usd": 123,
"error_code": "<string>",
"steps": [
{
"key": "storyboard",
"status": "succeeded",
"attempt": 1,
"error_code": "workflow_charge_exhausted",
"started_at": 123,
"finished_at": 123,
"confirmed_at": 123
}
],
"created_at": 123,
"finished_at": 123
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}Redo a step
Resets the step and every step that depends on it, holds the cost of running them again and starts. Fees and model costs of earlier runs of these steps are not refunded. Not allowed while the run is running or after it was cancelled (409 workflow_invalid_state).
curl --request POST \
--url https://api.geekidea.ai/v1/workflow_runs/{id}/steps/{stepKey}/redo \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.geekidea.ai/v1/workflow_runs/{id}/steps/{stepKey}/redo"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.geekidea.ai/v1/workflow_runs/{id}/steps/{stepKey}/redo', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "run_0192f1c3a7b87c3e9a4f5b6c7d8e9f01",
"object": "workflow.run",
"workflow": "geekidea/drama-episode",
"status": "running",
"progress": 40,
"auto_continue": true,
"budget_usd": 123,
"model_cost_usd": 123,
"fee_usd": 123,
"cost_usd": 123,
"held_usd": 123,
"error_code": "<string>",
"steps": [
{
"key": "storyboard",
"status": "succeeded",
"attempt": 1,
"error_code": "workflow_charge_exhausted",
"started_at": 123,
"finished_at": 123,
"confirmed_at": 123
}
],
"created_at": 123,
"finished_at": 123
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}{
"error": {
"message": "The model does not exist or you do not have access to it.",
"type": "not_found_error",
"param": "model",
"code": "model_not_found",
"retryable": false,
"errors": [
{
"param": "messages",
"code": "missing_parameter",
"message": "<string>"
}
]
}
}Authorizations
Provide your API key in the Authorization header using Bearer auth
Headers
Path Parameters
Run ID returned when the workflow was started
Step key
Response
OK
A workflow run
Run ID (run_ prefix)
"run_0192f1c3a7b87c3e9a4f5b6c7d8e9f01"
Object type, always workflow.run
"workflow.run"
Workflow ID
"geekidea/drama-episode"
Status: pending / running / waiting_input / succeeded / failed / cancelled
pending, running, waiting_input, succeeded, failed, cancelled "running"
Progress (0–100)
40
Whether steps continue without confirmation
Budget of the whole run (USD); null when unlimited
Settled model cost (USD)
Settled workflow fee (USD)
Settled charge (USD)
Amount held for the segment in progress (USD); null when nothing is running
Error code when the run failed
Steps
Show child attributes
Show child attributes
Creation time (Unix seconds)
Finish time (Unix seconds); null when not finished
