#Создать предложение

POST /v1/quotes

Создаёт новое коммерческое предложение в CRM.

#Поля запроса (body)

Параметр Тип Описание
title string Название предложения
amount number Сумма
currency string Валюта. Список: GET /v1/currencies
stageId string Статус: DRAFT, SENT, APPROVED. Список: GET /v1/statuses?filter[entityId]=QUOTE_STATUS
dealId number ID сделки. Поиск: GET /v1/deals
contactId number ID контакта. Поиск: GET /v1/contacts
companyId number ID компании. Поиск: GET /v1/companies
assignedById number ID ответственного. Список сотрудников: GET /v1/users
comments string Комментарий
beginDate datetime Дата начала
closeDate datetime Дата закрытия

Полный список полей: GET /v1/quotes/fields. Пользовательские поля (ufCrm_*) также принимаются.

#Примеры

#curl — личный ключ

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/quotes \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "КП на серверное оборудование",
    "amount": 150000,
    "currency": "RUB",
    "stageId": "DRAFT",
    "dealId": 741,
    "assignedById": 1
  }'

#curl — OAuth-приложение

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/quotes \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "КП на серверное оборудование",
    "amount": 150000,
    "currency": "RUB",
    "stageId": "DRAFT",
    "dealId": 741,
    "assignedById": 1
  }'

#JavaScript — личный ключ

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/quotes', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    title: 'КП на серверное оборудование',
    amount: 150000,
    currency: 'RUB',
    stageId: 'DRAFT',
    dealId: 741,
    assignedById: 1,
  }),
})

const { success, data } = await res.json()
console.log('Quote ID:', data.id)

#JavaScript — OAuth-приложение

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/quotes', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    title: 'КП на серверное оборудование',
    amount: 150000,
    currency: 'RUB',
    stageId: 'DRAFT',
    dealId: 741,
    assignedById: 1,
  }),
})

const { success, data } = await res.json()

#Поля ответа

Поле Тип Описание
id number ID созданного предложения
title string Название
amount number Сумма
currency string Валюта
stageId string Статус
dealId number ID сделки
assignedById number Ответственный
createdBy number Создатель
createdAt datetime Дата создания
updatedAt datetime Дата изменения

Ответ содержит все поля предложения, включая пользовательские (ufCrm_*). Выше показаны основные.

#Пример ответа

JSON
{
  "success": true,
  "data": {
    "id": 412,
    "title": "КП на серверное оборудование",
    "amount": 150000,
    "currency": "RUB",
    "stageId": "DRAFT",
    "dealId": 741,
    "contactId": 0,
    "companyId": 0,
    "assignedById": 1,
    "createdBy": 1,
    "comments": "",
    "beginDate": "2026-04-15T00:00:00.000Z",
    "closeDate": "2026-05-15T00:00:00.000Z",
    "createdAt": "2026-04-15T10:30:00.000Z",
    "updatedAt": "2026-04-15T10:30:00.000Z"
  }
}

#Пример ответа при ошибке

403 — нет скоупа:

JSON
{
  "success": false,
  "error": {
    "code": "SCOPE_DENIED",
    "message": "This endpoint requires 'crm' scope"
  }
}

#Ошибки

HTTP Код Описание
403 SCOPE_DENIED API-ключ не имеет скоупа crm
401 TOKEN_MISSING API-ключ не имеет настроенных токенов
400 INVALID_REQUEST Невалидные поля

Полный список общих ошибок API — Ошибки.

#Смотрите также