---
title: "Get And Enrich Contact"
method: POST
path: "/v1/contacts/get-and-enrich"
tags: ["contacts"]
---

# Get And Enrich Contact

`POST /v1/contacts/get-and-enrich`

## Request

- Base URL: `https://api.topo.io`
- URL: `https://api.topo.io/v1/contacts/get-and-enrich`
- Auth: HTTP bearer

Load a contact and complete whatever it is missing with a provider.

Values already stored in the workspace always win. A person the workspace
does not hold yet is saved as a contact, and a found email is saved on the
contact. A provider is only
called when the match is missing an email, a job title, or a company
domain — or when nothing matches but the email or LinkedIn URL given is
enough to enrich from scratch — so this can spend enrichment credits. Use
`GET /v1/contacts/{contact_id}` for a free, read-only load.

Requires the `contacts:write` scope on the API key.

## Request body

- GetAndEnrichContactPublicInput
  - `contact_id` string, uuid, nullable: Contact to load, if you have its id.
  - `email` string, nullable: Load the contact by email instead.
  - `linkedin_url` string, nullable: Load the contact by LinkedIn profile URL instead.

## Response `200`

Successful Response

- GetAndEnrichContactPublicOutput
  - `found` boolean, required: Whether a contact matching the input exists in the workspace.
  - `completed` boolean, required: Whether enrichment finished. `false` while the lookup is still running: collect the answer with `enrichment_id`.
  - `enrichment_id` string, uuid, nullable: Set when `completed` is `false`: pass it to `GET /v1/contacts/enrichments/{enrichment_id}` to collect the answer instead of enriching again.
  - `contact_id` string, uuid, nullable: Matched contact in this workspace.
  - `account_id` string, uuid, nullable: Account the matched contact belongs to.
  - `email` string, nullable: Email.
  - `first_name` string, nullable: First name.
  - `last_name` string, nullable: Last name.
  - `job_title` string, nullable: Job title.
  - `linkedin_url` string, nullable: LinkedIn profile URL.
  - `phone_number` string, nullable: Phone number.
  - `company_name` string, nullable: Employer name.
  - `company_domain` string, nullable: Employer's primary domain.
  - `city` string, nullable: City.
  - `country` string, nullable: Country.
  - `enriched` boolean, required: Whether email, job title, and company domain are all known.
  - `active_sequence_count` integer, required: Sequences the contact is currently enrolled in.
  - `active_sequence_names` string[], required: Names of the sequence templates currently running.

## Changes

- **2026-10-08** `16f692efb3db`: 1 warning, 1 info
  - removed the optional property `pending_provider` from the response with the `200` status
  - added the optional property `enrichment_id` to the response with the `200` status
- **2026-08-18** `ad6ac1d13526`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/topo/apis/topo-public-api/changes/v1/contacts/get-and-enrich/post.md)

---

[API](https://skmtc.dev/topo/apis/topo-public-api.md) · [All operations](https://skmtc.dev/topo/apis/topo-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/topo/apis/topo-public-api/revisions/62914910b2a8?raw)
