Skip to content

Save Ai Enrichment Config

POST
/enrichment/ai/configs

Create an AI enrichment group on a list. FREE - saving never runs.

PLURAL, matching the GET /enrichment/ai/configs that already ships. The app spells this one /ai/config; publishing both would be two paths one letter apart.

config.is_global true - the app’s DEFAULT - makes the group apply to EVERY list in the organisation, not just config.list_id. That is the wider blast radius of the two and it is what you get by omission, so set it deliberately.

A config.group_id naming a qualification group shared by every list (the ICP and Persona qualification groups) answers 409 with code shared_qualification_group: those groups cannot gain columns here.

Authorizations

Parameters

Header Parameters

X-Target-Org-Id
Any of:
string

Request Body required

Save an AI enrichment group. Saving costs nothing; running it does.

object
config
required

A full AI enrichment group definition.

object
column_mappings
Array<object>

Where one output field lands.

object
column_id
required
string
column_name
required
string
output_field
required
string
config
required

Execution settings for an AI enrichment group.

object
auto_update

Re-run when new data arrives. ONGOING SPEND when true.

boolean
default: true
find_people
Any of:

Find-people mode settings for an AI group.

object
destination_table_id
Any of:
string
destination_table_name
Any of:
string
export_mode

auto exports found contacts without a human step; review holds them.

string
default: review
Allowed values: auto review
max_people
integer
default: 5 >= 1 <= 25
review_store
string
default: source_metadata
list_routing
Any of:

Route records to different lists based on an AI output field.

object
enabled
boolean
field_name
string
""
list_mappings
object
key
additional properties
integer
mode
string
default: standard
Allowed values: standard find_people
run_condition
Any of:
string
scope
Any of:
string
Allowed values: company contact combined
skip_existing_values

Skip rows that already have a value - the main cost control.

boolean
default: true
skip_recently_enriched

Skip rows enriched in the last 30 days.

boolean
default: true
use_advanced_search
boolean
use_json
boolean
created_at
Any of:
string
created_by
Any of:
string
description
Any of:
string
group_id
Any of:
string
id
Any of:
string format: uuid
input_mapping
required
Array<string>
>= 1 items <= 100 items
is_global
boolean
default: true
json_schema
Any of:
object
key
additional properties
string
Allowed values: string number boolean
list_id
Any of:
integer
model
required
string
name
Any of:
string
org_id
Any of:
string
output_format
string
default: fields
outputs
required
Array<object>
>= 1 items <= 50 items

One field the AI pass is asked to return.

object
name
required
string
type
required
string
prompt
required
string
>= 1 characters <= 20000 characters
updated_at
Any of:
string
usecase
required
string
run_immediately

Always false. Saving never runs - the app refuses immediate execution so a save can never become an unpriced spend.

boolean
target_records
Any of:
Array<string>

Responses

201

Successful Response

object
data
required

One enrichment object, open-shaped.

Open on purpose: a workbench column set is defined by the CUSTOMER at runtime, and the enrichment result shapes grow with every provider added. Pinning them would drop whatever a provider returned that this contract had not caught up on, which on an enrichment surface is the data the customer paid for.

object
key
additional properties
any
pagination
Any of:
object
has_next
required

Whether there are more pages

boolean
limit
required

Items per page

integer
next_cursor
Any of:
string
notes
Any of:
Array<string>
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer
total_available
Any of:
integer
total_is_lower_bound
Any of:
boolean

422

Validation Error

object
detail
Array<object>
object
loc
required
Array
msg
required
string
type
required
string