---
title: "Find affiliate partners"
method: GET
path: "/sites/{site}/partner-discovery"
tags: ["Affiliates"]
---

# Find affiliate partners

`GET /sites/{site}/partner-discovery`

## Request

- Base URL: `https://api.onelence.com/v1`
- URL: `https://api.onelence.com/v1/sites/{site}/partner-discovery`
- Auth: one of:
  - OAuth 2 (authorization code, authorization URL `https://api.onelence.com/oauth/authorize`, token URL `https://api.onelence.com/oauth/token`, scopes: `analytics:read`)
  - HTTP bearer

New affiliate partners for the site: sites and creators OneLence found in search results and backlink data (research_finds, from research runs started in OneLence), and partners from the OneLence catalog ranked by fit with its business, market and partner mix (or the filters passed). Current partners, and partners that were dismissed or declined, are left out; each find shows why it is worth a look. Contact details are not returned.

## Path parameters

- `site` string, required

## Query parameters

- `verticals` string[]
- `countries` string[]
- `languages` string[]
- `partner_types` string[]
- `commission_models` string[]
- `q` string
- `limit` integer

## Response `200`

Success.

- object
  - `object` 'partner_discovery', required
  - `site` object, required
    - `id` string, required
    - `domain` string, required
  - `brief` object, required
    - `offer_type` string, nullable, required
    - `verticals` object, required
      - `values` string[], required
      - `source` string, nullable, required
    - `countries` object, required
      - `values` string[], required
      - `source` string, nullable, required
    - `languages` object, required
      - `values` string[], required
      - `source` string, nullable, required
    - `partner_types` object, required
      - `values` string[], required
      - `source` string, nullable, required
    - `commission_models` object, required
      - `values` string[], required
      - `source` string, nullable, required
    - `missing` string[], required
  - `data` object[], required
    - `object` 'partner_match', required
    - `id` string, required
    - `name` string, required
    - `website_domain` string, nullable, required
    - `description` string, nullable, required
    - `partner_types` string[], required
    - `verticals` string[], required
    - `countries` string[], required
    - `languages` string[], required
    - `commission_models` string[], required
    - `audience_size` string, nullable, required
    - `networks` object[], required
      - `network` string, required
      - `profile_url` string, nullable, required
    - `fit` object, required
      - `score` number, required
      - `tier` 'strong' | 'good' | 'possible' | 'weak' | 'insufficient_profile', nullable, required
      - `assessed_share` number, required
      - `components` object[], required
        - `component` string, required
        - `status` 'match' | 'partial' | 'mismatch' | 'partner_unknown' | 'brief_missing', nullable, required
    - `shortlist_status` 'saved' | 'contacted' | 'replied' | 'dismissed', nullable, required
    - `profile_source` string, nullable, required
    - `profile_verified_at` string, nullable, required
    - `last_seen_at` string, nullable, required
  - `research_finds` object[], required
    - `object` 'research_find', required
    - `id` string, required
    - `name` string, required
    - `kind` string, required
    - `platform` string, required
    - `domain` string, nullable, required
    - `url` string, nullable, required
    - `partner_types` string[], required
    - `strength` 'strong' | 'medium' | 'light', nullable, required
    - `opportunities` object[], required
      - `kind` string, required
      - `competitors` string[], required
      - `backlinks` number, nullable, required
    - `verification` 'unverified' | 'affiliate_signals' | 'no_affiliate_signals' | 'unreachable', nullable, required
    - `status` 'new' | 'saved' | 'contacted' | 'replied', nullable, required
    - `last_seen_at` string, nullable, required
  - `last_research_at` string, nullable, required
  - `catalog_size` number, required
  - `excluded_existing_partners` number, required
  - `excluded_dismissed` number, required
  - `note` string, required
  - `next_step` string, nullable, required

## Other responses

- `400`: Invalid input; `error.param` names the field.
- `401`: Missing, expired or revoked token. WWW-Authenticate points to the resource metadata.
- `402`: subscription_required or upgrade_required; the error carries billing_url.
- `403`: insufficient_scope or admin_required.
- `404`: Unknown endpoint, site, source or record.
- `429`: Rate limited. Retry after Retry-After seconds.
- `500`: OneLence could not complete the request.

---

[API](https://skmtc.dev/onelence/apis/onelence-api.md) · [All operations](https://skmtc.dev/onelence/apis/onelence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/onelence/apis/onelence-api/revisions/971c72fe9a42?raw)
