Skip to main content
POST
Create a saved agent

Authorizations

X-API-Key
string
header
required

Body

application/json

A new saved agent's full configuration.

name
string
required
Required string length: 1 - 255
allow_fetch
boolean
default:true
allow_find_email
boolean
default:false

Let runs buy a work email from the product's data suppliers, paid from the run's research budget. Refused when the supplier is not available to this organisation.

allow_linkedin_profile
boolean
default:false

Let runs read a LinkedIn profile through the product's data suppliers, paid from the run's research budget. Refused when the supplier is not available to this organisation.

description
string | null
Maximum string length: 2000
effort
enum<string>
default:standard

How hard the Agent works on each row.

Named levels rather than raw step counts: the level is the user-facing contract, and what each level buys (step and page budgets) is a product decision the loop maps internally. Re-tuning budgets never invalidates stored columns.

Available options:
low,
standard,
high
icon
string | null
Required string length: 1 - 16
inputs
AgentInputSchema · object[]

The declared inputs, in the author's order.

Maximum array length: 20
is_template
boolean
default:false

Save as a reusable starting point instead of a working agent. Templates are offered in the template gallery and never run.

model_key
string | null
Required string length: 1 - 64
output_schema
EnrichmentOutputFields · object

The fields-mode output shape: repeatable named typed fields.

The default is Clay's: one text field named response.

prompt
AgentPromptTemplate · object

A saved agent's prompt: literal text with references between the runs.

The same convention every other stored prompt in the product uses (EnrichmentPromptTemplate for columns, template segments for sequences): identity-keyed segments, so renaming what a reference points at never rewrites the prompt. Structurally parallel to the enrichment template rather than importing it: an agent prompt references INPUTS, an enrichment prompt references COLUMNS, and the import hierarchy keeps the two domains apart.

sample_rows
Sample Rows · object[]

Example input rows to remember for the Train screen: the test_cases the build flow just generated. Keyed by input name. Suggestion memory, not configuration: storing them never bumps the agent's version.

Maximum array length: 25
use_business_context
boolean
default:false
use_row_context
boolean
default:false

Response

Successful Response

One org-level saved agent as the editor, picker and library render it.

allow_fetch
boolean
required
created_at
string<date-time>
required
current_version
integer
required
description
string | null
required
effort
enum<string>
required

How hard the Agent works on each row.

Named levels rather than raw step counts: the level is the user-facing contract, and what each level buys (step and page budgets) is a product decision the loop maps internally. Re-tuning budgets never invalidates stored columns.

Available options:
low,
standard,
high
favorite
boolean
required
icon
string | null
required
id
string<uuid>
required
inputs
AgentInputSchema · object[]
required
model_key
string | null
required
name
string
required
output_schema
EnrichmentOutputFields · object
required

The fields-mode output shape: repeatable named typed fields.

The default is Clay's: one text field named response.

owner_user_id
string | null
required
prompt
AgentPromptTemplate · object
required

A saved agent's prompt: literal text with references between the runs.

The same convention every other stored prompt in the product uses (EnrichmentPromptTemplate for columns, template segments for sequences): identity-keyed segments, so renaming what a reference points at never rewrites the prompt. Structurally parallel to the enrichment template rather than importing it: an agent prompt references INPUTS, an enrichment prompt references COLUMNS, and the import hierarchy keeps the two domains apart.

updated_at
string<date-time>
required
use_business_context
boolean
required
use_row_context
boolean
required
allow_find_email
boolean
default:false

Whether a run may buy a work email from the product's data suppliers while it researches, paid from the run's research budget.

allow_linkedin_profile
boolean
default:false

Whether a run may read a LinkedIn profile through the product's data suppliers while it researches, paid from the run's research budget.

granted_verbs
string[] | null

The workspace actions this agent may apply without asking, as verb keys (see GET /assistant/verbs/). Null means the workspace defaults apply. The agent's table runs take an allowed action themselves, without a card.

is_template
boolean
default:false
owner_display_name
string | null