---
title: "Open Quote"
method: POST
path: "/api/v2/quote/open"
tags: ["CRM Integration"]
---

# Open Quote

`POST /api/v2/quote/open`

## Request

- Base URL: `https://api.dealhub.io`
- URL: `https://api.dealhub.io/api/v2/quote/open`
- Auth: HTTP bearer

Retrieves a URL for an existing quote in DealHub. The user can then be redirected to this URL to view or edit the quote. This call can optionally update opportunity information for quotes in 'draft' status.

## Request body

- OpenQuoteRequest
  - `dealhub_user_id` string, required: ID of user in the DealHub system (as returned from Authentication request).
  - `dealhub_quote_id` string, required: DealHub quote ID.
  - `external_opportunity_id` string, required: CRM opportunity ID.
  - `opportunity_info` OpportunityInfo: A schema representing the data that can be sent to create or update an opportunity and its related quote.
    - `external_opportunity_name` string, required: CRM opportunity name.
    - `opportunity_owner` UserInformation
      - `external_user_id` string, required: CRM user ID (employee of the organization that integrates with DealHub).
      - `login` string: Login of the user. If a new user is created and login is not provided, the email will be used as the login.
      - `email` string, email, required: Primary email of the user.
      - `name` string, required: User's full name.
      - `position` string: The role of the user in the organization (job title).
      - `phone` string: User's phone number.
      - `mobile` string: User's mobile phone number.
      - `company` string: User's company name.
      - `street` string: Street name.
      - `city` string: City name.
      - `state` string: State name.
      - `country` string: Country name.
      - `postal_code` string: Postal code.
      - `user_manager_login` string: Login of the user's manager.
    - `external_quote_id` string: CRM quote ID.
    - `external_customer_id` string, required: CRM customer ID (buyer account).
    - `customer_name` string, required: CRM customer name.
    - `customer_shipping_address` Address
      - `street` string: Street name.
      - `city` string: City name.
      - `state` string: State name.
      - `country` string: Country name.
      - `postal_code` string: Postal code.
    - `customer_billing_address` Address
      - `street` string: Street name.
      - `city` string: City name.
      - `state` string: State name.
      - `country` string: Country name.
      - `postal_code` string: Postal code.
    - `customer_contacts` Contact[]: List of customer contacts.
      - `salutation` string: Salutation (e.g., Mr., Ms.).
      - `first_name` string, required: First name of the contact.
      - `last_name` string, required: Last name of the contact.
      - `title` string: Job title of the contact.
      - `email` string, email, required: Primary email of the contact.
      - `phone` string: Phone number of the contact.
      - `account_name` string: Name of the contact's company.
      - `mailing_address` string: Postal address of the contact person.
      - `primary_contact` boolean: Flag indicating if this is the primary contact.
    - `geo_code` string, required: Geographic code.
    - `currency` string, required: The currency ISO code. This is immutable once an opportunity/quote is created.
    - `custom_fields` CustomField[]: A list of custom fields, where each object contains a key/value pair. This parameter supports the following data types: * `Numeric`: A single numeric value. An empty value will be treated as `0`. * `Text`: The value is captured and presented to the user exactly as received. The `value` field must be an array with a single string. * `Text list`: Can contain one or more values. This can be used in two modes: * Single-select: Only one value can be chosen from the list. * Multi-select: Multiple values from the list can be selected. * `UTC`: A date and time value. The format must be `yyyy-mm-dd`. An empty value will be treated as `NULL`.
      - `name` string, required: The name of the custom field, which must be pre-configured in the DealHub version.
      - `value` union, required: The value of the custom field. The format depends on the field type configured in DealHub: * `Text`: Must be sent as an array containing a single string, for example, `["renewal_opportunity"]`. Sending a plain string will not be accepted. * `Text list`: An array of one or more string values. * `Numeric`: A single numeric value. * `UTC`: A date string in `yyyy-mm-dd` format.
        - string[]
        - number
        - string[]
    - `repeatable_groups` object[]: Used for subscription renewals. The system will attempt to render this data into the playbook; items that cannot be rendered will be ignored without error.
      - `group_id` string, required
      - `questions` object[], required

## Response `200`

Success. The response contains the URL for redirection.

- RedirectResponse
  - `url` string, uri: The URL to which the user's browser should be redirected.
  - `errors` string[]

## Other responses

- `400`: Bad Request.
- `403`: Unauthenticated.

---

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