# Welcome

> Public documentation for ICON's affiliate API: search, results, submit, duplicate pre-check, standardized responses.

ICON is a lead-routing platform for education offers. Partners send ICON a lead; ICON finds the offers that lead qualifies for, checks duplicates, caps, eligibility and consent, and answers in real time.

These docs are public. Using the API needs an API key, issued by ICON to your affiliate account; see [Authentication and API keys](https://developers.iconroute.io/authentication/).

## Integration options

- **[Affiliate API](https://developers.iconroute.io/affiliate-api/)** (Search → results → submit): Search every offer on your campaign with one lead, poll for results as they arrive, then submit the lead to the result the consumer chose. Each result carries its logo, consent statement, programs, questions and your payout.
- **[Direct lead posting](https://developers.iconroute.io/api/leads/#direct-posting)** (POST a lead to one offer): Already know the offer? Post the lead straight to it with your campaign and offer ids. Same endpoint, same standardized answer.
- **[Duplicate pre-check](https://developers.iconroute.io/api/dupe-check/)** (Optional, server to server): Ask whether ICON would call a lead a duplicate before you post it. Send raw fields or SHA-256 hashes of the published normalized forms.
- **[Standard responses](https://developers.iconroute.io/responses/)** (status · reason · code): Every answer carries the same three fields, from one catalog: a lower-case status, a sentence-case reason and a stable code with a retryable flag.

**Also good to know**

- Other integration types: ask your ICON contact.
- ICON does not send postbacks to affiliates today: the submit answer is the outcome.

## How a lead flows

1. **Search.** `POST /api/v1/engine/search` with the lead, your campaign id and your affiliate id. ICON answers at once with its first results and a search id (`icon_lead_id`).
2. **Results.** `GET /api/v1/engine/results/{icon_lead_id}` until `processing_done` is `true`. More results arrive while partner offers answer.
3. **Submit.** `POST /api/v1/engine/leads` with the `icon_result_id` the consumer chose, your search id, the program, the answers to that result's questions and the consumer's consent. The lead comes from your search: no need to send it again.

Every answer carries `status`, `reason` and `code`. See [Standard responses](https://developers.iconroute.io/responses/).

## Start here

- [Quickstart](https://developers.iconroute.io/quickstart/): a test lead from search to submit, with curl.
- [Endpoints](https://developers.iconroute.io/affiliate-api/): requests, responses and examples.
- [Field dictionary](https://developers.iconroute.io/fields/): the lead fields ICON reads and the values it stores.
- [Consent and TCPA](https://developers.iconroute.io/consent/): what to show and what to send.
- [Testing](https://developers.iconroute.io/testing/): test leads run the whole pipeline and are never delivered.

## For tools and AI assistants

Every page is also published as Markdown: add `.md` to its path (for example [/quickstart.md](https://developers.iconroute.io/quickstart.md)). The index is [llms.txt](https://developers.iconroute.io/llms.txt), all pages in one file are [llms-full.txt](https://developers.iconroute.io/llms-full.txt), and the API description is [openapi.json](https://developers.iconroute.io/openapi.json).

API base URL: `https://iconroute.io`
