Reference · 3 operations
Contacts
People in the workspace.
Last updated from API version 2026-10-06 at (live spec, refreshed hourly). openapi.json
List contacts, newest first, with index-backed filters.
/api/v1/contacts- Scope
- read
- Credits
- Free
- Idempotency-Key
- Not used
Cursor-paginated (meta.page). Archived contacts are excluded unless
includeArchived=true. Several filters can be combined; one is served
by an index and the others filter its rows, so a page may be shorter
than limit: meta.page.hasMore is the only end signal. v0 (legacy)
keys keep the v0 contract on this path (company, sort_by,
data: {contacts, hasMore, nextCursor}).
Parameters
- limitqueryinteger
Page size.
default 50min 1max 200 - cursorquerystring
Opaque cursor from
meta.page.nextCursor. Reusing it with other filters is400 CURSOR_MISMATCH. - statusquerystring
Sales stage.
enriching,enriched,qualified,excludedandfailedare legacy values still present on older contacts.newreadyincompletecontactedrepliedconvertedlostenrichingenrichedqualifiedexcludedfailed - sourcequerystring
Exact source, e.g.
csv,linkedin,api. - companyIdquerystring
Contacts linked to this company.
- emailquerystring
Exact email.
- linkedInUrlquerystring
Exact LinkedIn profile URL.
- includeArchivedqueryboolean
Include archived contacts.
default false - sortByquerystring
Reserved. The sort is fixed (newest first); any value is
400 UNSUPPORTED_FILTER. - updatedSincequerystring
Reserved; any value is
400 UNSUPPORTED_FILTER.
Responses
200A page of contacts.Show schema
ContactListResponse
- 0
- 0
Metadata on a paginated success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 404 Unknown resource or route. A resource in another workspace is also 404 · 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl "https://app.owlbound.ai/api/v1/contacts" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06"Full-text search over contact names, titles, companies and emails.
/api/v1/contacts/search- Scope
- read
- Credits
- Free
- Idempotency-Key
- none
Results are ordered by relevance and cursor-paginated; send the same
query, status and includeArchived with cursor for the next page.
Request body (required) · application/json
ContactSearchRequest
- querystringrequiredmin length 1max length 500
- limitintegerdefault 50min 1max 200
- cursorstring0
meta.page.nextCursorfrom the previous page of the same search. - statusstring
Sales stage.
enriching,enriched,qualified,excludedandfailedare legacy values still present on older contacts.newreadyincompletecontactedrepliedconvertedlostenrichingenrichedqualifiedexcludedfailed - includeArchivedbooleandefault false
Responses
200A page of matching contacts.Show schema
ContactListResponse
- 0
- 0
Metadata on a paginated success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 404 Unknown resource or route. A resource in another workspace is also 404 · 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl -X POST "https://app.owlbound.ai/api/v1/contacts/search" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06" \
-H "Content-Type: application/json" \
-d '{
"query": "<query>"
}'Get one contact.
/api/v1/contacts/{id}- Scope
- read
- Credits
- Free
- Idempotency-Key
- Not used
A contact in another workspace is 404 NOT_FOUND.
Parameters
- idpathstringrequired
Opaque resource id.
Responses
200The contact.Show schema
ContactResponse
- 0
One contact with every public field.
- 0
Metadata on every success response.
Errors
400 The request is invalid (VALIDATION_ERROR, CURSOR_MISMATCH, UNSUPPORTED_FILTER) · 401 Missing, invalid, expired or revoked key · 403 Missing scope, suspended workspace or unavailable identity · 404 Unknown resource or route. A resource in another workspace is also 404 · 429 Rate limit reached · 500 Unexpected error · 503 The backend is unreachable; retry after `Retry-After`. Every error is {error: {type, code, message, requestId, docUrl}}; see error codes.
curl "https://app.owlbound.ai/api/v1/contacts/$ID" \
-H "Authorization: Bearer $OWLBOUND_API_KEY" \
-H "Owlbound-Version: 2026-10-06"Models on this page
Shared objects the operations above link to. Clients must ignore fields they do not know.
ContactSummaryobject
A contact as listed. Documented fields are always present (null when empty).
- idstringrequired0
- firstNamestring | nullrequired0
- lastNamestring | nullrequired0
- emailstring | nullrequired0
- phonestring | nullrequired0
- linkedInUrlstring | nullrequired0
- titlestring | nullrequired0
- companystring | nullrequired0
Company name as captured on the contact.
- companyIdstring | nullrequired0
- locationstring | nullrequired0
- statusstringrequired
Sales stage.
enriching,enriched,qualified,excludedandfailedare legacy values still present on older contacts.newreadyincompletecontactedrepliedconvertedlostenrichingenrichedqualifiedexcludedfailed - sourcestring | nullrequired0
- scorenumber | nullrequired0
Best ICP score, 0 to 100.
- activityScorenumber | nullrequired0
- tagsarray of stringrequired0
- isArchivedbooleanrequired0
- connectionStatusstring | nullrequired0
LinkedIn connection status.
- createdAtnumberrequired0
Ms since epoch.
- updatedAtnumber | nullrequired0
PagedResponseMetaobject
Metadata on a paginated success response.
- requestIdstringrequired0
- 0
- 0
Cursor pagination.
hasMoreis the only end signal; pages may be short.
CreditsMetaobject
- usednumberrequired0
Credits charged by this request. Reads are free.
- balancenumber0
- estimatednumber0
Dry run only (action operations).
- availablenumber0
Dry run only (action operations).
- reservationIdstring | null0
Async operations only; the job settles this reservation.
PageMetaobject
Cursor pagination. hasMore is the only end signal; pages may be short.
- nextCursorstring | nullrequired0
- hasMorebooleanrequired0
- limitintegerrequiredmin 1max 200
Contactobject
One contact with every public field.
- idstringrequired0
- firstNamestring | nullrequired0
- lastNamestring | nullrequired0
- emailstring | nullrequired0
- phonestring | nullrequired0
- linkedInUrlstring | nullrequired0
- profilePhotoUrlstring | nullrequired0
- titlestring | nullrequired0
- headlinestring | nullrequired0
- companystring | nullrequired0
- companyIdstring | nullrequired0
- companyDomainstring | nullrequired0
- companyIndustrystring | nullrequired0
- companyEmployeeCountnumber | nullrequired0
- locationstring | nullrequired0
- departmentstring | nullrequired0
- seniorityLevelstring | nullrequired0
- statusstringrequired
Sales stage.
enriching,enriched,qualified,excludedandfailedare legacy values still present on older contacts.newreadyincompletecontactedrepliedconvertedlostenrichingenrichedqualifiedexcludedfailed - sourcestring | nullrequired0
- scorenumber | nullrequired0
- activityScorenumber | nullrequired0
- connectionStatusstring | nullrequired0
- tagsarray of stringrequired0
- notesstring | nullrequired0
- 0
Workspace-defined fields, keyed by field key. Empty when none are set.
- isArchivedbooleanrequired0
- enrichedAtnumber | nullrequired0
- lastContactedAtnumber | nullrequired0
- lastRepliedAtnumber | nullrequired0
- createdAtnumberrequired0
- updatedAtnumber | nullrequired0
CustomFieldsobject
Workspace-defined fields, keyed by field key. Empty when none are set.
- {key}one of | null0
+ Show child fields− Hide child fields
One of
string
string
number
number
boolean
boolean
array
array of string
ResponseMetaobject
Metadata on every success response.
- requestIdstringrequired0
- 0
- pagePageMeta0
Cursor pagination.
hasMoreis the only end signal; pages may be short. - dryRunboolean0
True only on a dry-run response (action operations).