Skip to main content
GET
/
api
/
lists
/
{id}
/
columns
/
{colId}
/
preview-cells
Poll preview cells for a column
curl --request GET \
  --url https://app.puffle.ai/api/lists/{id}/columns/{colId}/preview-cells \
  --header 'Authorization: Bearer <token>'
{ "cells": [ { "rowId": "r1111111-1111-1111-1111-111111111111", "name": "Jane Doe", "value": "Founder at Acme Capital", "status": "completed", "error": null }, { "rowId": "r2222222-1111-1111-1111-111111111111", "name": "John Smith", "value": null, "status": "processing", "error": null }, { "rowId": "r3333333-1111-1111-1111-111111111111", "name": "Sam Patel", "value": null, "status": "pending", "error": null } ] }

Overview

Return the cells for a column along with each row’s display name. Intended as the polling target for the Enrichment Preview UI — when a user clicks “Preview” on a new column, the server creates the column with isPreview: true and dispatches an enrichment task on the first three rows. The UI polls this endpoint until every cell is terminal, then either promotes (PATCH /api/lists/{id}/columns/{colId}) or cancels. The endpoint auto-detects whether the column is a person-segment or company-segment column (via its subject field) and queries the correct tables — you don’t need to pass a segment parameter.

AI agent notes

Polling cadence. Poll every ~2 s while any cell has status in pending or processing. Stop when every cell is terminal — completed (or the legacy complete), failed, or error. A cell stuck in pending for more than ~60 s usually means the enrichment task died; consult the linked Trigger.dev run via Puffle Seer.Also works for non-preview columns. Despite the name, this endpoint isn’t limited to isPreview: true columns — it returns every cell for the given colId. You can use it as a cheap polling target for any in-flight enrichment without having to re-fetch the full list.Display names. The name field is computed server-side: person rows use profileData.fullName (falling back to firstName lastName and finally "Unknown"); company rows use the company’s name. The rowId field is the person-row UUID in the person segment and the company-row UUID in the company segment — don’t assume a single kind of ID.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

id
string<uuid>
required

List UUID.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
colId
string<uuid>
required

Column UUID within the list.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$

Response

Cells with display names attached.

cells
object[]
required