---
title: "Create a deal"
method: POST
path: "/v1/finder/deals"
tags: ["RecruitAffiliates.ai"]
---

# Create a deal

`POST /v1/finder/deals`

## Request

- Base URL: `https://api.affiliaterail.com`
- URL: `https://api.affiliaterail.com/v1/finder/deals`
- Auth: HTTP bearer

A deal for a saved prospect, from the brand's default offer. Send `terms` to offer different ones straight away, as the next version. A prospect that already has a deal gets that deal back, with 200 instead of 201.

**Scope:** `finder:write`

## Request body

- FinderDealCreate
  - `prospect_id` string, required: A saved prospect. The deal starts from the brand's default offer.
  - `terms` object, nullable: Offer these terms straight away, as version 2
    - `rate` FinderDealRate, required
      - `type` 'percent' | 'fixed', required
      - `rate_bps` integer, nullable: Percent rates: basis points, 2000 is 20%
      - `amount_minor` integer, nullable: Fixed rates: integer minor units, 1500 is 15.00
      - `currency` string, nullable: Fixed rates: ISO 4217, like USD
    - `duration` object, required
      - `kind` 'lifetime' | 'months' | 'first_payment', required
      - `months` integer, nullable: With `months`, how many
    - `tiers` object[]: Step-ups by customers referred. At most 5.
      - `after_customers` integer, required
      - `rate` FinderDealRate, required
        - `type` 'percent' | 'fixed', required
        - `rate_bps` integer, nullable: Percent rates: basis points, 2000 is 20%
        - `amount_minor` integer, nullable: Fixed rates: integer minor units, 1500 is 15.00
        - `currency` string, nullable: Fixed rates: ISO 4217, like USD
    - `bonus_note` string, nullable
    - `gifting_note` string, nullable

## Response `200`

The deal the prospect already had

- FinderDealDetail
  - `id` string, required: Prefixed id (`fdl_…`)
  - `object` 'finder_deal', required
  - `brand_id` string, required: Prefixed id (`fbr_…`)
  - `prospect_id` string, required: Prefixed id (`fdi_…`)
  - `prospect_name` string, required
  - `status` 'saved' | 'agreed' | 'activated', required: `saved` terms can change. `agreed` and `activated` are frozen.
  - `version` integer, required: Goes up by one each time new terms are offered
  - `terms` FinderDealTerms, nullable, required
    - `rate` FinderDealRate, required
      - `type` 'percent' | 'fixed', required
      - `rate_bps` integer, nullable: Percent rates: basis points, 2000 is 20%
      - `amount_minor` integer, nullable: Fixed rates: integer minor units, 1500 is 15.00
      - `currency` string, nullable: Fixed rates: ISO 4217, like USD
    - `duration` object, required
      - `kind` 'lifetime' | 'months' | 'first_payment', required
      - `months` integer, nullable: With `months`, how many
    - `tiers` object[]: Step-ups by customers referred. At most 5.
      - `after_customers` integer, required
      - `rate` FinderDealRate, required
        - `type` 'percent' | 'fixed', required
        - `rate_bps` integer, nullable: Percent rates: basis points, 2000 is 20%
        - `amount_minor` integer, nullable: Fixed rates: integer minor units, 1500 is 15.00
        - `currency` string, nullable: Fixed rates: ISO 4217, like USD
    - `bonus_note` string, nullable
    - `gifting_note` string, nullable
  - `terms_summary` string, nullable, required
  - `verdict` 'recommended' | 'yes_but_expensive' | 'overpriced' | 'maybe_later' | 'not_recommended' | 'null', nullable, required
  - `their_ask` string, nullable, required
  - `notes` string, nullable, required
  - `agreed_at` string, date-time, nullable, required: ISO-8601, UTC
  - `created_at` string, date-time, required: ISO-8601, UTC
  - `updated_at` string, date-time, required: ISO-8601, UTC
  - `versions` FinderDealVersion[], required: Every version of the terms, oldest first
    - `version` integer, required
    - `terms` FinderDealTerms, nullable, required
      - `rate` FinderDealRate, required
        - `type` 'percent' | 'fixed', required
        - `rate_bps` integer, nullable: Percent rates: basis points, 2000 is 20%
        - `amount_minor` integer, nullable: Fixed rates: integer minor units, 1500 is 15.00
        - `currency` string, nullable: Fixed rates: ISO 4217, like USD
      - `duration` object, required
        - `kind` 'lifetime' | 'months' | 'first_payment', required
        - `months` integer, nullable: With `months`, how many
      - `tiers` object[]: Step-ups by customers referred. At most 5.
        - `after_customers` integer, required
        - `rate` FinderDealRate, required
          - `type` 'percent' | 'fixed', required
          - `rate_bps` integer, nullable: Percent rates: basis points, 2000 is 20%
          - `amount_minor` integer, nullable: Fixed rates: integer minor units, 1500 is 15.00
          - `currency` string, nullable: Fixed rates: ISO 4217, like USD
      - `bonus_note` string, nullable
      - `gifting_note` string, nullable
    - `terms_summary` string, nullable, required
    - `created_at` string, date-time, required: ISO-8601, UTC

## Other responses

- `201`: The new deal
- `400`: Invalid request
- `401`: Missing or unknown API key
- `402`: The organization's Recruit Affiliates plan does not include the API
- `403`: Key lacks the required scope
- `404`: No such object in your organization
- `409`: In conflict with the object's state, or the same idempotent request is still running
- `422`: The request was understood and refused
- `429`: Rate limited, by key or by organization: see Retry-After and X-RateLimit-Scope
- `501`: Not available to a test key (`sandbox_no_send`)

---

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