---
title: "Update a deal"
method: POST
path: "/v1/finder/deals/{id}"
tags: ["RecruitAffiliates.ai"]
---

# Update a deal

`POST /v1/finder/deals/{id}`

## Request

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

New `terms` are written as the next version; once the terms are agreed they can't change (409 `deal_frozen`). The verdict, their ask and your notes can always change. Marking terms agreed is done in the app.

**Scope:** `finder:write`

## Path parameters

- `id` string, required: Prefixed id (`fdl_…`)

## Request body

- FinderDealUpdate
  - `terms` object, nullable: New terms, written as the next version. Refused once the terms are agreed.
    - `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
  - `verdict` 'recommended' | 'yes_but_expensive' | 'overpriced' | 'maybe_later' | 'not_recommended' | 'null', nullable
  - `their_ask` string, nullable
  - `notes` string, nullable

## Response `200`

The updated deal

- 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

- `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)
