---
title: "List the enrichments offered at import"
method: GET
path: "/find-leads/enrichment-options/"
tags: ["find-leads"]
---

# List the enrichments offered at import

`GET /find-leads/enrichment-options/`

## Request

- Base URL: `https://api.getoneprofile.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getoneprofile.ai/find-leads/enrichment-options/`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

The enrichments a lead import can run, with the exact per-row credit price of each and whether its column already exists in the search's own column plan (`already_covered`); `unavailable_options`, the ones that apply to this search but are not available right now and cannot be chosen; and `row_cost`: what the rows themselves cost before any enrichment. An import's total is `row_cost` plus the chosen options, each counted once. Free to call.

## Query parameters

- `record_type` 'people' | 'companies' | 'signal_companies' | 'signal_people' | 'lookalikes' | 'local_businesses' | 'hiring_companies' | 'backlinks' | 'search_results' | 'post_authors', required: Which dataset a search runs against, and so which provider serves it. Values are persisted in String(16) columns, so every member must stay within 16 characters.
- `row_count` integer, nullable
- `signal_type` string, nullable: For a buying-signal search, the one signal it looks for. Ignored for every other search. Read only so `already_covered` also checks that signal's own columns.

## Response `200`

Successful Response

- LeadEnrichmentOptionListResponseSchema: The enrichments offered for one record type, and what the rows themselves cost.
  - `options` LeadEnrichmentOptionSchema[], required
    - `already_covered` boolean, required: Whether the search's own column plan already has a column named exactly this. Ticking the option regardless still adds a second column, suffixed to stay unique: the two are never merged.
    - `column_display_name` string, required: What the column this creates will be called.
    - `credits_for_rows` number, nullable: What the requested row count usually costs (credits_per_row times the rows); null if none was given.
    - `credits_per_row` number, required: What a row that gets an answer usually costs: each row is charged the price of the source that answered it, read from which sources usually answer. Equal to max_credits_per_row when every source has one price. A row nobody can answer for is free.
    - `description` string, required
    - `display_name` string, required
    - `key` 'find_email' | 'find_phone' | 'enrich_contact' | 'enrich_company', required: An enrichment offered at import, in the user's vocabulary not the catalog's. Each option names an outcome and resolves to the curated enrichment that delivers it, so importing leads stays a question about what you want rather than about who supplies it. Kept as its own enum rather than reusing the capability keys directly: the import page offers a deliberately short list, and which enrichments belong on it is a product decision that should not change every time the catalog gains a capability.
    - `max_credits_per_row` number, required: The most one row could cost (the dearest source), what the credit hold reserves. Quote it beside credits_per_row: up to this, usually about that.
  - `row_cost` LeadRowCostSchema, required: What the ROWS of a search cost, beside what the enrichments on them cost. Its own object rather than two more fields on the listing: the enrichment options already carry ``credits_per_row``, and a second field of that name one level up would be read as a third enrichment price. Nested, the total the screen shows is unambiguous: this plus the ticked options, each counted once.
    - `credits_for_rows` number, nullable: `credits_per_row` for the requested row count; null if none was given. The rows a run adds are what gets charged, so a run that matches fewer rows than asked for costs less than this.
    - `credits_per_request` number
    - `credits_per_row` number, required: What one row of this search type costs, before any enrichment. Zero for the search types whose rows are free. Never included in an option's `credits_per_row`, so a true total is this plus the ticked options rather than either alone.
    - `rows_per_request` integer
  - `unavailable_options` UnavailableLeadEnrichmentSchema[], required: Enrichments that apply to this search but are not available right now, for any workspace. Listed so a picker can show them in their place, disabled, rather than drop them. None can be chosen: an import that asks for one is refused.
    - `display_name` string, required
    - `key` 'find_email' | 'find_phone' | 'enrich_contact' | 'enrich_company', required: An enrichment offered at import, in the user's vocabulary not the catalog's. Each option names an outcome and resolves to the curated enrichment that delivers it, so importing leads stays a question about what you want rather than about who supplies it. Kept as its own enum rather than reusing the capability keys directly: the import page offers a deliberately short list, and which enrichments belong on it is a product decision that should not change every time the catalog gains a capability.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `422`: Invalid request made to the API.
- `500`: Internal server error.
- `502`: Bad gateway error.
- `503`: Service unavailable.

---

[API](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile.md) · [All operations](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/llms.txt) · [OpenAPI document](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/revisions/dc5ac3c84444?raw)
