Guide 02
Enrich with action columns
Add enrichment, AI and action columns, estimate them, and run them under a hard credit cap.
Last updated from API version 2026-10-06 at (live spec, refreshed hourly). openapi.json
A table column can compute its cells: enrichment (find a value with a data provider), ai (a prompt per row), formula, waterfall and action (any read or spend action operation, once per row). You add the column once, estimate a run, then run it over the rows you choose under a hard credit cap.
1. Add the column
POST /tables/{id}/columns with a type and its config. An enrichment column that finds a work email from each row's LinkedIn URL:
curl -X POST "https://app.owlbound.ai/api/v1/tables/$TABLE_ID/columns" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "Work email",
"type": "enrichment",
"config": {
"provider": "blitzapi",
"field": "workEmail",
"inputs": {
"linkedinUrl": "linkedinUrl"
}
}
}'An action column runs one action operation per row. Its config is {operationId, inputs, input, resultPath}: inputs maps the operation's record fields to column keys, inputis the operation's input (text values may reference columns as {{Column}}), resultPathpicks the result field written to the cell. The config is checked against the operation's input schema from GET /action-types/{operationId}.
curl -X POST "https://app.owlbound.ai/api/v1/tables/$TABLE_ID/columns" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "Company news",
"type": "action",
"config": {
"operationId": "actions.research.company_news",
"inputs": {
"companyName": "company"
}
}
}'Which operations
Action columns take read and spend operations. Operations that need a LinkedIn identity and list operations are not available as columns. Send operations (connect, DM, InMail, sequence enrollment) run as a send column through push, with approval.
2. Estimate
POST /tables/{id}/columns/{columnId}/runs/estimate is free and holds nothing. It returns cells, creditsMin (no match anywhere), creditsMax (every cell charged), the cost per capability and the cells it would leave out because they already ran.
curl -X POST "https://app.owlbound.ai/api/v1/tables/$TABLE_ID/columns/$COLUMN_ID/runs/estimate" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06" \
-H "Content-Type: application/json" \
-d '{
"scope": {
"mode": "empty"
}
}'3. Run under a hard cap
POST /tables/{id}/columns/{columnId}/runs needs maxCredits. Cells run in batches of up to 25 whose maximum cost fits the cap; once it is reached the run ends capped and the remaining cells are skipped with RUN_CAPPED. A run never spends more than maxCredits.
curl -X POST "https://app.owlbound.ai/api/v1/tables/$TABLE_ID/columns/$COLUMN_ID/runs" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"scope": {
"mode": "empty"
},
"maxCredits": 600
}'| scope.mode | Cells it takes |
|---|---|
all | Every row (default). Narrow it with filter. |
empty | Rows whose cell is empty. |
errored · skipped · stale | Rows by cell state, to retry. |
selected | rowIds, at most 1,000. |
view | The rows of a saved view (viewId). |
Cells that already ran are left out unless scope.force (a new charge). Enrichment charges only when it finds a value, AI charges every committed answer, errors are never charged. Follow the run with GET /tables/{id}/runs/{runId} and its cells with GET /tables/{id}/runs/{runId}/cells; retry one cell with POST /tables/{id}/rows/{rowId}/cells/{columnId}/retry.
One-off enrichment without a column
The same capabilities exist as actions on contacts or inline records, priced per target: a work email is 32 credits per target, a mobile phone 145 credits per target, a contact score 14 credits per target.
| Operation | What it does | Class | Price |
|---|---|---|---|
| enrich.work_email | Find a person's work email. | spend | 32 credits per target |
| enrich.mobile_phone | Find a person's mobile phone. | spend | 145 credits per target |