Skip to main content
PATCH
/
user
/
v1
/
projects
/
{id}
cURL
curl --request PATCH \
  --url https://api.cekura.ai/user/v1/projects/{id}/ \
  --header 'Content-Type: application/json' \
  --header 'X-CEKURA-API-KEY: <api-key>' \
  --data '
{
  "name": "<string>",
  "outbound_timeout": 123,
  "max_call_duration": 123,
  "min_call_duration": 123,
  "sample_rate": 123,
  "max_messages_chat_runs_limit": 123,
  "webhook_url": "<string>",
  "webhook_secret": "<string>",
  "evaluate_relevant_metrics_enabled": true,
  "end_call_enabled": true,
  "generate_scenario_auto_assign_numbers_enabled": true,
  "enable_client_side_testing": true,
  "should_show_powered_by": true,
  "notify_results_completion": true,
  "notify_daily_report": true,
  "notify_daily_report_no_calls": true,
  "daily_report_ai_summary_enabled": true,
  "notify_cron_failure": true,
  "notify_cron_success": true,
  "notify_no_calls": true,
  "no_calls_notify_time_period": "<unknown>",
  "notify_daily_report_webhook": true,
  "daily_report_dashboard_ids": [
    123
  ],
  "notify_result_webhook_failed": true,
  "notify_result_webhook_success": true,
  "notify_result_webhook_error": true,
  "notify_cronjob_webhook_failed": true,
  "notify_cronjob_webhook_success": true,
  "notify_cronjob_webhook_error": true,
  "notify_call_log_webhook_failed": true,
  "notify_call_log_webhook_success": true,
  "notify_frequent_calls_for_number": true,
  "frequent_calls_threshold": -1,
  "frequent_calls_time_period": -1,
  "frequent_calls_cooldown": -1,
  "forward_vapi_webhook": true,
  "forward_retell_webhook": true,
  "is_send_emails_enabled": true,
  "rubric_config": "<unknown>",
  "timezone": "<string>",
  "vapi_api_key": "<string>",
  "retell_api_key": "<string>",
  "syntflow_api_key": "<string>",
  "elevenlabs_api_key": "<string>",
  "livekit_api_key": "<string>",
  "pipecat_api_key": "<string>",
  "is_deleted": true
}
'
{
  "name": "<string>",
  "id": 123,
  "members": [
    {
      "id": 123,
      "user": {
        "name": "<string>",
        "email": "jsmith@example.com",
        "id": 123
      },
      "is_email_notify_enabled": true,
      "created_at": "2023-11-07T05:31:56Z",
      "updated_at": "2023-11-07T05:31:56Z"
    }
  ],
  "organization": {
    "name": "<string>",
    "id": 123,
    "members": [
      {
        "id": 123,
        "user": {
          "name": "<string>",
          "email": "jsmith@example.com",
          "id": 123
        },
        "is_email_notify_enabled": true,
        "created_at": "2023-11-07T05:31:56Z",
        "updated_at": "2023-11-07T05:31:56Z"
      }
    ],
    "created_at": "2023-11-07T05:31:56Z",
    "updated_at": "2023-11-07T05:31:56Z"
  },
  "outbound_timeout": 123,
  "max_call_duration": 123,
  "min_call_duration": 123,
  "sample_rate": 123,
  "max_messages_chat_runs_limit": 123,
  "webhook_url": "<string>",
  "webhook_secret": "<string>",
  "evaluate_relevant_metrics_enabled": true,
  "end_call_enabled": true,
  "generate_scenario_auto_assign_numbers_enabled": true,
  "enable_client_side_testing": true,
  "should_show_powered_by": true,
  "notify_results_completion": true,
  "notify_daily_report": true,
  "notify_daily_report_no_calls": true,
  "daily_report_ai_summary_enabled": true,
  "notify_cron_failure": true,
  "notify_cron_success": true,
  "notify_no_calls": true,
  "no_calls_notify_time_period": "<unknown>",
  "notify_daily_report_webhook": true,
  "daily_report_dashboard_ids": [
    123
  ],
  "notify_result_webhook_failed": true,
  "notify_result_webhook_success": true,
  "notify_result_webhook_error": true,
  "notify_cronjob_webhook_failed": true,
  "notify_cronjob_webhook_success": true,
  "notify_cronjob_webhook_error": true,
  "notify_call_log_webhook_failed": true,
  "notify_call_log_webhook_success": true,
  "notify_frequent_calls_for_number": true,
  "frequent_calls_threshold": -1,
  "frequent_calls_time_period": -1,
  "frequent_calls_cooldown": -1,
  "forward_vapi_webhook": true,
  "forward_retell_webhook": true,
  "is_send_emails_enabled": true,
  "rubric_config": "<unknown>",
  "timezone": "<string>",
  "vapi_api_key_configured": "<string>",
  "vapi_public_key_configured": "<string>",
  "retell_api_key_configured": "<string>",
  "syntflow_api_key_configured": "<string>",
  "elevenlabs_api_key_configured": "<string>",
  "livekit_api_key_configured": "<string>",
  "pipecat_api_key_configured": "<string>",
  "is_deleted": true,
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z"
}

Documentation Index

Fetch the complete documentation index at: https://docs.cekura.ai/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

X-CEKURA-API-KEY
string
header
required

API Key Authentication. It should be included in the header of each request.

Path Parameters

id
integer
required

A unique integer value identifying this project.

Body

name
string

Name of the project Example: "Default Project"

outbound_timeout
integer

Outbound timeout in seconds Example: 300

max_call_duration
integer

Max call duration in seconds Example: 300

min_call_duration
integer

Min call duration in seconds Example: 30

sample_rate
number<double>

Metric sampling rate (0.0 to 1.0). Default is 1.0 (100% of calls). Example: 0.5 (50%), 0.1 (10%), 0.001 (0.1%)

max_messages_chat_runs_limit
integer

Max messages chat runs limit Example: 100

webhook_url
string<uri>

Webhook URL Example: "https://yourdomain.com/webhook"

webhook_secret
string

Webhook secret Example: "your-webhook-secret"

evaluate_relevant_metrics_enabled
boolean

Evaluate relevant metrics enabled Example: true or false

end_call_enabled
boolean

End call enabled Example: true or false

generate_scenario_auto_assign_numbers_enabled
boolean

Generate scenario auto assign numbers enabled Example: true or false

enable_client_side_testing
boolean

Enable client side testing Example: true or false

should_show_powered_by
boolean

Should show powered by Example: true or false

notify_results_completion
boolean

Notify on result completion Example: true or false

notify_daily_report
boolean

Notify daily report Example: true or false

notify_daily_report_no_calls
boolean

Notify daily report even if there are no calls Example: true or false

daily_report_ai_summary_enabled
boolean

Replace the default daily report data dump with an AI-narrated Top Issues section in Slack and email. Off by default. When on, Slack also exposes a "Show more" button that opens a modal with the legacy detail sections. Example: true or false

notify_cron_failure
boolean

Notify cron failure Example: true or false

notify_cron_success
boolean

Notify cron success Example: true or false

notify_no_calls
boolean

Notify no calls Example: true or false

no_calls_notify_time_period
any

Configuration for no calls notification time periods, timeframes, exception numbers, and agents to exclude Example:

{
"time_zone": "America/New_York",
"time_periods": [
{
"start_time": "09:00",
"end_time": "17:00",
"time_frame": 30
},
{
"start_time": "18:00",
"end_time": "23:59",
"time_frame": 60
}
],
"exception_numbers": ["+15551234567", "+14155552671"],
"agents": [1, 10, 90]
}

Note:

  • Calls with customer_number in exception_numbers list will be ignored when checking for no calls alert.
  • If agents list is provided and not empty, those specific agents will be excluded from monitoring. All other agents in the project will be monitored. If omitted or empty, all agents in the project will be monitored.
notify_daily_report_webhook
boolean

Notify daily report webhook Example: true or false

daily_report_dashboard_ids
integer[]

Dashboard IDs to include as visual snapshots in the daily report Example: [1, 2, 3]

notify_result_webhook_failed
boolean

Notify result webhook failed Example: true or false

notify_result_webhook_success
boolean

Notify result webhook success Example: true or false

notify_result_webhook_error
boolean

Notify result webhook for error runs (runs with error_message) Example: true or false

notify_cronjob_webhook_failed
boolean

Notify cronjob webhook failed Example: true or false

notify_cronjob_webhook_success
boolean

Notify cronjob webhook success Example: true or false

notify_cronjob_webhook_error
boolean

Notify cronjob webhook for error runs (runs with error_message) Example: true or false

notify_call_log_webhook_failed
boolean

Notify call log webhook failed Example: true or false

notify_call_log_webhook_success
boolean

Notify call log webhook success Example: true or false

notify_frequent_calls_for_number
boolean
frequent_calls_threshold
integer
Required range: -2147483648 <= x <= 2147483647
frequent_calls_time_period
integer
Required range: -2147483648 <= x <= 2147483647
frequent_calls_cooldown
integer
Required range: -2147483648 <= x <= 2147483647
forward_vapi_webhook
boolean

Forward vapi webhook Example: true or false

forward_retell_webhook
boolean

Forward retell webhook Example: true or false

is_send_emails_enabled
boolean

Is send emails enabled Example: true or false

rubric_config
any

Project-level scoring rubric for evaluating call success. Each call log produced under this project is run against the rubric and gets a single pass/fail outcome based on its metric results.

IMPORTANT (read before writing):

  • NEVER blindly overwrite this field. Always first GET the project, read the existing rubric_config, then merge in only the rule(s) you intend to add/update, and PATCH the full merged value. Sending a partial value will silently delete every rule you did not include.

Structure:

  • evaluation_logic: MUST be "and". All rules have to pass for a call to be marked successful. (Other values are not supported by the product currently.)
  • rules: List of rules. Use one rule per (metric, condition) — keep each rule simple, with a single condition inside.

Each rule shape:

{
"metric_id": <metric id>,
"conditions": {
"operator": "and",
"conditions": [
{"field": <field>, "op": <op>, "value": <value>}
]
}
}

What field, op, and value to use depends on the metric type. The three supported cases:

  1. Numeric / score metrics (qualitative scores, numeric metrics, workflow adherence with a score, etc.):

    • field: "score"
    • op: one of "gt", "gte", "lt", "lte", "eq"
    • value: a number (qualitative scores are on a 0–5 scale)
    • Example (score must be at least 4): {"field": "score", "op": "gte", "value": 4}
  2. Boolean / binary metrics (eval_type binary_qualitative, binary_workflow_adherence, or evaluate_expected_outcome):

    • Boolean outcomes are stored as a score: True → 5, False → 0.
    • field: "score"
    • op: "eq" or "neq"
    • value: 5 for True, 0 for False
    • Example (must be True): {"field": "score", "op": "eq", "value": 5}
    • Example (must be False): {"field": "score", "op": "eq", "value": 0}
  3. Enum metrics (eval_type enum, or observability_topics / observability_dropoff):

    • field: "enum"
    • op: "eq", "neq", or "in"
    • value: a single string for eq/neq, or a list of strings for in. Must match one of the metric's defined enum_values.
    • Example: {"field": "enum", "op": "eq", "value": "resolved"}
    • Example (any of): {"field": "enum", "op": "in", "value": ["resolved", "partially_resolved"]}

Full example:

{
"evaluation_logic": "and",
"rules": [
{
"metric_id": 115164,
"conditions": {
"operator": "and",
"conditions": [
{"op": "eq", "field": "score", "value": 5}
]
}
},
{
"metric_id": 5512,
"conditions": {
"operator": "and",
"conditions": [
{"op": "gte", "field": "score", "value": 4}
]
}
},
{
"metric_id": 8821,
"conditions": {
"operator": "and",
"conditions": [
{"op": "in", "field": "enum", "value": ["resolved", "partially_resolved"]}
]
}
}
]
}

Notes:

  • metric_id must reference a metric belonging to this project (project-scoped or agent-scoped under this project); unknown ids are rejected.
  • Rules whose metric did not produce a value on a given call are skipped (neither pass nor fail) and do not affect the outcome.
  • Pass an empty object {} to clear the rubric.
timezone
string

Project Timezone

vapi_api_key
string
write-only

VAPI API key Example: "vapi_api_key_123"

retell_api_key
string
write-only

Retell API key Example: "retell_api_key_123"

syntflow_api_key
string
write-only

Syntflow API key Example: "syntflow_api_key_123"

elevenlabs_api_key
string
write-only

ElevenLabs API key Example: "elevenlabs_api_key_123"

livekit_api_key
string
write-only

LiveKit API key Example: "livekit_api_key_123"

pipecat_api_key
string
write-only

Pipecat/Daily.co API key Example: "pipecat_api_key_123"

is_deleted
boolean

Response

200 - application/json
name
string
required

Name of the project Example: "Default Project"

id
integer
read-only
members
object[]
read-only
organization
object
outbound_timeout
integer

Outbound timeout in seconds Example: 300

max_call_duration
integer

Max call duration in seconds Example: 300

min_call_duration
integer

Min call duration in seconds Example: 30

sample_rate
number<double>

Metric sampling rate (0.0 to 1.0). Default is 1.0 (100% of calls). Example: 0.5 (50%), 0.1 (10%), 0.001 (0.1%)

max_messages_chat_runs_limit
integer

Max messages chat runs limit Example: 100

webhook_url
string<uri>

Webhook URL Example: "https://yourdomain.com/webhook"

webhook_secret
string

Webhook secret Example: "your-webhook-secret"

evaluate_relevant_metrics_enabled
boolean

Evaluate relevant metrics enabled Example: true or false

end_call_enabled
boolean

End call enabled Example: true or false

generate_scenario_auto_assign_numbers_enabled
boolean

Generate scenario auto assign numbers enabled Example: true or false

enable_client_side_testing
boolean

Enable client side testing Example: true or false

should_show_powered_by
boolean

Should show powered by Example: true or false

notify_results_completion
boolean

Notify on result completion Example: true or false

notify_daily_report
boolean

Notify daily report Example: true or false

notify_daily_report_no_calls
boolean

Notify daily report even if there are no calls Example: true or false

daily_report_ai_summary_enabled
boolean

Replace the default daily report data dump with an AI-narrated Top Issues section in Slack and email. Off by default. When on, Slack also exposes a "Show more" button that opens a modal with the legacy detail sections. Example: true or false

notify_cron_failure
boolean

Notify cron failure Example: true or false

notify_cron_success
boolean

Notify cron success Example: true or false

notify_no_calls
boolean

Notify no calls Example: true or false

no_calls_notify_time_period
any

Configuration for no calls notification time periods, timeframes, exception numbers, and agents to exclude Example:

{
"time_zone": "America/New_York",
"time_periods": [
{
"start_time": "09:00",
"end_time": "17:00",
"time_frame": 30
},
{
"start_time": "18:00",
"end_time": "23:59",
"time_frame": 60
}
],
"exception_numbers": ["+15551234567", "+14155552671"],
"agents": [1, 10, 90]
}

Note:

  • Calls with customer_number in exception_numbers list will be ignored when checking for no calls alert.
  • If agents list is provided and not empty, those specific agents will be excluded from monitoring. All other agents in the project will be monitored. If omitted or empty, all agents in the project will be monitored.
notify_daily_report_webhook
boolean

Notify daily report webhook Example: true or false

daily_report_dashboard_ids
integer[]

Dashboard IDs to include as visual snapshots in the daily report Example: [1, 2, 3]

notify_result_webhook_failed
boolean

Notify result webhook failed Example: true or false

notify_result_webhook_success
boolean

Notify result webhook success Example: true or false

notify_result_webhook_error
boolean

Notify result webhook for error runs (runs with error_message) Example: true or false

notify_cronjob_webhook_failed
boolean

Notify cronjob webhook failed Example: true or false

notify_cronjob_webhook_success
boolean

Notify cronjob webhook success Example: true or false

notify_cronjob_webhook_error
boolean

Notify cronjob webhook for error runs (runs with error_message) Example: true or false

notify_call_log_webhook_failed
boolean

Notify call log webhook failed Example: true or false

notify_call_log_webhook_success
boolean

Notify call log webhook success Example: true or false

notify_frequent_calls_for_number
boolean
frequent_calls_threshold
integer
Required range: -2147483648 <= x <= 2147483647
frequent_calls_time_period
integer
Required range: -2147483648 <= x <= 2147483647
frequent_calls_cooldown
integer
Required range: -2147483648 <= x <= 2147483647
forward_vapi_webhook
boolean

Forward vapi webhook Example: true or false

forward_retell_webhook
boolean

Forward retell webhook Example: true or false

is_send_emails_enabled
boolean

Is send emails enabled Example: true or false

rubric_config
any

Project-level scoring rubric for evaluating call success. Each call log produced under this project is run against the rubric and gets a single pass/fail outcome based on its metric results.

IMPORTANT (read before writing):

  • NEVER blindly overwrite this field. Always first GET the project, read the existing rubric_config, then merge in only the rule(s) you intend to add/update, and PATCH the full merged value. Sending a partial value will silently delete every rule you did not include.

Structure:

  • evaluation_logic: MUST be "and". All rules have to pass for a call to be marked successful. (Other values are not supported by the product currently.)
  • rules: List of rules. Use one rule per (metric, condition) — keep each rule simple, with a single condition inside.

Each rule shape:

{
"metric_id": <metric id>,
"conditions": {
"operator": "and",
"conditions": [
{"field": <field>, "op": <op>, "value": <value>}
]
}
}

What field, op, and value to use depends on the metric type. The three supported cases:

  1. Numeric / score metrics (qualitative scores, numeric metrics, workflow adherence with a score, etc.):

    • field: "score"
    • op: one of "gt", "gte", "lt", "lte", "eq"
    • value: a number (qualitative scores are on a 0–5 scale)
    • Example (score must be at least 4): {"field": "score", "op": "gte", "value": 4}
  2. Boolean / binary metrics (eval_type binary_qualitative, binary_workflow_adherence, or evaluate_expected_outcome):

    • Boolean outcomes are stored as a score: True → 5, False → 0.
    • field: "score"
    • op: "eq" or "neq"
    • value: 5 for True, 0 for False
    • Example (must be True): {"field": "score", "op": "eq", "value": 5}
    • Example (must be False): {"field": "score", "op": "eq", "value": 0}
  3. Enum metrics (eval_type enum, or observability_topics / observability_dropoff):

    • field: "enum"
    • op: "eq", "neq", or "in"
    • value: a single string for eq/neq, or a list of strings for in. Must match one of the metric's defined enum_values.
    • Example: {"field": "enum", "op": "eq", "value": "resolved"}
    • Example (any of): {"field": "enum", "op": "in", "value": ["resolved", "partially_resolved"]}

Full example:

{
"evaluation_logic": "and",
"rules": [
{
"metric_id": 115164,
"conditions": {
"operator": "and",
"conditions": [
{"op": "eq", "field": "score", "value": 5}
]
}
},
{
"metric_id": 5512,
"conditions": {
"operator": "and",
"conditions": [
{"op": "gte", "field": "score", "value": 4}
]
}
},
{
"metric_id": 8821,
"conditions": {
"operator": "and",
"conditions": [
{"op": "in", "field": "enum", "value": ["resolved", "partially_resolved"]}
]
}
}
]
}

Notes:

  • metric_id must reference a metric belonging to this project (project-scoped or agent-scoped under this project); unknown ids are rejected.
  • Rules whose metric did not produce a value on a given call are skipped (neither pass nor fail) and do not affect the outcome.
  • Pass an empty object {} to clear the rubric.
timezone
string

Project Timezone

vapi_api_key_configured
string
read-only
vapi_public_key_configured
string
read-only
retell_api_key_configured
string
read-only
syntflow_api_key_configured
string
read-only
elevenlabs_api_key_configured
string
read-only
livekit_api_key_configured
string
read-only
pipecat_api_key_configured
string
read-only
is_deleted
boolean
created_at
string<date-time>
read-only
updated_at
string<date-time>
read-only