> ## Documentation Index
> Fetch the complete documentation index at: https://docs.journeybee.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a deal

> Create a deal on a lead. A lead is required. Multiple deals can exist on the same lead. If no stage is provided, the first deal stage for the lead's partner type is used. If no currency is provided, the company's default currency is used. Deal stages and custom fields are scoped by partner type. Custom fields may be required or rule-controlled (visibility, locking, auto-population) — validation errors return per-field `details` with a machine-readable `reason`. See the Custom Field Validation section of the Error Handling guide.



## OpenAPI

````yaml /openapi.json post /deals/
openapi: 3.1.0
info:
  title: Journeybee API
  description: >-
    Public REST API for the Journeybee PRM platform.


    Manage partners, leads, deals, products, pricing calculators, tasks, and
    more programmatically.


    All endpoints require authentication via API key. Use `Authorization: Bearer
    <api_key>` or `Api-Key <api_key>` header.


    See the [Authentication guide](/guides/authentication) for details.
  version: 1.0.0
servers:
  - url: https://api.journeybee.io/v1
    description: Production
security:
  - apiKey: []
tags:
  - name: Account
    description: >-
      Authenticated company account info, API key permissions, and enabled
      modules
  - name: Analytics
    description: >-
      Dashboard analytics and reporting — commission, engagement, LMS, and
      partner revenue metrics
  - name: Assets
    description: File and media asset management
  - name: Attributions
    description: Attribution type definitions
  - name: Audit Log
    description: Unified audit log of company activity (read-only)
  - name: Automations
    description: Workflow automation rule configurations
  - name: Campaign Audience
    description: Audience filters on a campaign
  - name: Campaign Partners
    description: Partners shared into a campaign audience
  - name: Campaigns
    description: Partner marketing campaigns
  - name: Card Assignees
    description: Assigned users on a card
  - name: Card Partners
    description: Partners linked to a card
  - name: Card Tags
    description: Tags on a card
  - name: Cards
    description: Kanban project cards
  - name: Categories
    description: Partner categories
  - name: Certification Categories
    description: Categories on a certification
  - name: Certification Enrollments
    description: User enrollments in a certification
  - name: Certification Folders
    description: Folders on a certification
  - name: Certification Resources
    description: Curriculum resources in a certification
  - name: Certifications
    description: LMS certifications
  - name: Commissions
    description: >-
      Commission rule configurations with calculation entries,
      tier/category/partnership scoping
  - name: Contacts
    description: Partner contacts across partnerships
  - name: Currencies
    description: Available currencies
  - name: Custom Field Options
    description: Options on select/multi-select custom fields
  - name: Custom Field Rules
    description: Visibility and requirement rules on custom fields
  - name: Custom Field Values
    description: Custom field values
  - name: Custom Fields
    description: Custom field definitions
  - name: Deal Commission
    description: Commission calculation on a deal
  - name: Deal Custom Field Values
    description: Custom field values on a deal
  - name: Deal Notes
    description: Notes on a deal
  - name: Deal Payments
    description: Payment records on a deal (read-only)
  - name: Deal Products
    description: Products attached to a deal
  - name: Deal Stages
    description: Deal pipeline stages
  - name: Deal Tags
    description: Tags on a deal
  - name: Deal Tasks
    description: Tasks on a deal
  - name: Deals
    description: Deal management
  - name: Folders
    description: Content folders
  - name: Lead Attributions
    description: Attribution records on a lead
  - name: Lead Contacts
    description: Partner contacts on a lead
  - name: Lead Custom Field Values
    description: Custom field values on a lead
  - name: Lead Distributor
    description: Distributors for a lead
  - name: Lead Notes
    description: Notes on a lead
  - name: Lead Products
    description: Products attached to a lead
  - name: Lead Quotes
    description: >-
      Quotes on a lead — generated from pricing calculators with line items and
      totals
  - name: Lead Tags
    description: Tags on a lead
  - name: Lead Tasks
    description: Tasks on a lead
  - name: Lead Users
    description: Assigned users on a lead
  - name: Leads
    description: Lead management
  - name: Marketing Templates
    description: Marketing email templates
  - name: Partner Contacts
    description: Contacts on a partner
  - name: Partner Custom Field Values
    description: Custom field values on a partner
  - name: Partner Domains
    description: Domains on a partner
  - name: Partner Notes
    description: Notes on a partner
  - name: Partner Resellers
    description: Reseller assignments on a distributor
  - name: Partner Stages
    description: Partner pipeline stages
  - name: Partner Tags
    description: Tags on a partner
  - name: Partner Users
    description: Assigned users on a partner
  - name: Partners
    description: Core partner CRUD
  - name: Pricing Calculator Fields
    description: Input fields on a pricing calculator
  - name: Pricing Calculator Formulas
    description: Discount/tax/surcharge formulas on a pricing calculator
  - name: Pricing Calculator Products
    description: Products attached to a pricing calculator
  - name: Pricing Calculators
    description: Pricing calculator configurations
  - name: Products
    description: Product catalog
  - name: Resource Blocks
    description: Content blocks within a resource
  - name: Resource Categories
    description: Categories on a resource
  - name: Resource Folders
    description: Folders on a resource
  - name: Resource Tags
    description: Tags on a resource
  - name: Resources
    description: Learning resources
  - name: Room Blocks
    description: Content blocks within a room
  - name: Room Categories
    description: Category-based room access control
  - name: Room Partnerships
    description: Direct partnership room access
  - name: Room Stages
    description: Stage-based room access control
  - name: Room Tags
    description: Tag-based room access control
  - name: Room Tiers
    description: Tier-based room access control
  - name: Rooms
    description: Partner portal rooms
  - name: Tags
    description: Tag definitions
  - name: Task Users
    description: Assigned users on a task
  - name: Tasks
    description: Task management
  - name: Tiers
    description: Partner tiers
  - name: Users
    description: Company team members
  - name: Webhook Events
    description: Outbound webhook payloads sent to your configured URLs when events occur
paths:
  /deals/:
    post:
      tags:
        - Deals
      summary: Create a deal
      description: >-
        Create a deal on a lead. A lead is required. Multiple deals can exist on
        the same lead. If no stage is provided, the first deal stage for the
        lead's partner type is used. If no currency is provided, the company's
        default currency is used. Deal stages and custom fields are scoped by
        partner type. Custom fields may be required or rule-controlled
        (visibility, locking, auto-population) — validation errors return
        per-field `details` with a machine-readable `reason`. See the Custom
        Field Validation section of the Error Handling guide.
      operationId: createDeal
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                lead_uuid:
                  type: string
                label:
                  type: string
                deal_value:
                  default: 0
                  description: >-
                    Monetary amount in WHOLE currency units (the displayed
                    amount, e.g. 1000.00 = one thousand) — NOT minor
                    units/cents. Do NOT divide or multiply by 100; send and show
                    the amount as-is.
                  type: number
                stage_uuid:
                  type: string
                currency_uuid:
                  type: string
                expiration_date:
                  anyOf:
                    - type: string
                    - type: 'null'
                tag_uuids:
                  type: array
                  items:
                    type: string
                custom_fields:
                  type: array
                  items:
                    type: object
                    properties:
                      custom_field_uuid:
                        type: string
                      value:
                        anyOf:
                          - type: object
                            properties:
                              text:
                                description: Value for text/url/email/phone fields
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              number:
                                description: Value for number fields
                                anyOf:
                                  - anyOf:
                                      - type: number
                                      - type: string
                                  - type: 'null'
                              date:
                                description: Value for date fields (ISO 8601 date string)
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              boolean:
                                description: Value for checkbox fields
                                anyOf:
                                  - anyOf:
                                      - type: boolean
                                      - type: string
                                  - type: 'null'
                              select:
                                description: Option ID for single-select fields
                                anyOf:
                                  - type: number
                                  - type: 'null'
                              multi_select:
                                description: Option IDs for multi-select fields
                                anyOf:
                                  - type: array
                                    items:
                                      type: number
                                  - type: 'null'
                            additionalProperties: false
                            description: >-
                              Custom field value. Set the key matching the field
                              type: text (text/url/email/phone), number, date,
                              boolean (checkbox), select (option ID), or
                              multi_select (array of option IDs).
                          - type: 'null'
                    required:
                      - custom_field_uuid
                      - value
                    additionalProperties: false
              required:
                - lead_uuid
                - label
                - deal_value
              additionalProperties: false
      responses:
        '201':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  uuid:
                    type: string
                  label:
                    type: string
                  deal_value:
                    type: number
                    description: >-
                      Monetary amount in WHOLE currency units (the displayed
                      amount, e.g. 1000.00 = one thousand) — NOT minor
                      units/cents. Do NOT divide or multiply by 100; send and
                      show the amount as-is.
                  total_commission_value:
                    anyOf:
                      - type: number
                      - type: 'null'
                    description: >-
                      Monetary amount in WHOLE currency units (the displayed
                      amount, e.g. 1000.00 = one thousand) — NOT minor
                      units/cents. Do NOT divide or multiply by 100; send and
                      show the amount as-is.
                  expiration_date:
                    anyOf:
                      - type: string
                      - type: 'null'
                  stage:
                    anyOf:
                      - type: object
                        properties:
                          uuid:
                            type: string
                          label:
                            type: string
                          phase:
                            type: string
                            enum:
                              - new
                              - in_progress
                              - won
                              - lost
                              - expired
                              - on_hold
                        required:
                          - uuid
                          - label
                          - phase
                        additionalProperties: false
                      - type: 'null'
                  lead:
                    type: object
                    properties:
                      uuid:
                        type: string
                      first_name:
                        anyOf:
                          - type: string
                          - type: 'null'
                      last_name:
                        anyOf:
                          - type: string
                          - type: 'null'
                      email:
                        anyOf:
                          - type: string
                          - type: 'null'
                      company_name:
                        anyOf:
                          - type: string
                          - type: 'null'
                    required:
                      - uuid
                      - first_name
                      - last_name
                      - email
                      - company_name
                    additionalProperties: false
                  partner:
                    anyOf:
                      - type: object
                        properties:
                          uuid:
                            type: string
                          name:
                            anyOf:
                              - type: string
                              - type: 'null'
                          partner_type:
                            type: string
                            enum:
                              - referral
                              - reseller
                              - distributor
                        required:
                          - uuid
                          - name
                          - partner_type
                        additionalProperties: false
                      - type: 'null'
                  currency:
                    type: object
                    properties:
                      uuid:
                        type: string
                      code:
                        type: string
                      label:
                        type: string
                    required:
                      - uuid
                      - code
                      - label
                    additionalProperties: false
                  tags:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        label:
                          type: string
                      required:
                        - uuid
                        - label
                      additionalProperties: false
                  assigned_users:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        email:
                          type: string
                        first_name:
                          anyOf:
                            - type: string
                            - type: 'null'
                        last_name:
                          anyOf:
                            - type: string
                            - type: 'null'
                      required:
                        - uuid
                        - email
                        - first_name
                        - last_name
                      additionalProperties: false
                  custom_fields:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        label:
                          type: string
                        type:
                          type: string
                          enum:
                            - text
                            - textarea
                            - number
                            - date
                            - boolean
                            - select
                            - multi_select
                        value:
                          anyOf:
                            - type: object
                              properties:
                                text:
                                  description: Value for text/url/email/phone fields
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                                number:
                                  description: Value for number fields
                                  anyOf:
                                    - anyOf:
                                        - type: number
                                        - type: string
                                    - type: 'null'
                                date:
                                  description: Value for date fields (ISO 8601 date string)
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                                boolean:
                                  description: Value for checkbox fields
                                  anyOf:
                                    - anyOf:
                                        - type: boolean
                                        - type: string
                                    - type: 'null'
                                select:
                                  description: Option ID for single-select fields
                                  anyOf:
                                    - type: number
                                    - type: 'null'
                                multi_select:
                                  anyOf:
                                    - anyOf:
                                        - type: array
                                          items:
                                            type: number
                                        - type: string
                                    - type: 'null'
                              additionalProperties: false
                            - type: 'null'
                        options:
                          anyOf:
                            - type: array
                              items:
                                type: object
                                properties:
                                  id:
                                    type: number
                                  label:
                                    type: string
                                required:
                                  - id
                                  - label
                                additionalProperties: false
                            - type: 'null'
                      required:
                        - uuid
                        - label
                        - type
                        - value
                      additionalProperties: false
                  created_at:
                    type: string
                  updated_at:
                    type: string
                required:
                  - uuid
                  - label
                  - deal_value
                  - total_commission_value
                  - expiration_date
                  - stage
                  - lead
                  - partner
                  - currency
                  - tags
                  - assigned_users
                  - custom_fields
                  - created_at
                  - updated_at
                additionalProperties: false
components:
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: API key authentication. Use "Bearer <api_key>" or "Api-Key <api_key>".

````