bearerAuthAuthorizationBearer <token>API key authentication. Pass your ioZen API key as a Bearer token in the Authorization header.
limit?integerMaximum number of items to return (1–100, default 50)
1 <= value <= 10050cursor?stringCursor for pagination — use next_cursor from a previous response
email?stringEmail match, case-insensitive
length <= 320phone?stringExact phone match (E.164)
length <= 32created_after?stringOnly items created at or after this ISO 8601 datetime
date-timecreated_before?stringOnly items created at or before this ISO 8601 datetime
date-timeupdated_after?stringOnly items changed at or after this ISO 8601 datetime (incremental sync)
date-timeinclude_test?stringInclude test items (default false)
"false""true""false"Successful response
application/json- response
success*truetruedata*curl -X GET 'https://app.iozen.ai/api/v1/contacts?email=user%40example.com'{ "success": true, "data": { "contacts": [ { "id": "string", "first_name": "string", "last_name": "string", "email": "string", "phone": "string", "company": "string", "country": "string", "custom_fields": { "property1": null, "property2": null }, "tags": [ "string" ], "opt_in": { "source": "string", "at": "string" }, "submission_count": 0, "case_count": 0, "is_test": true, "last_activity_at": "string", "created_at": "string", "updated_at": "string" } ], "pagination": { "has_more": true, "next_cursor": "string" } }}List cases GET
Returns a page of cases on a Process Board, newest first. Each case embeds its tags, description and linked contacts and records; contact details need read:contacts and record values need read:records, otherwise they are null. Filter with phase_id, status, created_after, created_before, updated_after, and include_test. updated_after also matches phase moves, assignment changes, tag changes, and edits to linked records and contacts. Test cases are omitted unless include_test is true.
Get a contact GET
Returns one contact, including its description and linked cases, submissions, and records.