Explain whether a profile is in a segment
Each condition’s answer for the profile, with what it has, and whether it’s in. A merged profile answers for the profile it was merged into.
Each condition’s answer for the profile, with what it has, and whether it’s in. A merged profile answers for the profile it was merged into.
apiKey readAuthorizationBearer <token>A workspace API key (pf_…), created under Developers → API keys.
Scope: read
id*string^(seg)_[0-9A-Za-z]{8}$idempotency-key?stringRun this write once: a retry with the same key gets the first answer (24 hours).
1 <= length <= 255application/json- body
profileId*stringuuidversion?stringpublished (the default: the one in use) or draft
"published""published""draft"OK
application/json- response
matches*booleanconditions*array<>curl -X POST 'https://api.postforge.dev/v1/segments/string/explain' \ -H 'Content-Type: application/json' \ -d '{ "profileId": "faebe71b-2bf8-4bdb-9b67-258e4d6aa00a"}'{ "matches": true, "conditions": [ { "path": "string", "condition": { "type": "profile_trait", "trait": "email", "test": { "operator": "is", "value": "string" } }, "passes": true, "found": "string" } ]}List the profiles in a segment GET
Who meets its conditions now, most recently seen first, a page at a time by cursor (`nextCursor` until the last page). Read live: a big segment takes its time. 409 `segment_not_published` for the published version of a segment never published.
List segments GET
`folder` is a folder’s id (what’s directly in it), `top` (the top level) or `all`; without it, a search looks everywhere and a plain list shows the top level. Archived ones only when the status filter asks for them.