---
title: "Fast bulk create opportunities"
method: POST
path: "/v1/opportunities/fast-bulk"
tags: ["CRM"]
---

# Fast bulk create opportunities

`POST /v1/opportunities/fast-bulk`

## Request

- Base URL: `https://api.octolane.com`
- URL: `https://api.octolane.com/v1/opportunities/fast-bulk`
- Auth: API key in header `x-api-key`

Creates up to 100 opportunities with nested account and contact payloads. This optimized endpoint batch-resolves accounts, contacts, owners, and stages before inserting opportunities.

## Request body

- FastBulkOpportunityInput[]
  - `pipeline_id` string, uuid, nullable
  - `pipeline_name` string, nullable
  - `opportunity` OpportunityFields, required
    - `name` string, nullable: Opportunity name. Derived if omitted.
    - `stage_id` string, uuid, nullable
    - `stage_name` string, nullable: Stage label fallback.
    - `deal_size` number, nullable
    - `close_date` integer, nullable: Unix timestamp in seconds.
    - `next_action_date` integer, nullable: Unix timestamp in seconds.
    - `next_steps` string, nullable
    - `custom_attributes` object
  - `related_objects` object, required
    - `account` AccountInput
      - `domain` string, required: Company domain.
      - `name` string, nullable
      - `industry` string, nullable
      - `logo` string, nullable
      - `linkedin` string, nullable
      - `twitter` string, nullable
      - `twitter_followers` number, nullable
      - `description` string, nullable
      - `primary_location` string, nullable
      - `founded` number, nullable
      - `estimated_revenue` number, nullable
      - `total_fund_raised` number, nullable
      - `employee_range` string, nullable
      - `type` string, nullable
      - `tags` union
        - string[]
        - string
      - `first_email_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `last_email_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `first_meeting_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `last_meeting_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `last_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `next_meeting` union
        - string, date-time
        - number: Unix seconds or milliseconds.
    - `primary_contact` ContactInput
      - `email` string, email, required
      - `first_name` string, nullable
      - `last_name` string, nullable
      - `full_name` string, nullable
      - `job_title` string, nullable
      - `phone` string, nullable
      - `seniority` string, nullable
      - `linkedin` string, nullable
      - `twitter` string, nullable
      - `twitter_followers` number, nullable
      - `current_company` string, nullable
      - `other_emails` union
        - string[]
        - string
      - `type` string, nullable
      - `avatar_url` string, nullable
      - `email_verified` boolean, nullable
      - `first_email_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `last_email_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `first_meeting_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `last_meeting_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `last_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `next_meeting` union
        - string, date-time
        - number: Unix seconds or milliseconds.
    - `additional_contacts` ContactInput[], nullable
      - `email` string, email, required
      - `first_name` string, nullable
      - `last_name` string, nullable
      - `full_name` string, nullable
      - `job_title` string, nullable
      - `phone` string, nullable
      - `seniority` string, nullable
      - `linkedin` string, nullable
      - `twitter` string, nullable
      - `twitter_followers` number, nullable
      - `current_company` string, nullable
      - `other_emails` union
        - string[]
        - string
      - `type` string, nullable
      - `avatar_url` string, nullable
      - `email_verified` boolean, nullable
      - `first_email_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `last_email_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `first_meeting_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `last_meeting_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `last_interaction` union
        - string, date-time
        - number: Unix seconds or milliseconds.
      - `next_meeting` union
        - string, date-time
        - number: Unix seconds or milliseconds.
    - `owner_email` string, email, nullable
    - `owner_id` string, uuid, nullable

## Response `200`

Opportunities were created or skipped as duplicates.

- ApiResponse
  - `success` boolean
  - `message` string
  - `data` unknown

## Other responses

- `201`: Opportunities were created or skipped as duplicates.
- `400`: The request failed validation.
- `401`: The API key is missing, invalid, or not allowed to access this route.
- `429`: The route rate limit was exceeded.

## Changes

- **2026-06-16** `9647d7c49947`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/octolane-org/apis/octolane-public-api/changes/v1/opportunities/fast-bulk/post.md)

---

[API](https://skmtc.dev/octolane-org/apis/octolane-public-api.md) - [All operations](https://skmtc.dev/octolane-org/apis/octolane-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/octolane-org/apis/octolane-public-api/revisions/d248d0a2be5d?raw)
