Keap Opportunities API

Keap Opportunity API — 26 operations across 13 paths on the Keap REST v2 contract, read from Keap's own published OpenAPI 3.1 document.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/keap-opportunities-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

keap-opportunity-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Keap Opportunity API
  description: Keap Public API Documentation
  termsOfService: https://www.thryv.com/terms-of-use
  contact:
    name: Keap
    url: https://developer.keap.com/get-support
    email: api.keap@thryv.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: v2
servers:
- url: https://api.infusionsoft.com/crm
tags:
- name: Opportunity
paths:
  /rest/v2/opportunities:
    get:
      tags:
      - Opportunity
      summary: List Opportunities
      description: Retrieves a list of all Opportunities.
      operationId: listOpportunities
      parameters:
      - name: filter
        in: query
        description: 'Filter to apply, allowed fields are:

          - (String) `stage_id`

          - (String) `user_id`

          - (String) `contact_id`

          - (String) `opportunity_title` — supports wildcard prefix search (e.g. `opportunity_title==Deal*`)

          - (String) `lead_source_name` — supports wildcard prefix search (e.g. `lead_source_name==Web*`)

          - (String) `affiliate_id` — exact match only (e.g. `affiliate_id==123`)

          - (String) `opportunity_id` — supports comparison operators: `==`, `>`, `<`, `>=`, `<=`

          - (String) `ids` — comma-separated list of opportunity IDs (e.g. `ids==1,2,3`), maximum 100
          IDs

          - (String) `contact_phone` — matches the contact''s phone. By default it is an exact match against
          the stored value, including any formatting characters (e.g. `contact_phone==(480) 123-4567`);
          it does not normalize or search across an unformatted number. Supports wildcard prefix search
          for partial matches (e.g. `contact_phone==480*`)

          - (String) `contact_city` — matches the contact''s city; supports wildcard prefix search (e.g.
          `contact_city==Chand*`)

          - (String) `contact_state` — matches the contact''s state; supports wildcard prefix search (e.g.
          `contact_state==AZ*`)

          - (String) `projected_revenue_high` — projected revenue high; supports comparison operators:
          `==`, `>`, `<`, `>=`, `<=` (e.g. `projected_revenue_high>=1000`)

          - (String) `projected_revenue_low` — projected revenue low; supports comparison operators: `==`,
          `>`, `<`, `>=`, `<=` (e.g. `projected_revenue_low<=500`)

          Note: `opportunity_id` and `ids` cannot be used together in the same request.


          **Custom fields:** opportunities may also be filtered by any custom field defined on the Opportunity
          record, referenced by its field name (e.g. `cf_priority==10`). Both indexed and non-indexed
          custom fields are filterable. The supported operator and value depend on the field''s data type:

          - Text-like fields (Text, Text Area, Name, Email, Website, Phone, Social Security Number) and
          choice fields with text options (Dropdown, Radio, State) — equals (`==`) and prefix wildcard
          (e.g. `cf_company==Acme*`)

          - Numeric fields (Whole Number, Decimal, Currency, Percent, Year, Month, Day of Week, User)
          — equals and comparison (`==`, `>`, `<`, `>=`, `<=`)

          - Date and Date/Time fields — equals and comparison; the value must be a full ISO-8601 date-time
          with milliseconds and a timezone offset (e.g. `cf_renewDate<=2026-01-01T00:00:00.000Z`). Date-only
          values such as `2026-01-01` are rejected

          - Yes/No fields — equals only, value `0` (No) or `1` (Yes)

          - Drilldown fields — equals only, integer value

          - Multi-select fields (List Box, User List Box) — equals only, matched as a contains search
          over the stored selections (e.g. `cf_tags==red`)

          A custom field that does not exist, an operator unsupported for the field''s type, or a value
          that does not match the field''s type returns `400 Bad Request`.

          '
        required: false
        schema:
          type: string
      - name: page_token
        in: query
        description: Page token
        required: false
        schema:
          type: string
      - name: order_by
        in: query
        description: 'Attribute and direction to opportunities items.

          One of the following fields:

          - `next_action_time`

          - `contact_name`

          - `opportunity_title`

          - `created_time`

          - `update_time`


          One of the following directions:

          - `asc`

          - `desc`'
        required: false
        schema:
          type: string
      - name: page_size
        in: query
        description: Total number of items to return per page
        required: false
        schema:
          type: integer
          format: int32
          maximum: 1000
          minimum: 0
        example: 0
      - name: fields
        in: query
        description: 'Comma-delimited list of optional Opportunities properties to include in the response.
          Legacy field names are supported for optional fields only if legacy opportunities feature is
          enabled. Allowed optional values: custom_fields,created_by,last_updated_by,status_id. Allowed
          legacy optional values: monthly_revenue,order_revenue,objection,status,stage_entrance_time'
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - custom_fields
            - created_by
            - last_updated_by
            - status_id
            - monthly_revenue
            - order_revenue
            - objection
            - status
            - stage_entrance_time
          uniqueItems: true
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOpportunitiesResponse'
    post:
      tags:
      - Opportunity
      summary: Create an Opportunity
      description: Creates a new opportunity as the authenticated user.
      operationId: createOpportunity
      parameters:
      - name: fields
        in: query
        description: 'Comma-delimited list of optional Opportunities properties to include in the response.
          Legacy field names are supported for optional fields only if legacy opportunities feature is
          enabled. Allowed optional values: custom_fields,created_by,last_updated_by,status_id. Allowed
          legacy optional values: monthly_revenue,order_revenue,objection,status,stage_entrance_time'
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - custom_fields
            - created_by
            - last_updated_by
            - status_id
            - monthly_revenue
            - order_revenue
            - objection
            - status
            - stage_entrance_time
          uniqueItems: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOpportunityRequest'
        required: true
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestV2Opportunity'
  /rest/v2/opportunities/stages:
    get:
      tags:
      - Opportunity
      summary: List of Opportunity Stages
      description: Retrieves a list of Opportunity Stages.
      operationId: listOpportunityStages
      parameters:
      - name: filter
        in: query
        description: 'Filter to apply, allowed fields are:

          - (String) `opportunity_stage_name` — supports wildcard prefix search (e.g. `opportunity_stage_name==Qualified*`)

          - (String) `opportunity_stage_id` — supports comparison operators: `==`, `>`, `<`, `>=`, `<=`
          (e.g. `opportunity_stage_id>5`)

          '
        required: false
        schema:
          type: string
      - name: page_token
        in: query
        description: Page token
        required: false
        schema:
          type: string
      - name: order_by
        in: query
        description: 'Attribute and direction to order stage items.

          One of the following fields:

          - `stage_order`


          One of the following directions:

          - `asc`

          - `desc`'
        required: false
        schema:
          type: string
      - name: page_size
        in: query
        description: Total number of items to return per page
        required: false
        schema:
          type: integer
          format: int32
          maximum: 1000
          minimum: 0
        example: 0
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOpportunityStagesResponse'
    post:
      tags:
      - Opportunity
      summary: Create an Opportunity Stage
      description: Creates a new Opportunity Stage
      operationId: createOpportunityStage
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOpportunityStageRequest'
        required: true
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestOpportunityStage'
  /rest/v2/opportunities/model/customFields:
    post:
      tags:
      - Opportunity
      summary: Create an Opportunity Custom Field
      description: Creates a custom field of the specified type and options to the Opportunity object
      operationId: createOpportunityCustomFields
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomFieldRequest'
        required: true
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFieldMetaData'
  /rest/v2/opportunities/model/customFields/tabs:
    get:
      tags:
      - Opportunity
      summary: List Opportunity Custom Field Tabs
      description: Retrieves a list of custom field tabs for the Opportunity record type.
      operationId: listOpportunityCustomFieldTabs
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListCustomFieldTabsResponse'
    post:
      tags:
      - Opportunity
      summary: Create an Opportunity Custom Field Tab
      description: Creates a new custom field tab for the Opportunity record type.
      operationId: createOpportunityCustomFieldTab
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomFieldTabRequest'
        required: true
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFieldTab'
  /rest/v2/opportunities/model/customFields/groups:
    get:
      tags:
      - Opportunity
      summary: List Opportunity Custom Field Groups
      description: Retrieves a list of custom field groups for the Opportunity record type. Optionally
        filter by tab_id to scope to a specific tab.
      operationId: listOpportunityCustomFieldGroups
      parameters:
      - name: tab_id
        in: query
        description: Optional tab id to scope groups to a single tab
        required: false
        schema:
          type: string
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListCustomFieldGroupsResponse'
    post:
      tags:
      - Opportunity
      summary: Create an Opportunity Custom Field Group
      description: Creates a new custom field group for the Opportunity record type. If `tab_id` is omitted,
        the group is added to the default 'Custom Fields' tab.
      operationId: createOpportunityCustomFieldGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomFieldGroupRequest'
        required: true
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFieldGroup'
  /rest/v2/opportunities/{opportunity_id}:
    get:
      tags:
      - Opportunity
      summary: Retrieve a Opportunity
      description: Retrieves the specified Opportunity
      operationId: getOpportunity
      parameters:
      - name: opportunity_id
        in: path
        required: true
        schema:
          type: string
      - name: fields
        in: query
        description: 'Comma-delimited list of optional Opportunities properties to include in the response.
          Legacy field names are supported for optional fields only if legacy opportunities feature is
          enabled. Allowed optional values: custom_fields,created_by,last_updated_by,status_id. Allowed
          legacy optional values: monthly_revenue,order_revenue,objection,status,stage_entrance_time'
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - custom_fields
            - created_by
            - last_updated_by
            - status_id
            - monthly_revenue
            - order_revenue
            - objection
            - status
            - stage_entrance_time
          uniqueItems: true
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestV2Opportunity'
    delete:
      tags:
      - Opportunity
      summary: Delete an Opportunity
      description: Deletes the specified Opportunity
      operationId: deleteOpportunity
      parameters:
      - name: opportunity_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '204':
          description: No Content
    patch:
      tags:
      - Opportunity
      summary: Update an opportunity
      description: Updates specified values of a given opportunity
      operationId: updateOpportunity
      parameters:
      - name: opportunity_id
        in: path
        required: true
        schema:
          type: string
      - name: update_mask
        in: query
        description: An optional list of properties to be updated. If set, only the provided properties
          will be updated and others will be skipped.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - opportunity_title
            - next_action_time
            - next_action_notes
            - opportunity_notes
            - estimated_close_time
            - include_in_forecast
            - projected_revenue_low
            - projected_revenue_high
            - contact_id
            - stage_id
            - user_id
            - custom_fields
            - affiliate_id
          uniqueItems: true
      - name: fields
        in: query
        description: 'Comma-delimited list of optional Opportunities properties to include in the response.
          Legacy field names are supported for optional fields only if legacy opportunities feature is
          enabled. Allowed optional values: custom_fields,created_by,last_updated_by,status_id. Allowed
          legacy optional values: monthly_revenue,order_revenue,objection,status,stage_entrance_time'
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - custom_fields
            - created_by
            - last_updated_by
            - status_id
            - monthly_revenue
            - order_revenue
            - objection
            - status
            - stage_entrance_time
          uniqueItems: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateOpportunityRequestV2'
        required: true
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $r

# --- truncated at 32 KB (85 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/keap/refs/heads/main/openapi/keap-opportunity-api-openapi.yml