Обзор
Mellow API служит для интеграции Mellow в ваш проект. Эта документация API предоставляет разработчикам подробное описание всех доступных запросов.
Общая информация
API Mellow включает методы для работы с задачами и фрилансерами. После регистрации в качестве администратора вашей компании вы можете приглашать и создавать фрилансеров, управлять задачами и инициировать вывод средств на платежные методы фрилансеров.
Предпочитаете работать через AI-ассистента? Помимо REST API, Mellow предлагает сервер MCP — подключите AI-клиента (Claude, Cursor, ChatGPT и другие) и выполняйте те же операции с помощью команд на естественном языке вместо HTTP-запросов. Те же данные, те же разрешения. Смотрите руководство Mellow MCP, чтобы начать работу.
Раздел Быстрый старт представляет наиболее популярный сценарий использования API.
API основан на наборе методов HTTP, которые используются для отправки запросов и получения ответов по каждой операции. Все ответы возвращаются в формате JSON. Вы можете использовать любые инструменты и языки для работы с API. В этом руководстве мы используем PHP для демонстрации работы API.
Для удобства разработчиков Mellow предоставляет песочницу для тестирования перед внедрением в производство. Чтобы воспользоваться песочницей, свяжитесь с отделом продаж Mellow.
Базовый URL
Текущая версия API - v2. Все URL-адреса точек доступа API в этой документации включают следующий базовый URL:
https://my.mellow.io/api
В заголовке каждого запроса вы должны передать Accept: application/json.
Аутентификация и авторизация
Аутентификация выполняется с использованием JSON Web Tokens. После получения JWT, вам необходимо передать его в заголовке запроса: Authorization: Bearer TOKEN_HERE.
Если у вас несколько компаний, вы можете передать параметр x-company-id в заголовке запроса. В этом случае вы можете одновременно делать запросы для всех компаний без обновления токена, просто передавая идентификатор компании в каждом запросе.
Процесс аутентификации выглядит следующим образом:

Срок действия токена
- Каждый запрос
/loginили/token/refreshвыдает новый доступный токен. - Ранее выданные токены остаются действительными до истечения их срока.
- Токены не аннулируются при последующих входах в систему или обновлениях.
Запрос JWT
Пример запроса
curl --location \
--request POST 'https://my.mellow.io/api/login' \
--data-raw '{
"username": "Ivan",
"password": "123123",
"code": 0
}'
Пример ответа Если параметр code был передан корректно или у пользователя не включена двухфакторная аутентификация:
HTTP статус 200 OK
{
"token": "eyJhbGciOiJIUzUxMiIsI...",
"refreshToken": "c84f18a2-c6c7-4850-be15-93f9cbaef3b3"
}
Если параметр code не был передан и у пользователя включена двухфакторная аутентификация:
HTTP статус 200 OK
{
"2FA": {
"type": "SMS" | "Google",
"number": "+8279823472"
}
}
Этот запрос позволяет получить JWT, который используется для аутентификации всех других запросов.
Запрос
HTTP Запрос
https://my.mellow.io/api/login
Параметры
| Имя параметра | Тип | Обязательный | Описание |
|---|---|---|---|
username |
string |
Да | Имя пользователя |
password |
string |
Да | Пароль |
code |
string |
Нет | Код двухфакторной аутентификации. В зависимости от настроек аккаунта пользователя:
|
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
token |
string |
JWT токен |
refreshToken |
string |
JWT токен, используемый для обновления токена, действителен в течение 65 дней |
Обновление JWT
Пример запроса
curl --location \
--request POST 'https://my.mellow.io/api/token/refresh' \
--data-raw '{
"refreshToken": "c84f18a2-c6c7-4850-be15-93f9cbaef3b3"
}'
Пример ответа
HTTP status 200 OK
{
"token": "eyJhbGciOiJIUzUxMiIsI...",
"refreshToken": "c84f18a2-c6c7-4850-be15-93f9cbaef3b3"
}
Этот запрос позволяет получить обновленный JWT, который используется для аутентификации всех других запросов.
Запрос
HTTP Запрос
https://my.mellow.io/api/token/refresh
Параметры
| Имя параметра | Тип | Обязательный | Описание |
|---|---|---|---|
refreshToken |
string |
Да | JWT токен |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
token |
string |
JWT токен |
refreshToken |
string |
JWT токен, используемый для обновления токена, действителен в течение 65 дней |
Ответ API
Все ответы от API форматируются как JSON.
Коды ошибок и их описания
Ниже приведены все возможные коды состояния ответа.
| HTTP Код | Тип | Описание |
|---|---|---|
| 200 | Успех | Запрос выполнен успешно |
| 401 | Ошибка: Неавторизован | Неверные данные аутентификации |
| 403 | Запрещено | Доступ запрещен, ошибка авторизации |
| 422 | Ошибка валидации | Запрос не может быть обработан из-за ошибки валидации. Детали ошибки указаны в теле ответа как {fieldName: errorText} |
| 409 | Ошибка при выполнении запроса | Ошибка во время выполнения запроса. Детали указаны в теле ответа как {"error description"} |
Быстрый старт
Руководство для быстрого старта служит введением в Mellow API и содержит инструкции по наиболее распространенным действиям в системе:

Прежде чем начать
Аутентификация
Аутентификация выполняется с использованием JSON Web Tokens (JWT). После получения JWT, вам необходимо передать его в заголовке запроса: Authorization: Bearer TOKEN_HERE.
Чтобы получить JWT, вам нужно отправить запрос JWT, где вы передаете имя пользователя, пароль и, при необходимости, код 2FA.
Метод и URI запроса: POST https://my.mellow.io/api/login
Примечание: Для тестовой среды используйте:
POST https://demo.mellow.io/api/login
Полученный JWT имеет срок действия 65 дней. По истечении этого периода вам будет необходимо сгенерировать новый токен, повторив процесс аутентификации. Токен необходимо передавать в заголовке всех последующих запросов.
Чтобы узнать больше, смотрите Аутентификация и Авторизация.
Примеры использования API
Основные сценарии использования API зависят от того, как вы взаимодействуете с фрилансерами:
- Ваши подрядчики могут зарегистрироваться в Mellow и выполнять базовые операции там.
- Ваши подрядчики не собираются создавать аккаунты в Mellow, и вы будете сами отправлять им платежи.
Если ваши фрилансеры собираются зарегистрироваться и использовать Mellow, рекомендуемые шаги следующие:

- Найти или пригласить фрилансера. Фрилансер получит пригласительное письмо со ссылкой на регистрацию. Чтобы проверить статус регистрации, сделайте запрос поиска фрилансера с фильтром по электронной почте: пользователи, которые завершили и подтвердили свою регистрацию, будут иметь параметр isRegistered как "true". Далее фрилансеру необходимо пройти верификацию.
- Создать новое задание.
- Фрилансер подтверждает и выполняет задание.
- Принять задание.
- Оплатить задание. Сумма платежа списывается с баланса клиента и зачисляется на баланс фрилансера.
Если ваши фрилансеры не собираются использовать Mellow самостоятельно (менять статусы заданий, добавлять способы оплаты или выводить оплату за задание), то рекомендуемые шаги следующие:

- Найти или пригласить фрилансера.
- Создать новое задание.
- Изменить статусы задания по порядку: "Принято фрилансером", "Выполнено".
- Принять задание.
- Оплатить задание.
- Получить способ оплаты фрилансера или добавить новый. Только фрилансер может добавить новый способ оплаты. Чтобы добавить способ оплаты, необходимо отправить код подтверждения фрилансеру, а затем сгенерировать ссылку на экран, где фрилансер сможет ввести платежные данные.
- Создать выплату на способ оплаты фрилансера за выполненное задание.
Приглашение фрилансеров
Чтобы добавить фрилансера в вашу команду, используйте запрос пригласить фрилансера.
Метод и URI запроса: POST https://my.mellow.io/api/customer/freelancers
Успешный запрос возвращает пустой ответ с кодом 200.
Создание задач
Чтобы создать задачу, используйте этот запрос, передав все необходимые параметры задачи: категорию, атрибуты, имя, описание и цену.
Метод и URI запроса: POST https://my.mellow.io/api/tasks
Успешный запрос возвращает пустой ответ с кодом 200.
Изменение статусов задач
Этапы выполнения задачи следующие:
- Создать задачу
- Начать выполнение задачи
- Завершить задачу
- Принять/отклонить результаты задачи
- Оплатить задачу
При использовании API необходимо выполнять эти этапы последовательно. Оплата задачи производится через отдельный запрос (оплата производится только на баланс фрилансера). Все другие переходы статусов осуществляются с помощью запроса изменения статуса задачи. Другими словами, при отправке запроса необходимо соблюдать последовательность со следующими статусами:
- Начать задачу (
ID=2) - Завершить задачу (
ID=3) - Принять результаты задачи (
ID=4)
Метод и URI запроса: PUT https://my.mellow.io/api/customer/tasks/{taskId||uuid}
Успешный запрос возвращает пустой ответ с кодом 200.
Оплата задачи
Чтобы оплатить задачу, вам нужно указать только ID задачи в этом запросе.
Метод и URI запроса: POST https://my.mellow.io/api/customer/tasks/pay
Успешный запрос возвращает пустой ответ с кодом 200.
Задачи
API включает в себя ряд запросов для управления задачами.
Статусы задач
Это доступные статусы задач в Mellow (на диаграмме представлены только основные, см. полный список статусов в таблице ниже):

| Статус | ID | Описание | Инициировано |
|---|---|---|---|
Draft |
ID=17 |
Задача создана как черновик | Клиент |
Unconfirmed |
ID=1 |
Задача создана | Клиент |
In progress |
ID=2 |
Фрилансер принял задачу для выполнения | Фрилансер |
Pending review |
ID=3 |
Фрилансер завершил задачу, ожидается проверка клиентом | Фрилансер |
Pending payment |
ID=4 |
Задача принята клиентом и ожидает оплаты | Клиент |
Completed |
ID=5 |
Задача оплачена | Клиент |
Rejected by freelancer |
ID=6 |
Фрилансер отклонил задачу | Фрилансер |
Rejected by customer |
ID=8 |
Клиент отклонил выполненную фрилансером задачу | Клиент |
Awaiting freelancer’s confirmation of cancellation |
ID=11 |
Клиент отклонил задачу, ожидается подтверждение отмены от фрилансера | Клиент |
Queued for payment |
ID=12 |
Клиент инициировал оплату, но платеж еще в процессе. После обработки статус задачи автоматически изменится на Завершено (ID=5). Если задача слишком долго находится в этом статусе, пожалуйста, свяжитесь со службой поддержки |
Клиент |
Dispute initiated |
ID=13 |
Фрилансер инициировал спор по задаче и ожидает ответа от клиента | Фрилансер |
Customer review required |
ID=14 |
Если фрилансер не завершил задачу к сроку, клиент должен выбрать, продлить ли срок или отменить задачу | Автоматически по достижении срока |
Changes under review |
ID=16 |
Клиент предложил изменения в параметрах задачи и ожидает ответа фрилансера | Клиент |
Управление задачами
Этот раздел включает запросы на получение, создание задач и изменение статуса задач.
Получение списка задач
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/tasks?filter[creatorId]=123"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
Пример ответа
HTTP status code: 200 OK
{
"items": [
{
"additionalAttributes": null,
"category": {
"id": 20,
"title": "Управление размещением медийной рекламы",
"titleEn": "ATL advertising management",
"titleDoc": "Услуги по управлению размещением рекламных материалов на интернет сайтах",
"titleDocEn": "Services on managing advertising materials' placement at websites"
},
"parentCategory": {
"id": 2,
"title": "Интернет-реклама",
"titleEn": "Internet advertising"
},
"commissionAmount": 7.29,
"commissionPercent": 9,
"copyright": false,
"createType": "API",
"currency": {
"currency": "EUR",
"id": 3
},
"customer": {
"id": 2955,
"title": "Olimp LLC"
},
"creator": {
"id": 100740,
"fullName": "Ivan Petrov"
},
"worker": {
"id": 100871,
"email": "[email protected]",
"firstName": "Nina",
"lastName": "Malina",
"isVerified": true
},
"dateCreated": "2021-08-06 11:17:13",
"dateAccepted": null,
"dateEnd": "2021-08-07 14:17:13",
"dateFinished": null,
"datePaid": "2021-08-06 14:17:13",
"datePayAt": null,
"documentDate": "2021-08-06 14:17:13",
"description": "Task related to social media analysis",
"uuid": "123e4567-e89b-12d3-a456-426655440000",
"files": [
{
"id": 252479,
"name": "analysis_report.pdf",
"typeId": 5,
"ownerId": 100556
}
],
"id": 583689,
"needReport": false,
"price": 150,
"state": 5,
"title": "Freelancer Thailand Project",
"deadline": {
"type": 0,
"triggerDate": null,
"isComingUp": false
},
"hold": {
"type": "without_hold",
"isActive": false
},
"group": {
"id": 654,
"title": "Market Analysis Group"
},
"messageCount": 0,
"activeDispute": null,
"activeChangesetId": null
}
]
"pagination": {
"count": 20,
"total": 102,
"perPage": 20,
"page": </
Запрос
HTTP запрос
Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
filter[creatorId] |
integer |
Нет | ID пользователя, создавшего задачу |
filter[workerId] |
integer |
Нет | ID исполнителя. Для получения списка фрилансеров используйте этот запрос |
filter[companyId] |
integer |
Нет | ID компании. Для списка компаний обратитесь к этому запросу |
filter[dateCreatedFrom] |
string |
Нет | Дата создания задачи (начало диапазона). Формат: YYYY-MM-DD (например, 2020-09-03), время по умолчанию 00:00:00 |
filter[dateCreatedTo] |
string |
Нет | Дата создания задачи (конец диапазона). Формат: YYYY-MM-DD (например, 2020-09-03), время по умолчанию 23:59:59 |
filter[dateEndFrom] |
string |
Нет | Срок выполнения задачи (начало диапазона). Формат: YYYY-MM-DD (например, 2020-09-03), время по умолчанию 00:00:00 |
filter[dateEndTo] |
string |
Нет | Срок выполнения задачи (конец диапазона). Формат: YYYY-MM-DD (например, 2020-09-03), время по умолчанию 23:59:59 |
filter[dateFinishedFrom] |
string |
Нет | Дата завершения задачи (начало диапазона). Формат: YYYY-MM-DD (например, 2020-09-03), время по умолчанию 00:00:00 |
filter[dateFinishedTo] |
string |
Нет | Дата завершения задачи (конец диапазона). Формат: YYYY-MM-DD (например, 2020-09-03), время по умолчанию 23:59:59 |
filter[dateReportFrom] |
string |
Нет | Дата создания отчета (начало диапазона). Формат: YYYY-MM-DD (например, 2020-09-03), время по умолчанию 00:00:00 |
filter[dateReportTo] |
string |
Нет | Дата создания отчета (конец диапазона). Формат: YYYY-MM-DD (например, 2020-09-03), время по умолчанию 23:59:59 |
filter[dateAcceptedFrom] |
string |
Нет | Дата принятия задачи клиентом (начало диапазона). Формат: YYYY-MM-DD (например, 2020-09-03), время по умолчанию 00:00:00 |
filter[dateAcceptedTo] |
string |
Нет | Дата принятия задачи клиентом (конец диапазона). Формат: YYYY-MM-DD (например, 2020-09-03), время по умолчанию 23:59:59 |
filter[datePaidFrom] |
string |
Нет | Дата оплаты задачи (начало диапазона). Формат: YYYY-MM-DD (например, 2020-09-03), время по умолчанию 00:00:00 |
filter[datePaidTo] |
string |
Нет | Дата оплаты задачи (конец диапазона). Формат: YYYY-MM-DD (например, 2020-09-03), время по умолчанию 23:59:59 |
filter[hasPayout] |
boolean |
Нет | Показатель для возврата только оплаченных задач. Значение 0 возвращает задачи без выплат (см. здесь для запросов на выплату). |
filter[priceFrom] |
integer |
Нет | Цена задачи (начало интервала) |
filter[priceTo] |
integer |
Нет | Цена задачи (конец интервала) |
filter[search] |
string |
Нет | Название или описание задачи. Поиск текста в названии или описании задачи. |
filter[state] |
array of integers |
Нет | Статус задачи. Вы можете передать одно или несколько значений (например, state[]=2&state[]=3) |
filter[currencyId] |
integer |
Нет | ID валюты. Возможные значения:
|
filter[groupId] |
integer |
Нет | ID группы задач |
filter[deadlineType] |
integer |
Нет | ID типа срока. Возможные значения:
|
filter[workerTaxationStatus] |
integer |
Нет | Налоговый статус фрилансера. Возможные значения:
|
filter[hasCopyright] |
boolean |
Нет | Указывает на необходимость передачи прав интеллектуальной собственности |
filter[hasReport] |
boolean |
Нет | Указывает, что при выполнении задачи требуется отчет |
filter[payedBy] |
integer |
Нет | ID пользователя, оплатившего задачу |
filter[externalId] |
string |
Нет | Внешний ID задачи, который можно установить при создании задачи (merchant_txid) |
sort |
string |
Нет | Атрибут для сортировки. Возможные значения:
|
direction |
string |
Нет | Порядок сортировки. Возможные значения:
|
page |
integer |
Нет | Номер страницы для пагинации |
size |
integer |
Нет | Количество элементов на странице (по умолчанию 20, максимум 500) |
Ответ
Успешный запрос возвращает следующий ответ:
| Свойство | Тип | Описание |
|---|---|---|
items |
list |
Список элементов |
id |
integer |
ID задачи |
additionalAttributes |
object |
Дополнительные атрибуты задачи |
category |
object |
Категория задачи |
category.id |
integer |
ID категории |
category.title |
string |
Название категории |
category.titleEn |
string |
Название категории на английском |
category.titleDoc |
string |
Название категории для бухгалтерских документов |
category.titleDocEn |
string |
Название категории для бухгалтерских документов (на английском) |
parentCategory |
object |
Родительская категория задачи |
category.id |
string |
ID категории задачи |
category.title |
string |
Название категории задачи |
category.title_en |
string |
Название категории задачи на английском |
commissionAmount |
float |
Сумма комиссии |
commissionPercent |
float |
Процент комиссии |
copyright |
string |
Индикатор передачи прав интеллектуальной собственности |
createType |
string |
Способ создания задачи (через API или интерфейс) |
currency |
object |
Валюта задачи |
currency.currency |
string |
Название валюты задачи |
currency.id |
integer |
ID валюты задачи |
workerCurrency |
object |
Валюта, в которой фрилансер получит средства |
workerCurrency.currency |
string |
Название валюты |
workerCurrency.id |
integer |
ID валюты |
customer |
object |
Клиент |
customer.id |
string |
ID компании |
customer.title |
string |
Название компании |
creator |
object |
Создатель задачи |
creator.id |
integer |
ID пользователя-создателя |
creator.fullName |
string |
Полное имя |
Получение задач по их идентификаторам
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/tasks/c6e8e285-1e0a-4a11-a676-89211c0adccc"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
Пример ответа
HTTP status code: 200 OK
{
"attributes": [
{
"attribute": {
"title": "URL-адрес ",
"titleEn": "URL-address",
"type": "1"
},
"attributeType": {
"title": "Адрес сайта",
"titleEn": "URL adress ",
"type": "text"
},
"values": [
{
"title": "http://some.domain.com"
}
]
}
],
"messages": [],
"creator": {
"id": 100740,
"fullName": "Andrey Smirnov"
},
"worker": {
"id": 100871,
"email": "[email protected]",
"firstName": "Nina",
"lastName": "Malina",
"isVerified": true
},
"files": [],
"links": [],
"messageCount": 0,
"additionalAttributes": null,
"category": {
"id": 20,
"title": "Управление размещением медийной рекламы",
"titleEn": "ATL advertising management",
"titleDoc": "Услуги по управлению размещением рекламных материалов на интернет сайтах",
"titleDocEn": "Services on managing advertising materials' placement at websites"
},
"parentCategory": {
"id": 2,
"title": "Интернет-реклама",
"titleEn": "Internet advertising"
},
"commissionAmount": 7.29,
"commissionPercent": 9,
"copyright": false,
"createType": "API",
"currency": {
"currency": "EUR",
"id": 3
},
"customer": {
"id": 3021,
"title": "OOO Tekhnoprom"
},
"dateCreated": "2021-09-15 09:45:00",
"dateAccepted": "2021-09-15 12:00:00",
"dateEnd": "2021-09-20 18:00:00",
"dateFinished": null,
"datePaid": "2021-09-20 18:30:00",
"datePayAt": null,
"documentDate": "2021-09-20 18:00:00",
"description": "Website development task",
"uuid": "987e1234-a89b-56d3-b123-427677440000",
"id": 584123,
"needReport": true,
"price": 250,
"state": 3,
"title": "WebDev Singapore Project",
"deadline": {
"type": 0,
"triggerDate": null,
"isComingUp": false
},
"hold": {
"type": "without_hold",
"isActive": false
},
"activeDispute": <
Запрос
HTTP запрос
Параметры пути
В качестве параметра пути необходимо передать либо taskId, либо taskUuid, которые можно получить в указанном запросе.
Ответ
Успешный запрос возвращает следующий ответ:
| Свойство | Тип | Описание |
|---|---|---|
id |
integer |
ID задачи |
additionalAttributes |
object |
Дополнительные атрибуты задачи |
category |
object |
Категория задачи |
category.id |
integer |
ID категории |
category.title |
string |
Название категории |
category.titleEn |
string |
Название категории на английском |
category.titleDoc |
string |
Название категории для бухгалтерских документов |
category.titleDocEn |
string |
Название категории для бухгалтерских документов (на английском) |
parentCategory |
object |
Родительская категория задачи |
category.id |
string |
ID категории задачи |
category.title |
string |
Название категории задачи |
category.title_en |
string |
Название категории задачи на английском |
commissionAmount |
float |
Сумма комиссии |
commissionPercent |
float |
Процент комиссии |
copyright |
string |
Это свойство касается передачи прав интеллектуальной собственности |
createType |
string |
Указывает, как была создана задача (через API или интерфейс) |
currency |
object |
Валюта задачи |
currency.currency |
string |
Название валюты задачи |
currency.id |
integer |
ID валюты задачи |
workerCurrency |
object |
Валюта, в которой фрилансер получит средства |
workerCurrency.currency |
string |
Название валюты |
workerCurrency.id |
integer |
ID валюты |
customer |
object |
Клиент |
customer.id |
string |
ID компании |
customer.title |
string |
Название компании |
creator |
object |
Пользователь, создавший задачу |
creator.id |
integer |
ID пользователя, создавшего задачу |
creator.fullName |
string |
Полное имя пользователя, создавшего задачу |
worker |
object |
Фрилансер |
worker.id |
integer |
ID фрилансера (возвращается в запросе получения списка фрилансеров) |
worker.email |
string |
Электронная почта фрилансера |
worker.firstName |
string |
Имя фрилансера |
worker.lastName |
string |
Фамилия фрилансера |
worker.isVerified |
boolean |
Указывает, верифицирован ли фрилансер |
dateCreated |
string |
Дата создания задачи |
dateAccepted |
string |
Дата принятия задачи клиентом |
dateEnd |
string |
Дата окончания срока выполнения задачи |
dateFinished |
string |
Дата завершения выполнения задачи фрилансером |
datePaid |
string |
Дата поступления оплаты за задачу |
datePayAt |
string |
Дата инициации оплаты за задачу |
documentDate |
string |
Дата создания бухгалтерских документов |
needReport |
boolean |
Указывает, требуется ли отчет по задаче |
description |
string |
Описание задачи |
uuid |
uuid |
UUID задачи |
price |
float |
Цена задачи |
state |
integer |
Статус задачи |
title |
string |
Название задачи |
files |
object |
Файлы, прикрепленные к задаче |
files.id |
string |
ID файла |
files.name |
string |
Имя файла |
files.typeId |
string |
Тип файла |
files.ownerId |
string |
ID пользователя, добавившего файл (файлы могут добавлять как клиенты, так и фрилансеры) |
deadline |
object |
Срок выполнения |
deadline.type |
integer |
Тип срока выполнения (1 для мягкого, 2 для жесткого) |
deadline.triggerDate |
string |
Дата срока выполнения |
deadline.isComingUp |
boolean |
Указывает, что срок выполнения наступает менее чем через 3 дня |
hold |
object |
Удержание средств (эскроу) |
hold.type |
string |
Тип удержания (эскроу) |
hold.isActive |
boolean |
Указывает, активно ли удержание (эскроу) для задачи |
hasPayout |
boolean |
Указывает, произошла ли выплата или нет |
messageCount |
integer |
Количество сообщений |
activeDispute |
boolean |
Указывает, есть ли открытый спор |
activeChangesetId |
integer |
Указывает, идет ли согласование изменений по задаче |
serviceFeeCompensation |
integer |
Сумма компенсации комиссии фрилансера |
shareCommission |
boolean |
Указывает, компенсирует ли клиент комиссию фрилансера |
serviceFeeCompensationPercent |
integer |
Процент от стоимости задачи для компенсации комиссии фрилансера |
Создание задачи
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/tasks"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-d '{
"uuid": "9b1c5a73-2f9e-4c18-9bc6-8390a12d6fb8",
"categoryId": 42,
"attributes": [
{
"id": 42,
"value": "5"
}
],
"acceptanceFileIds": [
102, 105
],
"copyright": true,
"needReport": false,
"title": "Market Analysis Report",
"description": "Detailed report on market trends and projections for Q3 2022",
"externalId": "MAR-20220622",
"fileIds": [
102, 103, 104
],
"workerId": 15,
"editGroup": [
105, 107
],
"deadline": "2022-07-15T17:00:00.000Z",
"price": 1500,
"validateOnly": true,
"shareCommission": true
}
'
Пример ответа
HTTP status code: 200 OK
Метод используется для создания новых задач.
Теперь конечная точка поддерживает параметр workerCurrency, позволяющий указать валюту (USD, EUR, RUB), в которой фрилансер получит оплату. Если выбранная валюта отличается от валюты баланса вашего счета, система автоматически конвертирует сумму задачи по курсу сервиса на момент создания задачи. Если средств недостаточно, задача будет создана в статусе черновика.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
uuid |
string |
Нет | UUID задачи UUID (если не указан, параметр определяется автоматически) |
categoryId |
integer |
Да | ID категории услуги/работы задачи. Для получения списка всех доступных услуг и работ используйте этот запрос |
attributes |
object |
Да | Атрибуты задачи. Требуется как минимум 3 атрибута. Для получения списка всех доступных атрибутов задачи используйте этот запрос |
attributes.id |
integer |
Да | ID атрибута |
attributes.value |
string |
Да | Значение атрибута задачи. Для атрибутов типа "выбор" необходимо указать текстовое значение |
acceptanceFileIds |
array |
Нет | Файлы, которые фрилансер должен подписать для принятия задачи |
copyright |
boolean |
Нет | Указывает на необходимость передачи прав интеллектуальной собственности |
needReport |
boolean |
Нет | Указывает на необходимость прикрепления отчета к выполненной задаче |
title |
string |
Да | Название задачи |
description |
string |
Да | Описание задачи |
fileIds |
string |
Нет | Файлы, которые нужно прикрепить к задаче |
workerId |
integer |
Да | ID фрилансера. Для получения списка фрилансеров используйте этот запрос |
editGroup |
array |
Нет | Группа задач. Для получения списка доступных групп используйте этот запрос |
externalId |
string |
Нет | ID, который можно установить при создании задачи (merchant_txid) |
deadline |
date |
Да | Срок выполнения задачи (например, 2022-05-19 11:53:03) |
price |
float |
Да | Цена задачи |
workerCurrency |
string |
Нет | Валюта, в которой фрилансер получит средства. Поддерживаемые значения можно получить, используя Get Allowed Currencies for Multicurrency Tasks. Если отличается от валюты баланса заказчика, сумма будет автоматически конвертирована по текущему курсу обслуживания. Если средств недостаточно, задача будет создана в статусе черновика. Позже вы можете опубликовать черновик, используя запрос Publishing a Draft Task. |
validateOnly |
boolean |
Нет | Определяет, должен ли API только проверить предоставленные параметры задачи, вместо того чтобы создавать задачу. Если true, система проверяет все бизнес-правила, необходимые для создания задачи (такие как значения атрибутов, действительность ID услуги, достаточность баланса) и возвращает найденные ошибки валидации, а также рассчитанную стоимость в случае мультивалютности. Сама задача не создается. Это не проверяет действия со стороны фрилансера, такие как подписание предложения или верификация — проверяются только условия, необходимые для создания задачи. |
shareCommission |
boolean |
Нет | Указывает, делится ли комиссия с фрилансером (если 0, комиссия полностью оплачивается клиентом, если 1, 1% комиссии клиента компенсируется фрилансером). Если не указано, комиссия оплачивается клиентом |
Ответ
Успешный запрос возвращает UUID созданной задачи.
Публикация черновика задачи
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/tasks/publish-draft"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-d '{
"taskId": 12345,
"uuid": "8e947213-c114-41ec-a9ae-0242ac130002",
"companyId": 2
}'
Пример ответа
HTTP status code: 200 OK
{
"uuid": "8e947213-c114-41ec-a9ae-0242ac130002"
}
Этот метод используется для публикации ранее созданного черновика задачи и перевода его в активный статус.
Задача будет опубликована только в случае наличия достаточных средств на счету. Если публикация проходит успешно, задача становится доступной для фрилансера.
Запрос
HTTP запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
taskId |
integer |
Нет | ID задачи. Если предоставлены и taskId, и uuid, будет использован taskId |
uuid |
string |
Нет | UUID задачи. Может использоваться вместо taskId |
companyId |
integer |
Да | ID компании (арендатора). Обязателен, если вы управляете несколькими компаниями в рамках своего аккаунта |
Ответ
| Свойство | Тип | Описание |
|---|---|---|
uuid |
string |
UUID опубликованной задачи |
Если произойдет ошибка (например, недостаточно средств), будет возвращено соответствующее сообщение об ошибке.
Получение разрешенных валют для задач с мультивалютными опциями
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/tasks/allowed-currencies?companyId=YOUR_COMPANY_ID" \
-H "accept: */*" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Пример ответа
HTTP статус код: 200 OK
[
{
"id": 1,
"currency": "USD"
},
{
"id": 2,
"currency": "EUR"
}
]
Получает список валют, разрешенных для задач с мультивалютными опциями, специфичных для определенной компании.
Запрос
HTTP Запрос
Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| companyId | number | yes | Уникальный идентификатор компании |
Ответ
| Свойство | Тип | Описание |
|---|---|---|
| id | number | Уникальный идентификатор валюты |
| currency | string | Код валюты (например, "USD", "EUR") |
Расчет общей стоимости задачи
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/tasks/total-cost" \
-H "accept: */*" \
-H "Authorization: Bearer At__4mVoDg_6dx4TEXOKc_azImBl..." \
-H "Content-Type: application/json" \
-d '{
"uuid": "cbe8003e-e9e0-46a9-b15b-7c0227273b2e",
"price": 1,
"workerCurrency": "USD",
"shareCommission": false,
"workerId": 101048,
"categoryId": 18,
"companyId": 2853
}'
Пример ответа
HTTP статус код: 200 OK
{
"price": 0.95,
"commission": 0.1,
"commissionPercent": 10,
"shareCommission": false,
"sharedCommission": 0,
"salesTax": 0,
"total": 1.05,
"amountForWorker": 1,
"VAT": 0.21,
"VATPercent": 20,
"currency": {
"id": 3,
"currency": "EUR"
},
"workerCurrency": {
"id": 2,
"currency": "USD"
},
"priceWithActualCurrencyExchangeRate": {
"isChanged": false,
"price": 0.95,
"commission": 0.1,
"commissionPercent": 10,
"shareCommission": false,
"sharedCommission": 0,
"salesTax": 0,
"total": 1.05,
"amountForWorker": 1,
"VAT": 0.21,
"VATPercent": 20,
"currency": {
"id": 3,
"currency": "EUR"
},
"workerCurrency": {
"id": 2,
"currency": "USD"
}
},
"exchangeRate": {
"base": {
"id": 2,
"currency": "USD"
},
"target": {
"id": 3,
"currency": "EUR"
},
"rate": 1.0576
}
}
Рассчитывает общую стоимость, налог с продаж и текущий обменный курс для задачи, включающей несколько валют. Это особенно полезно для проектов, где валюта выплат фрилансеру отличается от валюты баланса клиента.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| uuid | string | yes | UUID задачи |
| price | number | yes | Цена задачи |
| workerCurrency | string | yes | Код валюты работника (например, "USD") |
| shareCommission | boolean | yes | Делиться ли комиссией |
| workerId | number | yes | ID работника |
| categoryId | number | yes | ID категории |
| companyId | number | yes | ID компании |
Ответ
| Свойство | Тип | Описание |
|---|---|---|
| price | number | Базовая цена, используемая для расчета |
| commission | number | Сумма комиссии |
| commissionPercent | number | Процент комиссии |
| shareCommission | boolean | Делится ли комиссия |
| sharedCommission | number | Сумма делёной комиссии |
| salesTax | number | Сумма налога с продаж (применимо только для компаний в США) |
| total | number | Общая сумма, включая налоги и комиссии |
| amountForWorker | number | Сумма, выделенная для работника |
| VAT | number | Сумма налога на добавленную стоимость (НДС) |
| VATPercent | number | Процент НДС |
| currency | object | Целевая валюта (id, currency) |
| workerCurrency | object | Валюта работника (id, currency) |
| priceWithActualCurrencyExchangeRate | object | Расчет с текущим обменным курсом (полный объект, как корень) |
| exchangeRate | object | Обменный курс валюты (base, target, rate) |
Изменение статуса задачи
Пример запроса
curl -X PUT "https://my.mellow.io/api/customer/tasks/c6e8e285-1e0a-4a11-a676-89211c0adccc"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
Пример ответа
HTTP status code: 200 OK
{
"state": 3
}
Этот метод используется для изменения статуса задачи на основе действий фрилансера. Перед использованием этого запроса, пожалуйста, свяжитесь со службой поддержки Mellow, чтобы добавить дополнительные права доступа к сервису. Вы можете переключаться на следующие статусы: Начать задачу (ID=2), Завершить задачу (ID=3), Отклонить задачу (ID=6), и Подтвердить отказ, если задача была отклонена клиентом (ID=8).
Существуют дополнительные запросы для отклонения/прекращения задачи или возобновления работы.
Запрос
HTTP запрос
Параметры пути
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
taskId |
integer |
Требуется либо taskId, либо uuid |
ID задачи. Для получения списка задач используйте этот запрос. |
uuid |
string |
Требуется либо taskId, либо uuid |
UUID задачи |
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
state |
integer |
Да | Статус задачи. Доступные статусы: начать задачу (ID=2), завершить задачу (ID=3), отклонить задачу (ID=6), и подтвердить отказ, если задача была отклонена клиентом (ID=8). |
Ответ
Успешный запрос возвращает пустой ответ.
Возможные ошибки:
- Неподписанное соглашение о предложении. Если есть новое соглашение о предложении, которое требуется для начала задачи, пользователь должен принять его.
{ "error": "Для начала задачи, пожалуйста, подпишите соглашение о предложении", "code": 11 }
Изменение срока
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/tasks/prolong-deadline"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
Пример ответа
HTTP status code: 200 OK
Этот метод используется для продления срока выполнения задачи только для задач в статусе "Ожидание действий от клиента".
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
taskId |
integer |
Требуется либо taskId, либо uuid |
ID задачи. Чтобы получить список задач, используйте этот запрос. |
uuid |
string |
Требуется либо taskId, либо uuid |
UUID задачи. |
deadline |
date |
Да | Дата нового срока в формате 2022-07-25T15:00:58.295Z |
Ответ
Успешный запрос возвращает пустой ответ.
Проверка наличия проблем перед началом задачи
Пример запроса
curl -X GET "http://my.mellow.io/api/customer/freelancers/check-task-requirements?taskUuid=837843c9-72e5-48e2-a133-e97e347373af&freelancerUuid=ec304480-5e3f-4bb7-a9e5-dbb49fb673e9"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
Пример ответа
HTTP status code: 200 OK
{
"url": "http://my.mellow.io/agreement",
"templateUuid": "1as7ac19-5y33-4a3a-94b3-b4a26374de4d"
}
Этот запрос указывает, может ли фрилансер начать задачу или есть ли препятствия (например, необходимость повторно подписать договор предложения или пройти верификацию). Поэтому этот запрос должен быть вызван перед изменением статуса задачи на «Начать задачу» (ID=2). Возможные проблемы:
- Необходимо повторно подписать договор предложения. Необходимо показать фрилансеру новый договор предложения, убедиться, что он согласен с ним, и вызвать запрос «Принять предложение от имени фрилансера».
- Фрилансеру необходимо пройти верификацию.
- Фрилансер должен принять документы о неразглашении (NDA).
С 9 августа 2025 года этот запрос также будет проверять, что профиль фрилансера и налоговая информация полностью заполнены. В частности, должны быть предоставлены taxNumber и taxResidenceCountry. Вы можете предоставить идентификационный номер налогоплательщика фрилансера, используя точку доступа для добавления идентификационного номера налогоплательщика фрилансера. Если эти поля отсутствуют, ответ будет включать сведения о неполных данных, и фрилансер не сможет принять задачу, пока не будет предоставлена вся необходимая информация.
Типы требований
Ответ представляет собой список элементов, которые фрилансер должен решить, прежде чем он сможет начать задачу. Каждый элемент имеет name и, при необходимости, data полезную нагрузку.
Элементы делятся на две категории: документы для подписания и флаги профиля/состояния. Документы подписываются через одну из двух точек доступа в зависимости от name. Флаги требуют, чтобы фрилансер предпринял действия в своем аккаунте (заполнил профиль, прошел верификацию, вывел средства) — их нельзя решить через API на стороне клиента.
Важно: correctiveDocument — это единственное значение name, подписанное через sign-corrective-document. Все остальные документы проходят через sign-agreement. Один ответ может содержать оба — подпишите каждый элемент с правильной точкой доступа.
Флаги профиля и состояния
Для каждого name ниже в таблице указано, что клиент может сделать через API для его решения, или отмечено, что флаг может быть снят только фрилансером (или в процессе проверки Mellow).
| name | Что это значит | Как клиент может это решить |
|---|---|---|
profileNotCompleted |
Профиль не содержит необходимых полей (например, гражданство, дата рождения, адрес, почтовый индекс, город) | Если фрилансер еще не активировал свой аккаунт: PUT /api/customer/freelancers/profile (Редактирование личной информации фрилансера). После активации поля профиля, такие как адрес и гражданство, могут быть изменены только самим фрилансером. Обновление профиля фрилансера охватывает только firstName, lastName, note, specialization |
taxInfoRequired |
Отсутствует налоговая информация - требуются taxNumber и taxResidenceCountry |
POST /api/customer/freelancers/tax-info (Добавление идентификационного номера налогоплательщика фрилансера). Используйте GET /api/customer/freelancers/get-tax-document-types для поиска допустимого типа для страны фрилансера |
verification |
Фрилансер не верифицирован (код проблемы WORKER_NOT_VERIFIED) |
GET /api/customer/freelancers/verification-link возвращает terminal_url. Отправьте ссылку фрилансеру; он завершит проверку личности в Mellow |
ageRestriction |
Фрилансер младше минимально допустимого возраста | Если аккаунт еще не активирован и дата рождения была введена неверно: PUT /api/customer/freelancers/profile |
w9FormRequired |
Требуется американская налоговая форма W-9 | Фрилансер должен предоставить форму |
w9FormUpdateNeeded |
Необходимо обновить существующую форму W-9 | Фрилансер должен предоставить форму |
w8BenFormRequired |
Требуется неамериканская налоговая форма W-8BEN | Фрилансер должен предоставить форму |
w8BenFormUpdateNeeded |
Необходимо обновить существующую форму W-8BEN | Фрилансер должен предоставить форму |
w9FormInPendingState |
Форма W-9 находится на рассмотрении в Mellow | Никаких действий — ожидайте завершения проверки |
w9FormDeclined |
Форма W-9 была отклонена | Фрилансер должен повторно предоставить форму |
w8BenFormInPendingState |
Форма W-8BEN находится на рассмотрении в Mellow | Никаких действий — ожидайте завершения проверки |
w8BenFormDeclined |
Форма W-8BEN была отклонена | Фрилансер должен повторно предоставить форму |
withdrawFundsRequired |
Фрилансер должен вывести средства со своего баланса перед продолжением (применяется, когда изменяется промежуточная юридическая структура) | Действие на стороне фрилансера |
Запрос
HTTP запрос
Параметры пути
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
taskUuid |
uuid |
Да | UUID задачи, который возвращается при вызове запросов получение задачи по ID или "получение списка задач" |
freelancerUuid |
uuid |
Да | UUID фрилансера, который возвращается при вызове запроса пригласить нового фрилансера |
Ответ
Если проблем не найдено, то ответ возвращается пустым.
| Имя свойства | Тип | Описание |
|---|---|---|
name |
string |
Название проблемы |
data |
object |
Детали документа, который необходимо подписать (или любое другое ограничение, которое должно быть соблюдено для начала работы над задачей). Если ограничение связано с верификацией (name=verification), это поле будет содержать пустой объект. |
data.url |
string |
URL документа, который необходимо переподписать |
data.templateUuid |
string |
UUID документа |
data.code |
string |
Код проблемы |
reason |
string |
Причина проблемы (например, задача находится в санкционном списке и поэтому требует подписания договора предложения перед началом работы) |
Принятие задачи
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/tasks/accept"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-d '{
"uuid": "123e4567-e89b-12d3-a456-426655440000"
}'
Пример ответа
HTTP status code: 200 OK
Этот метод используется для принятия результатов работы фрилансера. Его можно вызывать только для задач в статусе «Завершено» (ID=3).
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
taskId |
integer |
Требуется либо taskId, либо uuid |
ID задачи. Чтобы получить список задач, используйте этот запрос. |
uuid |
string |
Требуется либо taskId, либо uuid |
UUID задачи |
Тело запроса
Дополнительные параметры не требуются.
Ответ
Успешный запрос возвращает пустой ответ.
Оплата задания
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/tasks/pay"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-d '{
"uuid": "123e4567-e89b-12d3-a456-426655440000"
}'
Пример ответа
HTTP status code: 200 OK
Этот метод используется для оплаты заданий. Средства списываются с баланса клиента и зачисляются на баланс фрилансера. Этот метод можно использовать только для оплаты задания, которое находится в статусе "Ожидает оплаты" (ID = 4).
Запрос
HTTP Запрос
Тело запроса
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
taskId |
integer |
Требуется либо taskId, либо uuid |
ID задачи. Чтобы получить список задач, используйте этот запрос. |
uuid |
string |
Требуется либо taskId, либо uuid |
UUID задачи. |
Ответ
Успешный запрос возвращает пустой ответ.
Оплата задания при создании
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/tasks/quick-pay"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-d '{
"taskId": 1
} '
Пример ответа
HTTP status code: 200 OK
Этот метод используется для оплаты заданий, находящихся в статусе New. Вы можете создать новое задание и сразу вызвать этот запрос, и статус задания изменится на Paid (в отличие от предыдущего запроса, который может изменить статус задания только на Paid из статуса Pending payment). Этот метод работает только для заданий, которые не требуют дополнительных документов (договоров предложения, NDA) для подписания фрилансером.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
taskId |
integer |
Требуется либо taskId, либо uuid |
ID задачи. Чтобы получить список задач, используйте этот запрос. |
uuid |
string |
Требуется либо taskId, либо uuid |
UUID задачи |
companyId |
integer |
Нет | ID компании |
Ответ
Успешный запрос возвращает пустой ответ.
Отклонение/Отказ от задачи
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/tasks/decline
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-d '{
"taskId": 180012
}'
Пример ответа
HTTP status code: 200 OK
Этот метод используется для отклонения (отказа) от задачи. В зависимости от статуса задачи до запроса, после выполнения запроса статус изменится на:
- Для статусов Новая (
ID=1), В процессе (ID=2), Ожидание подтверждения исполнителем отказа (ID=11), новый статус будет Отклонено клиентом (ID=8). - Для статусов Ожидание оплаты (
ID=4) и Отзыв клиента (ID=3), новый статус будет Ожидание подтверждения исполнителем отказа (ID=11). - Для статусов Одобрение изменений (
ID=16), Инициирован спор (ID=13), Завершено (ID=5), Отклонено исполнителем (ID=6) и Ожидание подтверждения исполнителем отказа (ID=11), будет возвращена ошибка.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
taskId |
integer |
Да | ID задачи. Чтобы получить список задач, используйте этот запрос. |
Ответ
Успешный запрос возвращает пустой ответ.
Возобновление задачи
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/tasks/return-to-work
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-d '{
"taskId": 180012
}'
Пример ответа
HTTP статус код: 200 OK
Этот метод используется для возобновления работы над задачей. Задачу можно вернуть только в статус В процессе (ID=2) из статуса Проверка клиентом (ID=3). Для всех других статусов будет возвращена ошибка. Смотрите подробную схему основных статусов задач здесь.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
taskId |
integer |
Да | ID задачи. Чтобы получить список задач, используйте этот запрос. |
Ответ
Успешный запрос возвращает пустой ответ.
Чат задач
Клиенты и фрилансеры могут оставлять сообщения в рамках задач. Этот раздел описывает, как вы можете просматривать существующие сообщения или отправлять новые.
Получение сообщений задачи
Пример запроса
curl -X GET "https://my.mellow.io/api/tasks/583689/messages"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
Этот метод используется для получения сообщений из заданной задачи.
Запрос
HTTP Запрос
Параметры пути
В качестве параметра пути необходимо передать идентификатор задачи.
Добавление сообщений к задаче
Пример запроса
curl -X POST "https://my.mellow.io/api/tasks/messages"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"taskId":583689,
"message":"Задача готова, let's go"
}"
Пример ответа
HTTP status code: 200 OK
Этот метод используется для добавления сообщения к задаче. Отправителем сообщений является авторизованный пользователь.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
taskId |
integer |
Да | ID задачи |
message |
string |
Да | Текст сообщения |
Ответ
Успешный запрос возвращает пустой ответ.
Рабочая группа
Получение групп задач
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/task-groups"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
Пример ответа
HTTP status code: 200 OK
{
"items": [
{
"id": 650,
"companyId": 2955,
"color": "FFFFFF",
"title": "string",
"createdAt": "2021-12-01 20:59:52"
}
],
"pagination": {
"count": 3,
"total": 3,
"perPage": 20,
"page": 1,
"pages": 1
}
}
Этот метод используется для получения списка групп задач.
Запрос
HTTP запрос
Параметры
Дополнительные параметры запроса отсутствуют.
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
items |
object |
Группы задач |
items.id |
integer |
ID группы задач |
items.companyId |
integer |
ID клиента |
items.color |
string |
Цвет иконки группы |
items.title |
string |
Название группы |
items.createdAt |
string |
Дата создания группы задач |
pagination |
object |
Страницы |
pagination.count |
integer |
Текущая страница |
pagination.total |
integer |
Количество страниц |
pagination.perPage |
integer |
Количество задач на странице |
pagination.page |
integer |
Текущая страница |
pagination.pages |
integer |
Количество страниц |
Переименование группы задач
Пример запроса
curl -X PUT "https://my.mellow.io/api/customer/task-groups"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"groupId":650,
"title":"new name"
}"
Пример ответа
HTTP status code: 200 OK
{
"actorId": 100740,
"companyId": 2955,
"groupId": 650,
"title": "new name"
}
Этот метод используется для изменения названия группы задач.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
groupId |
integer |
Да | ID группы |
title |
string |
Да | Новое имя группы задач |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
actorId |
integer |
ID пользователя, обновившего имя группы задач |
companyId |
integer |
ID компании |
groupId |
integer |
ID группы задач |
title |
string |
Имя группы задач |
Создание групп задач
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/task-groups"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"title": "new task group"
}"
Пример ответа
HTTP status code: 200 OK
{
"actorId": 100740,
"companyId": 2955,
"title": "new task group"
}
Этот метод используется для создания группы задач.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
title |
string |
Да | Название новой группы задач |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
actorId |
integer |
ID пользователя, запросившего создание задач |
companyId |
integer |
ID компании |
title |
string |
Название группы задач |
Удаление групп задач
Пример запроса
curl -X DELETE "https://my.mellow.io/api/customer/task-groups"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"groupId": 650
}"
Пример ответа
HTTP status code: 200 OK
{
"actorId": 100740,
"companyId": 2955,
"groupId": 650
}
Этот метод используется для удаления группы задач.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
groupId |
integer |
Да | ID группы задач |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
actorId |
integer |
ID пользователя, запросившего создание задач |
companyId |
integer |
ID компании |
groupId |
integer |
ID группы задач |
Файлы задания
Добавление файлов к задаче
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/tasks/files"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-d '{
"uuid": "123e4567-e89b-12d3-a456-426655440000",
"file": "/Users/solar/tmp/1c_report_example.xml",
"type": "5"
}'
Пример ответа
HTTP status code: 200 OK
Этот метод используется для добавления файлов к задаче.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
file |
string |
Да | Путь к файлу (например, /Users/solar/tmp/1c_report_example.xml) |
taskId |
integer |
Требуется либо taskId, либо uuid |
ID задачи. Чтобы получить список задач, используйте этот запрос. |
uuid |
string |
Требуется либо taskId, либо uuid |
UUID задачи. |
type |
integer |
Да | Тип файла. Возможные значения:
|
Ответ
Успешный запрос возвращает пустой ответ.
Фрилансеры
Этот раздел содержит методы управления фрилансерами, включая:
- Пригласить фрилансера
- Изменить данные фрилансера
- Удалить фрилансера из команды клиента
- Подписать исправительный документ от имени фрилансера
Приглашение фрилансера
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/freelancers"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"email": "[email protected]",
"note": "Опытный фронтенд-разработчик с акцентом на React и TypeScript.",
"inEnglish": true,
"sendEmail": true
}
"
Пример ответа
HTTP status code: 200 OK
{
"uuid": "b2e2671d-f850-493f-83ba-f236d3192974",
"freelancerId": 123
}
Создает новый профиль фрилансера и добавляет фрилансера в вашу команду, отправляя ему приглашение по электронной почте.
Существует два основных способа настройки фрилансера в Mellow:
1. Самостоятельная регистрация фрилансера:
Когда вы приглашаете фрилансера по электронной почте, он получает ссылку на регистрацию и самостоятельно завершает регистрацию в интерфейсе Mellow. В этом случае фрилансер самостоятельно вводит всю необходимую личную и налоговую информацию во время регистрации. Клиенту требуется только указать адрес электронной почты фрилансера в запросе.
2. Регистрация от имени фрилансера:
Если фрилансер не будет регистрироваться сам, вы (клиент) должны предоставить все личные данные и налоговую информацию непосредственно в запросе API. Все обязательные поля должны быть заполнены до того, как фрилансер сможет принимать задания. Этот путь требует от вас предоставления личных данных фрилансера, адреса, гражданства и налогового резидентства.
С 9 августа 2025 года поле email является обязательным, и приглашение фрилансеров по номеру телефона больше не поддерживается. Если вы используете второй способ, поля, такие как citizenship,birthdate, address, postalCode, city, state, и country должны быть предоставлены в запросе.
Требования к налоговым данным
Предоставление информации о налогоплательщике обязательно для поддержания активного профиля фрилансера.
См. Добавление идентификационного номера налогоплательщика фрилансера.
- Для некоторых стран налоговый документ является обязательным. Профили налоговых резидентов этих стран должны включать действительный налоговый номер, чтобы считаться завершенными. Фрилансер также может добавить или изменить эту информацию позже в своем аккаунте Mellow.
- Для других стран, где налоговый документ не обязателен, профиль можно завершить, предоставив либо налоговый документ либо страну рождения. Если у фрилансера нет налогового документа, вы (или он) должны предоставить страну рождения. Фрилансер также может обновить эту информацию непосредственно в своем аккаунте.
Требования к соглашению о предложении фрилансеру
Для начала работы в сервисе фрилансер должен подписать соглашение о предложении. Если фрилансер регистрируется самостоятельно, ему будет предложено подписать предложение перед принятием первого задания. Если вы завершаете регистрацию от его имени, вы должны убедиться, что предложение принято, прежде чем он сможет начать работу. Перед изменением статуса задания на "Начать задание" или выполнением любого действия, переводящего в этот статус (например, быстрая оплата задания), выполните проверку на наличие ограничений с помощью Проверка на наличие проблем перед началом задания. Если предложение не подписано, используйте точку доступа Принять предложение от имени фрилансера для продолжения.
Эти требования применяются для активации профиля фрилансера, а также проверяются при создании предложений или счетов.
Запрос возвращает UUID фрилансера, который можно использовать в последующих вызовах API, таких как получение деталей фрилансера, удаление фрилансера из вашей команды или управление его платежными методами.
Невозможно указать свой собственный UUID: он генерируется автоматически.
Кроме того, вы можете самостоятельно сгенерировать ссылку на регистрацию, используя возвращенный UUID, и отправить ее напрямую фрилансеру.
Для формирования ссылки на регистрацию используйте следующий формат:
https://my.mellow.io/registration/invite?utm_source=company_invite&utm_medium=invite&invite_from={company_id}&hashtoken={freelancer_uuid}&type=freelancer-registration
invite_from— ваш идентификатор компанииhashtoken— UUID фрилансера, возвращенный этим запросомtype—freelancer-registrationutm_source—company_inviteutm_medium—invite
Все параметры URL, кроме invite_from и hashtoken, остаются неизменными, как показано выше.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
email |
string |
Да | Электронная почта фрилансера |
phone |
string |
Нет | Телефон фрилансера (только цифры, без пробелов и специальных символов) |
firstName |
string |
Нет | Имя фрилансера |
lastName |
string |
Нет | Фамилия фрилансера |
middleName |
string |
Нет | Отчество фрилансера |
citizenship |
string |
Нет | Гражданство. Это поле должно быть указано, если фрилансер не будет регистрироваться в сервисе самостоятельно. |
address |
string |
Нет | Улица, дом |
postalCode |
string |
Нет | Почтовый индекс |
city |
string |
Нет | Город |
state |
string |
Нет | Штат/регион |
country |
string |
Нет | Страна. Это поле должно быть указано, если фрилансер не будет регистрироваться в сервисе самостоятельно. |
birthdate |
string |
Нет | Дата рождения фрилансера |
birthCountry |
string |
Нет | Страна рождения фрилансера |
specialization |
integer |
Нет | Идентификатор специализации фрилансера. Значение — это целочисленный ID, соответствующий одной из записей в справочнике специализаций. |
note |
string |
Нет | Описание фрилансера |
inEnglish |
boolean |
Нет | Указывает, что приглашение должно быть отправлено на английском языке |
sendEmail |
boolean |
Нет | Указывает, будет ли отправлено электронное письмо. Если нет, то фрилансер будет добавлен в команду клиента без получения электронного письма. |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
uuid |
string | UUID фрилансера |
freelancerId |
string | ID фрилансера |
Редактирование профиля фрилансера
Пример запроса
curl -X PATCH "https://my.mellow.io/api/customer/freelancers/profile" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{
"freelancerId": "152",
"firstName": "Emily",
"lastName": "Roberts",
"middleName": "Jane",
"residenceCountry": "US",
"citizenship": "CA",
"birthDate": "1991-04-15",
"city": "San Francisco",
"address": "200 Market St, Apt 5B",
"postalCode": "94111",
"state": "CA",
"language": "EN"
}
"
Пример ответа
HTTP status code: 200 OK
Редактируйте данные профиля фрилансера. Этот метод можно использовать только для фрилансеров, которые еще не активировали свой аккаунт и не прошли верификацию. Он особенно полезен, если фрилансер еще не принял приглашение или не зарегистрировался самостоятельно, но вам необходимо дополнить или исправить информацию в его профиле (такую как имя, адрес или другие необходимые данные) до завершения процесса регистрации и адаптации.
Запрос
HTTP запрос
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| freelancerId | integer | Требуется один из freelancerId или freelancerUuid |
Внутренний ID фрилансера |
| freelancerUuid | string | Требуется один из freelancerId или freelancerUuid |
UUID фрилансера |
| firstName | string | Нет | Имя фрилансера |
| lastName | string | Нет | Фамилия фрилансера |
| middleName | string | Нет | Отчество фрилансера |
| residenceCountry | string | Нет | Страна проживания (код страны ISO) |
| citizenship | string | Нет | Гражданство (код страны ISO) |
| birthDate | string | Нет | Дата рождения (строка даты-времени ISO 8601) |
| birthCountry | string | Нет | Страна рождения фрилансера |
| city | string | Нет | Город |
| address | string | Нет | Улица, дом |
| postalCode | string | Нет | Почтовый индекс |
| state | string | Нет | Штат или регион |
| language | string | Нет | Предпочитаемый язык интерфейса. Enum: EN, RU |
Ответ
Успешный запрос возвращает пустой ответ.
Получение списка фрилансеров
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/freelancers?filter[taxationStatusId]=1"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
Пример ответа
HTTP status code: 200 OK
{
"items": [
{
"id": 1,
"uuid": "9b2cf17c-8f33-4e7a-89b4-c5a1d2630de4",
"email": "[email protected]",
"name": "Алексей Миронов",
"taxationStatusId": 3,
"taxationBlockedTill": "2022-12-31",
"categoryTitle": "Консультант",
"categoryTitleEn": "Consultant",
"details": {
"firstName": "Алексей",
"lastName": "Миронов",
"note": "Специалист по финансовым вопросам",
"specialization": "Финансовый консультант"
},
"country": "RU",
"isVerified": true,
"isInviteSent": true,
"inviteSentAt": "2021-12-23T18:48:40.800Z",
"registerDate": "2021-12-23T18:48:40.800Z",
"isRegistered": true
}
],
"pagination": {
"count": 20,
"total": 41,
"perPage": 20,
"page": 1,
"pages": 3
}
}
Этот запрос используется для получения списка фрилансеров.
Запрос
HTTP запрос
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
filter[taxationStatusId] |
integer |
Нет | ID налогового статуса. Возможные значения:
|
filter[isVerified] |
boolean |
Нет | Указывает, верифицирован ли аккаунт фрилансера |
filter[isInviteEmailSent] |
boolean |
Нет | Указывает, было ли отправлено приглашение фрилансеру |
filter[dateInvitedFrom] |
string |
Нет | Дата приглашения (начало интервала) |
filter[dateInvitedTo] |
string |
Нет | Дата приглашения (конец интервала) |
page |
integer |
Нет | Номер страницы для пагинации |
size |
integer |
Нет | Количество элементов на странице (по умолчанию 20, максимум 500) |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
items |
list |
Список фрилансеров |
items.id |
integer |
ID фрилансера |
items.uuid |
uuid |
UUID фрилансера UUID |
items.email |
string |
Электронная почта фрилансера |
items.name |
string |
Имя фрилансера |
items.taxationStatusId |
integer |
Налоговый статус фрилансера |
items.taxationBlockedTill |
integer |
Дата, до которой нельзя изменить налоговый статус |
items.categoryTitle |
string |
Специализация фрилансера |
items.categoryTitleEn |
string |
Название специализации на английском |
items.details |
object |
Личные данные фрилансера |
items.details.firstName |
string |
Имя фрилансера |
items.details.lastName |
string |
Фамилия фрилансера |
items.details.note |
string |
Описание фрилансера |
items.details.specialization |
string |
Специализация фрилансера |
items.country |
string |
Код страны фрилансера (две буквы, например, AM для Армении) |
items.isVerified |
boolean |
Указывает, верифицирован ли аккаунт |
items.isInviteSent |
boolean |
Указывает, что приглашение было отправлено |
items.inviteSentAt |
string |
Дата отправки приглашения |
items.registerDate |
string |
Дата регистрации |
items.isRegistered |
boolean |
Указывает, что фрилансер принял приглашение и предоставил личные данные |
items.isTaxPaymentAllowed |
boolean |
Указывает, разрешена ли автоматическая оплата налогов |
pagination |
list |
Постраничный вывод |
pagination.count |
integer |
Количество возвращенных элементов |
pagination.total |
integer |
Общее количество элементов, доступных с запрошенным фильтром |
pagination.perPage |
integer |
Количество элементов на страницу |
pagination.page |
integer |
Номер текущей страницы |
pagination.pages |
integer |
Общее количество страниц |
Поиск фрилансеров по электронной почте
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/freelancer-by-email/{email}"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
Пример ответа
HTTP status code: 200 OK
{
"id": 12,
"email": "[email protected]",
"name": "Michael Adams",
"taxationStatusId": 0,
"taxationBlockedTill": "",
"categoryTitle": "Developer",
"categoryTitleEn": "Developer",
"details": {
"firstName": "Michael",
"lastName": "Adams",
"note": "Experienced in building scalable web applications using modern technologies like React, Node.js, and PostgreSQL.",
"specialization": "Full-Stack Developer"
},
"country": "US",
"isVerified": true,
"isInviteSent": true,
"inviteSentAt": "2021-12-23T18:48:40.800Z",
"registerDate": "2021-12-23T18:48:40.800Z",
"isRegistered": true
}
Этот запрос используется для поиска фрилансера по их электронной почте.
Запрос
HTTP Запрос
Параметры пути
В качестве параметра пути необходимо передать email фрилансера.
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
id |
integer |
ID фрилансера |
uuid |
integer |
UUID фрилансера |
email |
string |
Электронная почта фрилансера |
name |
string |
Имя фрилансера |
taxationStatusId |
integer |
Налоговый статус фрилансера |
taxationBlockedTill |
integer |
Дата, до которой нельзя изменить налоговый статус |
categoryTitle |
string |
Специализация фрилансера |
categoryTitleEn |
string |
Название специализации на английском |
details |
object |
Личные данные фрилансера |
details.firstName |
string |
Имя фрилансера |
details.lastName |
string |
Фамилия фрилансера |
details.note |
string |
Описание фрилансера |
details.specialization |
string |
Специализация фрилансера |
country |
string |
Код страны фрилансера (например, "AM" для Армении) |
isVerified |
boolean |
Указывает, подтвержден ли аккаунт |
isInviteSent |
boolean |
Указывает, что приглашение было отправлено |
inviteSentAt |
string |
Дата отправки приглашения |
registerDate |
string |
Дата регистрации |
isRegistered |
boolean |
Указывает, что фрилансер принял приглашение |
isTaxPaymentAllowed |
boolean |
Указывает, разрешена ли автоматическая оплата налогов |
emailConfirmationStatus |
boolean |
Указывает, подтверждена ли электронная почта фрилансера |
phoneConfirmationStatus |
boolean |
Указывает, подтвержден ли телефонный номер фрилансера |
Поиск фрилансеров по номеру телефона
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/freelancer-by-phone/{phone number}"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
Пример ответа
HTTP status code: 200 OK
{
"id": 45,
"email": "[email protected]",
"name": "Alex Smith",
"taxationStatusId": 2,
"taxationBlockedTill": "2023-10-01",
"categoryTitle": "Software Engineer",
"categoryTitleEn": "Software Engineer",
"details": {
"firstName": "Alex",
"lastName": "Smith",
"note": "Skilled in backend development with extensive experience in Python, Django, and cloud infrastructure.",
"specialization": "Backend Developer"
},
"country": "CA",
"isVerified": true,
"isInviteSent": true,
"inviteSentAt": "2022-01-15T12:30:00.000Z",
"registerDate": "2022-01-16T09:00:00.000Z",
"isRegistered": true
}
Этот запрос используется для поиска фрилансера по его номеру телефона.
Запрос
HTTP Запрос
Параметры пути
В качестве параметра пути необходимо передать номер телефона фрилансера.
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
id |
integer |
ID фрилансера |
uuid |
integer |
UUID фрилансера |
email |
string |
Электронная почта фрилансера |
name |
string |
Имя фрилансера |
taxationStatusId |
integer |
Налоговый статус фрилансера |
taxationBlockedTill |
integer |
Дата, до которой нельзя изменить налоговый статус |
categoryTitle |
string |
Специализация фрилансера |
categoryTitleEn |
string |
Название специализации на английском |
details |
object |
Личные данные фрилансера |
details.firstName |
string |
Имя фрилансера |
details.lastName |
string |
Фамилия фрилансера |
details.note |
string |
Описание фрилансера |
details.specialization |
string |
Специализация фрилансера |
country |
string |
Код страны фрилансера (например, "AM" для Армении) |
isVerified |
boolean |
Указывает, подтвержден ли аккаунт |
isInviteSent |
boolean |
Указывает, что приглашение было отправлено |
inviteSentAt |
string |
Дата отправки приглашения |
registerDate |
string |
Дата регистрации |
isRegistered |
boolean |
Указывает, что фрилансер принял приглашение |
isTaxPaymentAllowed |
boolean |
Указывает, разрешена ли автоматическая оплата налогов |
emailConfirmationStatus |
boolean |
Указывает, подтверждена ли электронная почта фрилансера |
phoneConfirmationStatus |
boolean |
Указывает, подтвержден ли телефонный номер фрилансера |
Получение данных фрилансера
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/freelancers/12"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
Пример ответа
HTTP status code: 200 OK
{
"id": 78,
"email": "[email protected]",
"name": "Sophia Johnson",
"taxationStatusId": 4,
"taxationBlockedTill": "2025-01-01",
"categoryTitle": "UI/UX Designer",
"categoryTitleEn": "UI/UX Designer",
"details": {
"firstName": "Sophia",
"lastName": "Johnson",
"note": "Эксперт в создании дизайнов, ориентированных на пользователя, с акцентом на удобство использования и эстетику. Владеет Figma и Adobe XD.",
"specialization": "UI/UX Design"
},
"country": "DE",
"isVerified": true,
"isInviteSent": true,
"inviteSentAt": "2023-05-20T14:15:00.000Z",
"registerDate": "2023-05-21T10:00:00.000Z",
"isRegistered": true
}
Этот запрос используется для получения данных фрилансера по их ID или UUID.
Запрос
HTTP Запрос
Параметры пути
В качестве параметра пути необходимо передать либо ID фрилансера, либо UUID.
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
id |
integer |
ID фрилансера |
uuid |
integer |
UUID фрилансера |
email |
string |
Электронная почта фрилансера |
name |
string |
Имя фрилансера |
taxationStatusId |
integer |
Налоговый статус фрилансера |
taxationBlockedTill |
integer |
Дата, до которой нельзя изменить налоговый статус |
categoryTitle |
string |
Специализация фрилансера |
categoryTitleEn |
string |
Название специализации на английском |
details |
object |
Личные данные фрилансера |
details.firstName |
string |
Имя фрилансера |
details.lastName |
string |
Фамилия фрилансера |
details.note |
string |
Описание фрилансера |
details.specialization |
string |
Специализация фрилансера |
country |
string |
Код страны фрилансера (например, "AM" для Армении) |
isVerified |
boolean |
Указывает, верифицирован ли аккаунт |
isInviteSent |
boolean |
Указывает, что приглашение было отправлено |
inviteSentAt |
string |
Дата отправки приглашения |
registerDate |
string |
Дата регистрации |
isRegistered |
boolean |
Указывает, что фрилансер принял приглашение |
isTaxPaymentAllowed |
boolean |
Указывает, разрешена ли автоматическая оплата налогов |
emailConfirmationStatus |
boolean |
Указывает, подтверждена ли электронная почта фрилансера |
phoneConfirmationStatus |
boolean |
Указывает, подтвержден ли телефонный номер фрилансера |
Редактирование данных профиля
Пример запроса
curl -X PUT "https://my.mellow.io/api/customer/freelancers"
-H "Accept: application/json"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"freelancerId": 25,
"firstName": "Emma",
"lastName": "Brown",
"note": "Skilled backend developer with expertise in Node.js and MongoDB.",
"specialization": "Backend Developer",
"freelancerUuid": "a7d53c21-e6f2-42f8-b78b-1f9b90b4c123",
"companyId": 5
}"
Этот запрос используется для изменения данных профиля фрилансера, таких как имя, фамилия, специализация или описание.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
freelancerId |
integer | Да | ID фрилансера |
firstName |
string | Нет | Имя фрилансера |
lastName |
string | Нет | Фамилия фрилансера |
note |
string | Нет | Описание фрилансера |
specialization |
string | Нет | Специализация фрилансера. Для получения списка специализаций используйте этот запрос. |
freelancerUuid |
uuid | Нет | UUID фрилансера |
companyId |
integer | Нет | ID компании |
Ответ
Успешный запрос возвращает пустой ответ.
Запрос кода для изменения контактных данных
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/freelancers/request-code-for-change-contacts"
-H "Accept: application/json"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"freelancerId": 1,
"email": "[email protected]",
"phone": "+1234567890"
} "
Этот запрос позволяет обновить контактные данные фрилансера, в частности их номер телефона или электронную почту. При отправке запроса укажите обновленные контактные данные фрилансера и его ID. После отправки запроса код будет отправлен на новые контактные данные фрилансера, указанные в этом запросе, который затем должен быть включен в запрос /api/customer/freelancers/change-contacts для дальнейшей проверки.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
freelancerId |
integer |
Да | ID фрилансера |
email |
string |
Нет | Электронная почта фрилансера |
phone |
string |
Нет | Телефон фрилансера |
Ответ
После успешного выполнения запроса возвращается код, который должен быть включен в запрос /api/customer/freelancers/change-contacts (см. подробности ниже).
Подтверждение изменения контактных данных
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/freelancers/change-contacts"
-H "Accept: application/json"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"freelancerId": 1,
"code": "123123",
}"
Для изменения контактных данных фрилансера (номер телефона, электронная почта или оба), используйте нижеприведенный запрос в формате JSON. Убедитесь, что запрос включает уникальный код, полученный после первоначального запроса на изменение контактных данных, а также ID фрилансера. Если код действителен, контактные данные фрилансера будут обновлены в соответствии с указанными в запросе на изменение.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
freelancerId |
integer |
Да | ID фрилансера |
code |
string |
Да | Код, полученный в запросе на изменение контактных данных |
Ответ
Успешный запрос возвращает пустой ответ.
Генерация ссылки для верификации
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/freelancers/verification-link?freelancerId=123"
-H "Accept: application/json"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
Пример ответа
HTTP status code: 200 OK
{
"terminal_url":"https://link-to-verification-terminal"
}
Верификация аккаунта — это процесс подтверждения данных личности и документов. Чтобы узнать больше о верификации, смотрите Центр поддержки.
Этот запрос используется для генерации ссылки на верификацию, которую вы можете отправить фрилансеру.
Запрос
HTTP запрос
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
freelancerId |
integer |
Да | ID фрилансера |
redirectUrl |
string |
Нет | URL, на который будет перенаправлен фрилансер после верификации |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
terminal_url |
string |
URL страницы верификации |
Сохранение налогового номера для налогового соответствия
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/freelancer/tax-info/link-tax-number"
-H "Accept: application/json"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"taxNumber": "7707083893",
"freelancerId": 123
}"
Пример запроса с UUID:
curl -X POST "https://my.mellow.io/api/customer/freelancer/tax-info/link-tax-number"
-H "Accept: application/json"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"taxNumber": "7707083893",
"freelancerUuid": "8e947213-c114-41ec-a9ae-0242ac130002"
}"
Пример ответа
HTTP status code: 200 OK
Этот запрос сохраняет российский идентификационный номер налогоплательщика (ИНН) для фрилансера с статусом "индивидуальное налогообложение". С 1 января 2026 года предоставление ИНН становится обязательным для фрилансеров, выводящих средства на российские банковские счета.
Запрос проверяет формат и контрольную сумму ИНН, затем сохраняет налоговый номер в системе. Этот конечный точка может использоваться только для фрилансеров, которые являются частью команды заказчика и в настоящее время применима только к российским налоговым номерам.
Для получения дополнительной информации о статусах налогообложения для российских фрилансеров смотрите здесь.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
freelancerId |
integer |
Требуется один из freelancerId или freelancerUuid |
ID фрилансера |
freelancerUuid |
uuid |
Требуется один из freelancerId или freelancerUuid |
UUID фрилансера, например, 8e947213-c114-41ec-string-0242ac130002 |
taxNumber |
integer |
Да | Идентификационный номер налогоплательщика (ИНН) в России, 10 или 12 цифр |
Коды ошибок
| Код ошибки | Описание |
|---|---|
INN_INVALID |
Неверный формат или контрольная сумма ИНН |
INN_ALREADY_SET |
Налоговый номер уже сохранен для этого фрилансера |
ACCESS_DENIED |
Фрилансер не входит в команду заказчика |
Добавление идентификационного номера налогоплательщика фрилансера
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/freelancers/tax-info"
-H "Accept: application/json"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"freelancerId": 100934,
"taxResidenceCountry": "RU",
"type": "INN",
"taxNumber": "709849850606"
} "
Пример запроса с UUID:
curl -X POST "https://my.mellow.io/api/customer/freelancers/tax-info"
-H "Accept: application/json"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"freelancerId": null,
"freelancerUuid": "8e947213-c114-41ec-a9ae-0242ac130002",
"taxResidenceCountry": "RU",
"type": "INN",
"taxNumber": "709849850606"
}"
Этот запрос используется для добавления идентификационного номера налогоплательщика фрилансера, например ИНН в России или другого типа ИНН.
Обратите внимание: С 9 августа 2025 года этот конечный пункт заменяет POST /api/customer/freelancers/add-tax-document. Все новые и обновленные отправки налоговой информации должны быть отправлены на POST /api/customer/freelancers/tax-info. Новый конечный пункт вводит более строгую логику проверки, требует поля taxResidenceCountry и проверяет типы документов для всех комбинаций стран/документов.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| freelancerId | string | Требуется либо freelancerId, либо freelancerUuid |
Уникальный идентификатор фрилансера |
| freelancerUuid | string | Требуется либо freelancerId, либо freelancerUuid |
Уникальный UUID фрилансера |
| taxResidenceCountry | string | да | Страна налогового резидентства (например, "RU", "US") |
| type | string | да | Тип налогового документа (например, "ИНН"). См. доступные документы здесь |
| taxNumber | string | да | Номер налогового документа |
| vatNumber | string | нет | Номер НДС (только для фрилансеров из ЕС) |
| regNumber | string | нет | Регистрационный номер (если применимо) |
Ответ
Успешный запрос возвращает пустой ответ.
Изменение налогового статуса фрилансера
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/freelancers/change-taxation-status"
-H "Accept: application/json"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"freelancerId": 123,
"taxationStatusId": 1
}"
Пример запроса с UUID:
curl -X POST "https://my.mellow.io/api/customer/freelancers/change-taxation-status"
-H "Accept: application/json"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"freelancerUuid": "8e947213-c114-41ec-a9ae-0242ac130002",
"taxationStatusId": 1
}"
Пример ответа
HTTP status code: 200 OK
{
"linkToTerminal": "http://link.com"
}
Этот запрос используется для изменения налогового статуса фрилансера (применимо только к фрилансерам из России):
- Если запрашивается изменение статуса на "физическое лицо", статус изменяется немедленно, и в ответе возвращается пустая строка.
- Если запрашивается изменение статуса на "самозанятый" или "индивидуальный предприниматель", в ответе возвращается ссылка на страницу, где фрилансер может ввести свои налоговые данные.
Для получения дополнительной информации о налоговых статусах для российских фрилансеров смотрите здесь).
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
freelancerId |
integer |
Требуется один из freelancerId или freelancerUuid |
ID фрилансера |
freelancerUuid |
uuid |
Требуется один из freelancerId или freelancerUuid |
UUID фрилансера, например, 8e947213-c114-41ec-a9ae-0242ac130002 |
taxationStatusId |
integer |
Да | ID налогового статуса. Возможные значения:
|
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
linkToTerminal |
string |
URL терминала для изменения налогового статуса |
Получение налоговой информации фрилансера
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/freelancers/tax-info/100934" \
-H "Accept: application/json" \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
Пример ответа
HTTP status code: 200 OK{ "taxResidenceCountry": "RU", "type": "INN", "taxNumber": "709849850606", "vatNumber": null, "regNumber": "315774600024875" }
Получает данные налогового документа фрилансера, если он входит в состав команды заказчика. Возвращает детали налогового документа (или null/пустые поля, если они не установлены).
Запрос
HTTP Запрос
Параметры пути
В качестве параметра пути необходимо передать ID фрилансера.
Ответ
| Свойство | Тип | Описание |
|---|---|---|
| taxResidenceCountry | string | Страна налогового резидентства, указанная в приложенном документе, если таковой имеется; null, если не предоставлено |
| type | string | Тип налогового документа (например, "ИНН"); null, если не предоставлено |
| taxNumber | string | Номер налогового документа; null, если не предоставлено |
| vatNumber | string | Номер НДС ЕС, если доступен; null, если не предоставлено |
| regNumber | string | Регистрационный номер (например, ОГРНИП для российских фрилансеров с статусом ИП), или значение из пользовательских настроек; пустая строка, если не установлено |
Удаление фрилансеров из команды
Пример запроса
curl -X DELETE "https://my.mellow.io/api/customer/freelancers"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"freelancerId": 12
}"
Пример ответа
HTTP status code: 200 OKУспешный запрос возвращает пустой ответ.
Этот запрос используется для удаления фрилансера из команды.
Запрос
HTTP Запрос
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
freelancerId |
integer |
Требуется либо freelancerId, либо freelancerUuid |
ID фрилансера |
freelancerUuid |
string |
Требуется либо freelancerId, либо freelancerUuid |
UUID фрилансера (например, 8e947213-c114-41ec-a9ae-0242ac130002) |
Ответ
Успешный запрос возвращает пустой ответ.
Принятие предложения о соглашении
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/freelancers/sign-agreement"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
"templateUuid": "1as7ac19-5y33-4a3a-94b3-b4a26374de4d",
"freelancerId": 100934
}"
Пример ответа
HTTP status code: 200 OKУспешный запрос возвращает пустой ответ.
Этот запрос позволяет подписать соглашение о предложении от имени фрилансера. Запрос, который проверяет наличие новых предложений, возвращает идентификатор предложения, который необходимо указать в запросе на принятие предложения о соглашении. Кроме того, предоставляется ссылка для просмотра предложения, чтобы вы могли показать его фрилансеру.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
freelancerId |
integer |
Требуется либо freelancerId, либо freelancerUuid |
ID фрилансера |
freelancerUuid |
uuid |
Требуется либо freelancerId, либо freelancerUuid |
UUID фрилансера (например, 8e947213-c114-41ec-a9ae-0242ac130002) |
templateUuid |
uuid |
Да | UUID предложения |
Ответ
Успешный запрос возвращает пустой ответ.
Заметки
- Этот конечный пункт подписывает платформенные соглашения, реферальные соглашения, файлы принятия задач и налоговые формы (W-9, W-8BEN) — всё, что возвращается функцией
check-task-requirementsкроме элементов сname: "correctiveDocument". - Чтобы подписать исправительный документ, используйте
POST /api/customer/freelancers/sign-corrective-document. Здесь используется числовойdocumentIdизdata.idвместоtemplateUuid.
Подписание исправительного документа
Пример запроса
curl -X POST "https://my.mellow.io/api/customer/freelancers/sign-corrective-document"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
-d "{
\"freelancerId\": 100253618,
\"documentId\": 163
}"
Пример ответа
HTTP status code: 200 OK
{}
Подписывает исправительный документ от имени фрилансера. Используйте этот конечный точку только для документов, полученных от Проверки на наличие проблем перед началом задачи с name: "correctiveDocument". Все другие документы (соглашения, реферальные соглашения, файлы принятия, налоговые формы) подписываются через конечную точку Принятие предложения соглашения.
Запрос
HTTP Запрос
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
freelancerId |
integer |
Требуется либо freelancerId, либо freelancerUuid |
Числовой ID фрилансера |
freelancerUuid |
string |
Требуется либо freelancerId, либо freelancerUuid |
UUID фрилансера (например, 8e947213-c114-41ec-a9ae-0242ac130002) |
documentId |
integer |
Да | ID исправительного документа. Возьмите его из data.id элемента correctiveDocument в ответе check-task-requirements |
Ответ
Успешный запрос возвращает пустой ответ.
Коды ошибок
| Код | Описание |
|---|---|
401 |
Токен отсутствует или недействителен |
403 |
Фрилансер не входит в команду заказчика, или у заказчика нет прав действовать от его имени |
404 |
Фрилансер или документ не найден |
422 |
Проверка не пройдена (отсутствуют необходимые поля, неверные типы) |
Заметки
Один ответ check-task-requirements может содержать correctiveDocument вместе с другими элементами (например, agreementRequired, acceptanceFiles). Подпишите каждый элемент через соответствующий конечный пункт: корректирующие документы через этот конечный пункт, все остальное через Принятие предложения о соглашении.
Финансы
В Mellow баланс — это средства пользователя в системе. Что касается функций и возможностей, которые он предлагает фрилансерам и компаниям, это похоже на банковский счет. У каждого фрилансера есть три баланса, каждый в своей валюте: рубли, доллары и евро. Компания может иметь баланс только в одной из этих валют. По этой причине запросы на получение информации о балансе фрилансера всегда возвращают информацию только о балансе в той валюте, которая совпадает с валютой компании.
Этот раздел содержит следующие инструкции:
Создание выплаты за задание
Пример запроса
curl --location
--request POST 'https://my.mellow.io/api/customer/tasks/payout' \
--data-raw '{
"taskId": 583695,
"payoutEndpointType": 1,
"payoutEndpointId": 79093
}'
Пример ответа
HTTP status 200 OKУспешный запрос возвращает пустой ответ.
Этот запрос используется для перевода оплаты за платное задание с баланса фрилансера на его банковскую карту, банковский счет или электронный кошелек. Вы можете использовать этот запрос только для отправки средств за платное задание: вы не можете просто перевести средства, которые не связаны с каким-либо заданием, с баланса фрилансера. В запросе передайте идентификатор задания и целевой способ оплаты. В качестве дополнительного параметра вы можете указать базовую валюту для конвертации в целевую валюту. Например, вывод средств с баланса в рублях на казахстанскую банковскую карту требует конвертации в евро, иначе платеж не произойдет.
Для вывода средств на российские банковские счета фрилансеров с индивидуальным налоговым статусом необходимо сохранить идентификационный номер налогоплательщика (ИНН) с помощью точки доступа Связать налоговый номер для налогового соответствия перед инициацией вывода. Это требование стало обязательным с 1 января 2026 года.
Запрос
HTTP Запрос
Тело запроса
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
taskId |
integer |
Требуется либо taskId, либо uuid |
ID задачи. Чтобы получить список задач, используйте этот запрос. |
uuid |
string |
Требуется либо taskId, либо uuid |
UUID задачи |
payoutEndpointType |
string |
Да | Тип способа выплаты. Возможные значения:
|
payoutEndpointId |
integer |
Да | ID добавленного способа выплаты фрилансером. Вы можете либо добавить новый способ выплаты, либо выбрать способ выплаты из уже добавленных фрилансером. |
currencyId |
integer |
Нет | ID целевой валюты. Чтобы просмотреть значения ID, используйте запрос на получение списка валют. |
Ответ
Успешный запрос возвращает пустой ответ.
Получение статуса выплаты по номеру задачи
Пример запроса
curl --location
--request GET 'https://my.mellow.io/api/customer/tasks/payout/432453' \
Пример ответа
HTTP status 200 OK{ "payoutStatus": 2 }
Этот запрос используется для получения статуса выплаты. После создания выплаты, вы можете вызвать этот запрос, чтобы убедиться, что выплата была выполнена и деньги достигли фрилансера.
Запрос
HTTP Запрос
Параметры пути
В качестве параметра пути необходимо передать либо идентификатор задачи, либо UUID. Чтобы получить список задач, используйте этот запрос.
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
payoutStatus |
integer |
Статус выплаты. Возможные значения:
|
Получение списка транзакций
Пример запроса
curl --location
--request GET 'https://my.mellow.io/api/customer/transactions' \
Пример ответа
HTTP status 200 OK{ "items": [ { "id": 1710153, "type": 2, "amount": 1030, "createdAt": "2021-01-28 10:34:12", "currency": { "currency": "RUB", "id": 1 }, "balanceId": 246709 } ], "pagination": { "count": 20, "total": 383, "perPage": 20, "page": 1, "pages": 20 } }
Этот запрос используется для получения списка всех транзакций.
Запрос
HTTP запрос
Тело запроса
Дополнительных параметров запроса нет.
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
id |
integer |
ID транзакции |
type |
integer |
Тип транзакции. Возможные значения:
|
amount |
float |
Сумма транзакции |
createdAt |
string |
Дата транзакции |
currency.currency |
string |
Название валюты |
paycurrency.id |
integer |
ID валюты |
balanceId |
integer |
ID баланса |
Получение способов оплаты фрилансера
Пример запроса
curl --location
--request GET 'https://my.mellow.io/api/customer/freelancers/payout-endpoints?freelancerId=1' \
Пример ответа
HTTP status 200 OK{ "wallets": [ { "createdAt": "2021-07-20 06:33:14", "currency": { "currency": "RUB", "id": 1 }, "id": 48998, "number": "2099772984", "status": 1, "walletType": 2, "type": 2, "ownerId": 100870, "autoPay": true } ], "cards": [ { "createdAt": "2021-01-25 10:32:47", "currency": { "currency": "EUR", "id": 3 }, "expire": "03/26", "holder": "DINA BOOM", "id": 79082, "number": "5213 24** **** 9877", "status": 4, "cardType": 1, "type": 1, "ownerId": 100870, "country": "RU", "autoPay": true } ], "ibans": [] }
Этот запрос используется для получения списка доступных способов оплаты фрилансера.
Запрос
HTTP запрос
Параметры запроса
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
freelancerId |
integer |
Требуется либо freelancerId, либо freelancerUuid |
ID фрилансера |
freelancerUuid |
string |
Требуется либо freelancerId, либо freelancerUuid |
UUID фрилансера (например, 8e947213-c114-41ec-a9ae-0242ac130002) |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
wallets |
string |
Электронные кошельки, добавленные фрилансером |
wallets.createdAt |
string |
Дата добавления |
wallets.currency |
object |
Валюта |
wallets.currency.currency |
string |
Название валюты |
wallets.currency.id |
integer |
ID валюты |
wallets.id |
integer |
ID электронного кошелька |
wallets.number |
string |
Номер электронного кошелька |
wallets.status |
string |
Статус |
wallets.walletType |
string |
Тип электронного кошелька. Возможные значения:
|
wallets.type |
string |
Тип способа оплаты. Возможные значения:
|
wallets.ownerId |
string |
ID фрилансера |
wallets.autoPay |
boolean |
Указывает на активацию автоматических платежей для способа оплаты. |
cards |
string |
URL страницы добавления способа оплаты |
cards.createdAt |
string |
Дата добавления |
cards.currency |
object |
Валюта |
cards.currency.currency |
string |
Название валюты |
cards.currency.id |
integer |
ID валюты |
cards.expire |
string |
Дата истечения срока действия карты |
cards.holder |
string |
Имя и фамилия держателя карты |
cards.id |
string |
ID карты |
cards.number |
string |
Номер карты (возвращаются первые 6 и последние 4 цифры) |
cards.status |
string |
Статус. Возможные значения:
|
cards.cardType |
string |
Тип банковской карты. Возможные значения:
|
cards.type |
string |
Тип способа оплаты. Возможные значения:
|
cards.ownerId |
string |
ID фрилансера |
cards.country |
string |
Страна происхождения банковской карты |
cards.autoPay |
boolean |
Указывает на активацию автоматических платежей для способа оплаты. |
iban |
string |
Банковские счета, добавленные фрилансером |
iban.createdAt |
string |
Дата добавления |
iban.currency |
object |
Валюта |
iban.currency.currency |
string |
Название валюты |
iban.currency.id |
integer |
ID валюты |
iban.id |
integer |
ID банковского счета |
iban.number |
string |
Номер банковского счета |
iban.status |
string |
Статус. Возможные значения:
|
iban.bankAccountType |
string |
Тип счета. Возможные значения:
|
iban.type |
string |
Тип способа оплаты. Возможные значения:
|
iban.ownerId |
integer |
ID фрилансера |
iban.autoPay |
boolean |
Указывает на активацию автоматических платежей для способа оплаты. |
Добавление банковской карты
Пример запроса
curl --location
--request POST 'https://my.mellow.io/api/customer/freelancers/cards' \
--data-raw '{
"code": 583695,
"freelancerId": 1
}'
Пример ответа
HTTP status 200 OK
{
"redirect": "https://link-to-payment-terminal"
}
Этот запрос используется для добавления нового способа оплаты для фрилансера. Он возвращает ссылку на страницу добавления способа оплаты. Перед вызовом запроса также необходимо запросить код, который будет отправлен на номер телефона фрилансера. Добавление нового способа оплаты происходит следующим образом:
- Запросить код, который будет отправлен на телефон фрилансера.
- Вызвать запрос на добавление способа оплаты, передав в качестве входного параметра код, полученный на предыдущем этапе. Затем запрос возвращает ссылку на страницу, где фрилансер может ввести данные способа оплаты.
После этого фрилансер вводит данные нового способа оплаты.
Запрос
HTTP Запрос
Тело запроса
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
code |
integer |
Да | Код, отправленный на номер телефона фрилансера |
freelancerId |
integer |
Требуется либо freelancerId, либо freelancerUuid |
ID фрилансера |
freelancerUuid |
string |
Требуется либо freelancerId, либо freelancerUuid |
UUID фрилансера (например, 8e947213-c114-41ec-a9ae-0242ac130002) |
redirectUrl |
string |
Нет | URL, на который перенаправляется фрилансер после привязки способа оплаты |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
redirect |
string |
URL страницы для добавления способа оплаты |
uuid |
string |
UUID способа оплаты (например, 8e947213-c114-41ec-a9ae-0242ac130002) |
Добавление банковского счета
Пример запроса
curl --location
--request POST 'https://my.mellow.io/api/customer/freelancers/bank-accounts' \
--data-raw '{
"code": 583695,
"freelancerId": 1
}'
Пример ответа
HTTP status 200 OK
{
"redirect": "https://link-to-payment-terminal"
}
Этот запрос используется для добавления нового банковского счета фрилансера. Он возвращает ссылку на страницу добавления способа оплаты. Перед вызовом запроса также необходимо запросить код, который будет отправлен на номер телефона фрилансера. Добавление нового банковского счета происходит следующим образом:
- Запросите код, который будет отправлен на телефон фрилансера.
- Вызовите запрос на добавление способа оплаты, передав полученный на предыдущем шаге код в качестве входного параметра. Затем запрос возвращает ссылку на страницу, где фрилансер может ввести данные способа оплаты.
После этого фрилансер вводит данные нового способа оплаты.
Запрос
HTTP Запрос
Тело запроса
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
code |
integer |
Да | Код, отправленный на номер телефона фрилансера |
freelancerId |
integer |
Требуется либо freelancerId, либо freelancerUuid |
ID фрилансера |
freelancerUuid |
string |
Требуется либо freelancerId, либо freelancerUuid |
UUID фрилансера (например, 8e947213-c114-41ec-a9ae-0242ac130002) |
bankAccountType |
integer |
Да | Тип банковского счета. Возможные значения:
|
redirectUrl |
integer |
Нет | URL, на который перенаправляется фрилансер после привязки способа оплаты |
uuid |
string |
Нет | UUID способа оплаты (например, 8e947213-c114-41ec-a9ae-0242ac130002) |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
redirect |
string |
URL страницы для добавления способа оплаты |
Добавление электронного кошелька
Пример запроса
curl --location
--request POST 'https://my.mellow.io/api/customer/freelancers/wallets' \
--data-raw '{
"code": 583695,
"freelancerId": 1
}'
Пример ответа
HTTP status 200 OK
{
"redirect": "https://link-to-payment-terminal"
}
Этот запрос используется для добавления нового электронного кошелька фрилансеру. Он возвращает ссылку на страницу добавления способа оплаты. Перед вызовом запроса также необходимо запросить код, который будет отправлен на номер телефона фрилансера. Добавление нового электронного кошелька происходит следующим образом:
- Запросить код, который будет отправлен на телефон фрилансера.
- Вызвать запрос на добавление способа оплаты, передав полученный на предыдущем этапе код в качестве входного параметра. Затем запрос возвращает ссылку на страницу, где фрилансер может ввести данные способа оплаты.
После этого фрилансер заполняет данные нового способа оплаты.
Запрос
HTTP Запрос
Тело запроса
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
code |
integer |
Да | Код, отправленный на номер телефона фрилансера |
freelancerId |
integer |
Требуется либо freelancerId, либо freelancerUuid |
ID фрилансера |
freelancerUuid |
string |
Требуется либо freelancerId, либо freelancerUuid |
UUID фрилансера (например, 8e947213-c114-41ec-a9ae-0242ac130002) |
walletType |
integer |
Да | Тип электронного кошелька. Возможные значения:
|
redirectUrl |
integer |
Нет | URL, на который перенаправляется фрилансер после привязки способа оплаты |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
redirect |
string |
URL страницы для добавления способа оплаты |
uuid |
string |
UUID способа оплаты (например, 8e947213-c114-41ec-a9ae-0242ac130002) |
Удаление банковской карты
Пример запроса
curl --location
--request DELETE 'https://my.mellow.io/api/customer/freelancers/cards/123?freelancerId=123' \
Пример ответа
HTTP status 200 OK
Этот запрос используется для удаления банковской карты.
Запрос
HTTP Запрос
Параметры пути
В качестве параметра пути необходимо передать идентификатор банковской карты.
Параметры запроса
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
freelancerId или freelancerUuid |
integer |
Да | ID или UUID фрилансера |
Ответ
Успешный запрос возвращает пустой ответ.
Удаление электронного кошелька
Пример запроса
curl --location
--request DELETE 'https://my.mellow.io/api/customer/freelancers/wallets/123?freelancerId=123' \
Пример ответа
HTTP статус 200 OK
Этот запрос используется для удаления электронного кошелька фрилансера.
Запрос
HTTP запрос
Параметры пути
В качестве параметра пути необходимо передать ID электронного кошелька.
Параметры запроса
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
freelancerId или freelancerUuid |
integer |
Да | ID или UUID фрилансера |
Ответ
Успешный запрос возвращает пустой ответ.
Удаление банковского счета
Пример запроса
curl --location
--request DELETE 'https://my.mellow.io/api/customer/freelancers/bank-accounts/123?freelancerId=123' \
Пример ответа
HTTP status 200 OK
Этот запрос используется для удаления банковского счета фрилансера.
Запрос
HTTP Запрос
Параметры пути
В качестве параметра пути необходимо передать ID банковского счета.
Параметры запроса
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
freelancerId или freelancerUuid |
integer |
Да | ID или UUID фрилансера |
Ответ
Успешный запрос возвращает пустой ответ.
Запрос кода для добавления нового способа оплаты
Пример запроса
curl --location
--request POST 'https://my.mellow.io/api/customer/freelancers/request-code-for-new-payout-endpoint' \
--data-raw '{
"freelancerId": 583695
}'
Пример ответа
HTTP status 200 OK
{
"type": "SMS",
"number": "412341"
}
Этот запрос используется для отправки кода верификации на номер телефона фрилансера. Для добавления нового способа оплаты фрилансер должен подтвердить действие.
Запрос
HTTP Запрос
Тело запроса
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
freelancerId |
integer |
Требуется либо freelancerId, либо freelancerUuid |
ID фрилансера |
freelancerUuid |
string |
Требуется либо freelancerId, либо freelancerUuid |
UUID фрилансера (например, 8e947213-c114-41ec-a9ae-0242ac130002) |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
type |
string |
Тип сообщения (SMS или Google) |
number |
string |
Номер телефона фрилансера (если тип сообщения SMS) |
Компания
Этот раздел описывает методы управления компанией.
Работа с несколькими компаниями в API
В Mellow одна учетная запись может включать несколько компаний.
Вы можете добавить несколько компаний в свою учетную запись, управлять их данными отдельно и автоматизировать рабочие процессы для каждой из них через API.
Все запросы API (задачи, валюты, исполнители и т.д.) выполняются в контексте определенной компании.
Вы не можете выполнять действия с данными, принадлежащими одной компании, используя контекст другой: например, вы не можете обновить или опубликовать задачу от Компании A, пока контекст запроса установлен на Компанию B. Попытка сделать это приведет к ошибке. Этот контекст компании всегда требуется — либо вы устанавливаете его как вашу активную компанию, либо указываете его в каждом запросе.
API Mellow поддерживает два способа указания контекста компании для запроса:
- Установка активной компании (
PATCH /customer/companies)
Используйте метод PATCH /customer/companies для установки активной компании по умолчанию.
Все последующие запросы выполняются в контексте этой компании, если вы не переопределите его с помощью x-company-id.
Этот подход подходит для работы с компаниями по одной (последовательно или изолированно).
- Передача
x-company-idв заголовке
Добавьте заголовок x-company-id к каждому запросу:
x-company-id: {company_id}
Это позволяет вам работать с разными компаниями параллельно, без необходимости переключения активной компании или повторной аутентификации.
Получение данных о компаниях пользователя
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/companies"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
Пример ответа
HTTP status code: 200 OK
{
"items": [
{
"id": 2955,
"companyName": "Skyline Ltd",
"brandName": "Skyline",
"safeDealEnabled": true,
"isDefault": true,
"currency": {
"currency": "USD",
"id": 2
}
}
],
"pagination": {
"count": 1,
"total": 1,
"perPage": 20,
"page": 1,
"pages": 1
}
}
Этот запрос используется для получения данных о компаниях авторизованного пользователя.
Запрос
HTTP запрос
Параметры
Дополнительные параметры запроса отсутствуют.
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
id |
integer |
ID компании |
companyName |
string |
Название компании |
brandName |
string |
Название проекта |
safeDealEnabled |
boolean |
Указывает, включена ли функция Безопасной Сделки |
isDefault |
boolean |
Указывает, является ли это компанией по умолчанию |
currency |
object |
Валюта |
currency.currency |
string |
Название валюты |
currency.id |
integer |
ID валюты |
Смена компании
Пример запроса
curl -X POST "/api/customer/companies/123/default"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
Пример ответа
HTTP status code: 200 OK
{
"token": "eyJhbGciOiJIUzUxMiIsI...",
"refreshToken": "c84f18a2-c6c7-4850-be15-93f9cbaef3b3"
}
Этот запрос используется для выбора компании: если вы добавили несколько компаний в свой аккаунт, таким образом вы выбираете одну из них. Запрос возвращает новый JWT, который следует использовать для аутентификации всех последующих запросов.
С 9 августа 2025 года конечная точка POST /api/customer/companies/{companyId}/default заменяет предыдущую PATCH /api/customer/companies для смены основной компании. Предыдущая конечная точка будет устаревшей на более поздний срок.
Запрос
HTTP запрос
Параметры пути
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
companyId |
integer |
Да | ID компании. Список доступных вам компаний возвращается с этим запросом |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
token |
string |
JWT |
refreshToken |
string |
JWT, используемый для обновления токена |
Получение баланса компании
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/balance
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
Пример ответа
HTTP status code: 200 OK
{
"currency": {
"currency": "RUB",
"id": 1
},
"showVat": true,
"balanceAmount": 1067273.53,
"balanceAmountVat": 213454.71,
"holdAmount": 149225.08,
"holdAmountVat": 29845.02
}
Этот запрос используется для получения баланса компании.
Запрос
HTTP запрос
Параметры
Дополнительные параметры запроса отсутствуют.
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
currency |
object |
Валюта |
currency.currency |
string |
Название валюты |
currency.id |
integer |
ID валюты |
showVat |
boolean |
Показывает, отображается ли НДС в задачах |
balanceAmount |
string |
Баланс |
balanceAmountVat |
string |
НДС с баланса |
holdAmount |
string |
Заблокированная сумма |
holdAmountVat |
string |
НДС с заблокированной суммы |
Установка операционного адреса компании
Пример запроса
curl -X POST \
"https://my.mellow.io/api/customer/companies/operating-address" \
-H "accept: */*" \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOi..." \
-H "Content-Type: application/json" \
-d '{
"address": "350 Fifth Avenue",
"city": "New York",
"state": "NY",
"zipCode": "10118",
"country": "US"
}'
Пример ответа
HTTP status code: 200 OK
{}
Этот запрос используется для проверки и сохранения операционного адреса компании для расчета налогов.
В настоящее время проверка операционного адреса поддерживается только для адресов в Соединенных Штатах. Адрес проверяется перед сохранением. Если адрес недействителен, API возвращает ошибку проверки.
Запрос
HTTP запрос
Параметры тела запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
address |
string |
Да | Уличный адрес |
city |
string |
Да | Город |
state |
string |
Да | Двухбуквенный код штата США |
zipCode |
string |
Да | Почтовый индекс |
country |
string |
Да | Код страны (поддерживается только US) |
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
| — | — | Пустое тело ответа при успешном выполнении |
Правила проверки
countryдолжно бытьUSstateдолжно содержать действительный двухбуквенный код штата США- Все поля обязательны к заполнению
- Адрес должен пройти проверку
Ответы об ошибках
| HTTP Статус | Описание |
|---|---|
400 Bad Request |
Ошибка валидации или неверный адрес |
401 Unauthorized |
Токен авторизации отсутствует или недействителен |
429 Too Many Requests |
Превышен лимит запросов |
Документы
Этот раздел описывает методы управления документами.
Получение списка документов
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/documents"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
Пример ответа
HTTP status code: 200 OK
{
"items": [
{
"fileId": 252345,
"type": 6,
"documentId": 10743,
"invoiceStatusId": 1,
"reportStatusId": null,
"amount": 100,
"number": "2955-211126-18",
"currency": {
"currency": "RUB",
"id": 1
},
"createdAt": "2021-11-26 04:54:39",
"topUpBalanceDate": "-0001-11-30 00:00:00",
"sfFileId": null
}
}
Этот запрос используется для получения списка документов.
Запрос
HTTP запрос
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
filter[type] |
integer |
Нет | Тип документа. Возможные значения:
|
filter[dateFrom] |
date |
Нет | Дата начала действия документа |
filter[dateTo] |
date |
Нет | Дата окончания действия документа |
sort |
string |
Нет | Параметр для сортировки результатов. Возможные значения:
|
direction |
string |
Нет | Порядок сортировки. Возможные значения:
|
Ответ
| Имя свойства | Тип | Описание |
|---|---|---|
fileId |
integer |
ID файла |
type |
integer |
Тип документа. Возможные значения:
|
documentId |
integer |
ID документа |
invoiceStatusId |
integer |
ID статуса счета-фактуры |
reportStatusId |
integer |
ID статуса сертификата |
amount |
string |
Сумма документа |
number |
string |
Номер документа |
currency |
object |
Валюта |
currency.currency |
string |
Название валюты |
currency.id |
string |
ID валюты |
createdAt |
string |
Дата создания документа |
topUpBalanceDate |
string |
Дата пополнения баланса |
sfFileId |
boolean |
ID счета-фактуры (применяется к счетам-фактурам, выставленным за операции пополнения баланса) |
Загрузка документов
Пример запроса
curl -X GET "https://my.mellow.io/api/customer/documents/download"
-H "accept: */*"
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
-H "Content-Type: application/json"
Пример ответа
HTTP status code: 200 OKУспешный запрос возвращает пустой ответ
Этот запрос используется для загрузки документов. После вызова запроса ссылка для загрузки документа отправляется на вашу электронную почту.
Запрос
HTTP запрос
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
filter[type] |
integer |
Нет | Тип документа. Возможные значения:
|
filter[dateFrom] |
date |
Нет | Дата начала действия документа (начало интервала) |
filter[dateTo] |
date |
Нет | Дата окончания действия документа (конец интервала) |
Ответ
Успешный запрос возвращает пустой ответ, начиная процесс отправки электронного письма, содержащего ссылку для скачивания документа (в формате ZIP).
Профиль пользователя
Этот раздел содержит запросы для работы с профилем пользователя.
Получение личных данных
Пример запроса
curl --location
--request POST 'https://my.mellow.io/api/profile' \
Пример ответа
HTTP status code: 200 OK
{
"languageStringValue": "EN",
"name": "John Doe",
"postCode": "90210",
"physicalAddress": "Los Angeles, Sunset Blvd 123",
"city": "Los Angeles",
"inn": "456456456",
"ip": "192.168.0.1",
"birthDate": "1985-07-12",
"gridsSettings": "{}",
"loginNotification": true,
"id": 100,
"uuid": "2b69eb5d-e0e3-11ec-95b5-fa84c4fedfee",
"email": "[email protected]",
"username": "[email protected]",
"firstName": "John",
"middleName": "",
"lastName": "Doe",
"regDate": "2020-10-30",
"twoFaMethod": "sms",
"taxationStatus": 1,
"phone": "+1-555-5555",
"country": "US",
"state": null,
"flags": 0,
"type": "customer",
"defaultSmsGate": null,
"language": "EN",
"isVerified": false,
"specialization": null
}
Этот метод используется для получения личных данных авторизованного пользователя.
Запрос
HTTP запрос
Параметры
Дополнительные параметры запроса отсутствуют. Применимо только для авторизованных пользователей.
Ответ
| Имя | Тип | Описание |
|---|---|---|
postCode |
string |
Почтовый индекс пользователя |
physicalAddress |
string |
Адрес пользователя |
city |
string |
Город |
inn |
string |
ИНН (идентификационный номер налогоплательщика, применимо для пользователей в России) |
ip |
string |
Разрешенные IP-адреса |
birthDate |
string |
Дата рождения |
gridsSettings |
object |
[Системное поле] Настройки интерфейса аккаунта |
id |
integer |
ID пользователя |
email |
string |
Электронная почта пользователя |
username |
string |
Логин пользователя |
firstName |
string |
Имя пользователя |
middleName |
string |
Отчество пользователя |
lastName |
string |
Фамилия пользователя |
regDate |
string |
Дата регистрации |
twoFaMethod |
boolean |
Указывает, включена ли двухфакторная аутентификация |
taxationStatus |
string |
Налоговый статус пользователя (применимо только для фрилансеров) |
phone |
string |
Телефонный номер пользователя |
country |
string |
Страна пользователя |
state |
string |
Регион пользователя |
flags |
string |
[Системное поле] |
type |
string |
[Системное поле] Тип пользователя (клиент или фрилансер) |
language |
string |
Язык интерфейса пользователя |
isVerified |
string |
Указывает, верифицирован ли пользователь (применимо только для фрилансеров) |
Смена языка
Пример запроса
curl -X PUT "https://my.mellow.io/api/profile/language" \
-H "accept: */*" \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..." \
-H "Content-Type: application/json" \
-d '{
"language": "EN"
}'
Пример ответа
HTTP status code: 200 OKУспешный запрос должен возвращать пустой ответ.
Этот метод используется для смены языка всех сообщений, категорий задач и так далее. Доступные варианты: русский (RU) и английский (EN).
Запрос
HTTP запрос
Тело запроса
| Имя | Тип | Обязательность | Описание |
|---|---|---|---|
language |
string |
Да | Название языка. Возможные варианты:
|
Ответ
Успешный запрос должен вернуть пустой ответ.
Справочник
Этот раздел содержит запросы для получения различных значений разных параметров (например, валют, типов сроков и налоговых статусов).
Список валют
Пример запроса
curl --location
--request GET 'https://my.mellow.io/api/lookups/currencies' \
Пример ответа
HTTP статус 200 OK
{
"RUB": 1,
"USD": 2,
"EUR": 3
}
Этот метод используется для получения списка валют и их идентификаторов.
Запрос
HTTP запрос
Параметры
Дополнительные параметры запроса отсутствуют.
Ответ
| Имя | Тип | Описание |
|---|---|---|
<currency code> |
integer |
ID валюты |
Курс валютной конверсии
Пример запроса
curl --location
--request GET 'https://my.mellow.io/api/exchanges' \
Пример ответа
HTTP status 200 OK
[
{
"base": {
"currency": "EUR",
"id": 3
},
"target": {
"currency": "RUB",
"id": 1
},
"rate": 79.401
},
{
"base": {
"currency": "USD",
"id": 2
},
"target": {
"currency": "RUB",
"id": 1
},
"rate": 74.329
},
{
"base": {
"currency": "EUR",
"id": 3
},
"target": {
"currency": "USD",
"id": 2
},
"rate": 1.0576
},
{
"base": {
"currency": "RUB",
"id": 1
},
"target": {
"currency": "EUR",
"id": 3
},
"rate": 81.8194
},
{
"base": {
"currency": "RUB",
"id": 1
},
"target": {
"currency": "USD",
"id": 2
},
"rate": 76.5928
},
{
"base": {
"currency": "USD",
"id": 2
},
"target": {
"currency": "EUR",
"id": 3
},
"rate": 1.0898
}
]
Этот метод используется для получения текущего курса конверсии.
Примеры конверсий:
| Валюта списания | Валюта выплаты | Курс конверсии | Расчет |
|---|---|---|---|
| EUR | RUB | 79.401 | 1000 EUR * 79.401 = 79401 RUB |
| USD | RUB | 74.329 | 1000 USD * 74.329 = 74329 RUB |
| EUR | USD | 1.0576 | 1000 EUR * 1.0576 = 1057.6 USD |
| RUB | EUR | 81.8194 | 1000 RUB / 81.8194 = 12.23 EUR |
| RUB | USD | 76.5928 | 1000 RUB / 76.5928 = 13.06 USD |
| USD | EUR | 1.0898 | 1000 USD / 1.0898 = 917.43 EUR |
Запрос
HTTP запрос
Параметры
Дополнительные параметры запроса отсутствуют.
Ответ
| Имя | Тип | Описание |
|---|---|---|
base.currency |
string |
Название базовой валюты для конвертации |
base.id |
integer |
ID базовой валюты |
target.currency |
string |
Название целевой валюты конвертации |
target.id |
integer |
ID целевой валюты конвертации |
rate |
float |
Курс конвертации |
Налоговые статусы
Пример запроса
curl --location
--request GET 'https://my.mellow.io/api/lookups/taxation-statuses' \
Пример ответа
HTTP status 200 OK
{
"NATURAL": 1,
"NATURAL_TITLE": "Физическое лицо",
"SELF_EMPLOYED": 3,
"SELF_EMPLOYED_TITLE": "Самозанятый",
"SOLE_PROPRIETOR": 4,
"SOLE_PROPRIETOR_TITLE": "Индивидуальный предприниматель"
}
Этот метод используется для получения налоговых статусов и их идентификаторов.
Запрос
HTTP запрос
Параметры
Дополнительные параметры запроса отсутствуют.
Ответ
| Имя | Тип | Описание |
|---|---|---|
<Tax status> |
integer |
ID налогового статуса |
<Tax status>_TITLE |
string |
Название налогового статуса |
Категории задач (Устаревшие)
Пример запроса
curl --location
--request GET 'https://my.mellow.io/api/customer/lookups/categories' \
Пример ответа
HTTP статус 200 OK
{
"items": [
{
"id": 1,
"title": "Печатные СМИ",
"titleEn": "Printed mass media"
},
{
"id": 2,
"title": "Интернет-реклама",
"titleEn": "Internet advertising"
}
]
}
Устарело с 13 октября 2025 года. Используйте вместо этого Названия услуг и работ и Атрибуты задач.
Этот метод используется для получения категорий задач. Возвращает все категории в виде единого списка.
Запрос
HTTP запрос
Параметры
Дополнительные параметры запроса отсутствуют.
Ответ
| Имя | Тип | Описание |
|---|---|---|
id |
integer |
ID категории |
title |
string |
Название категории задач |
titleEn |
string |
Название категории задач (на английском) |
Названия услуг и работ
Пример запроса
curl --location
--request GET 'https://my.mellow.io/api/v2/customer/lookups/services' \
Пример ответа
HTTP статус 200 OK
{
"items": [
{
"id": 3,
"title": "Копирайтинг"
},
{
"id": 2,
"title": "Работа по созданию иллюстраций для текстов (включая фото)"
}
],
"pagination": {
"count": 20,
"total": 23,
"perPage": 9999,
"page": 1,
"pages": 1
}
}
Этот метод используется для получения названий услуг и работ, доступных для текущей компании.
Ответ автоматически возвращает поле title, локализованное на язык пользователя (определяется из профиля пользователя или заголовка запроса Accept-Language). Поиск работает одновременно на русском и английском языках и не чувствителен к регистру.
Начиная с 13 октября 2025 года, параметр пути categoryID был удален. Теперь запрос всегда возвращает список всех услуг, доступных для текущей компании.
Запрос
HTTP запрос
Параметры
| Имя | Тип | Обязательный | Описание |
|---|---|---|---|
search |
string |
Нет | Поиск по названию услуги (работает на обоих языках, нечувствительно к регистру) |
page |
integer |
Нет | Номер страницы для вывода страниц |
size |
integer |
Нет | Количество элементов на странице (по умолчанию 20, максимум 500) |
Ответ
| Имя | Тип | Описание |
|---|---|---|
id |
integer |
ID услуг и/или работ |
title |
string |
Локализованное название услуг и/или работ |
pagination |
list |
Постраничный вывод |
pagination.count |
integer |
Количество возвращенных элементов |
pagination.total |
integer |
Общее количество доступных элементов с запрошенным фильтром |
pagination.perPage |
integer |
Количество элементов на страницу |
pagination.page |
integer |
Номер страницы |
pagination.pages |
integer |
Общее количество страниц |
Устаревший конечный узел (устарел)
Пример запроса (устаревший)
curl --location
--request GET 'https://my.mellow.io/api/customer/lookups/services' \
Пример ответа (устаревший)
HTTP статус 200 OK
{
"items": [
{
"id": 3,
"title": "Копирайтинг",
"titleEn": "Copywriting",
"titleDoc": "Написание текстов статей/обзоров",
"titleDocEn": "Сopywriting of texts of articles/reviews"
},
{
"id": 2,
"title": "Работы по созданию иллюстраций к текстам (включая фотографию)",
"titleEn": "Work on creation of illustrations for texts (incl. photos)",
"titleDoc": "Работы по созданию иллюстраций (включая фотографические) к текстам статей периодического СМИ",
"titleDocEn": "Work on creation of illustrations (incl. photos) for texts of articles of periodic mass media"
}
],
"pagination": {
"count": 20,
"total": 23,
"perPage": 9999,
"page": 1,
"pages": 1
}
}
Устарело. Используйте GET /api/v2/customer/lookups/services вместо этого.
Этот устаревший конечный узел возвращает услуги с отдельными полями title, titleEn, titleDoc и titleDocEn вместо одного локализованного поля title.
HTTP запрос
Параметры
| Имя | Тип | Обязательный | Описание |
|---|---|---|---|
search |
string |
Нет | Поиск по названию услуги |
page |
integer |
Нет | Номер страницы для вывода страниц |
size |
integer |
Нет | Количество элементов на странице (по умолчанию 20, максимум 500) |
Ответ
| Имя | Тип | Описание |
|---|---|---|
id |
integer |
ID услуг и/или работ |
title |
string |
Название услуг и/или работ |
titleEn |
string |
Название услуг и/или работ (на английском) |
titleDoc |
string |
Название услуг и/или работ, указанное в сертификате |
titleDocEn |
string |
Название услуг и/или работ, указанное в сертификате (на английском) |
pagination |
list |
Постраничный вывод |
pagination.count |
integer |
Количество возвращенных элементов |
pagination.total |
integer |
Общее количество элементов, доступных с запрошенным фильтром |
pagination.perPage |
integer |
Количество элементов на странице |
pagination.page |
integer |
Номер страницы |
pagination.pages |
integer |
Общее количество страниц |
Атрибуты задач
Пример запроса
curl --location
--request GET 'https://my.mellow.io/api/customer/lookups/service-attributes' \
Пример ответа
HTTP статус 200 OK
{
"items": [
{
"id": 6,
"title": "Наименование СМИ",
"titleEn": "Name of mass media",
"type": "text"
},
{
"id": 9,
"title": "Номер издания",
"titleEn": "Issue",
"type": "text"
},
{
"id": 31,
"title": "Формат видео",
"titleEn": "Video format",
"type": "select",
"attrTypeId": 11,
"options": [
{
"id": 26,
"value": "SD",
"valueEn": "SD"
},
{
"id": 27,
"value": "HD",
"valueEn": "HD"
},
{
"id": 29,
"value": "FullHD",
"valueEn": "FullHD"
},
{
"id": 28,
"value": "UHD",
"valueEn": "UHD"
},
{
"id": 30,
"value": "4K",
"valueEn": "4K"
}
]
}
],
"pagination": {
"count": 20,
"total": 23,
"perPage": 9999,
"page": 1,
"pages": 1
}
}
Этот метод возвращает все доступные атрибуты задач для текущей компании.
Начиная с 13 октября 2025 года, параметры пути для этого конечного точки были удалены. Запрос всегда возвращает полный список всех доступных атрибутов задач для текущей компании. Параметры пути не требуются.
Запрос
HTTP запрос
Параметры
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
page |
integer |
Нет | Номер страницы для постраничного вывода |
size |
integer |
Нет | Количество элементов на странице (по умолчанию 20, максимум 500) |
Ответ
| Имя | Тип | Описание |
|---|---|---|
items |
list |
Элементы списка |
items.id |
integer |
ID атрибута |
items.title |
string |
Название атрибута |
items.titleEn |
string |
Название атрибута (на английском) |
items.attrTypeId |
integer |
ID типа атрибута |
options |
object |
Значения атрибутов (для типа "select") |
options.id |
integer |
ID значения |
options.value |
string |
Текст |
options.valueEn |
string |
Текст на английском |
pagination |
list |
Пагинированный вывод |
pagination.count |
integer |
Количество возвращенных элементов |
pagination.total |
integer |
Общее количество элементов, доступных с запрошенным фильтром |
pagination.perPage |
integer |
Количество элементов на страницу |
pagination.page |
integer |
Номер страницы |
pagination.pages |
integer |
Всего страниц |
Дополнительные документы для принятия задания
Пример запроса
curl --location
--request GET 'https://my.mellow.io/api/customer/lookups/acceptance-files' \
Пример ответа
HTTP status 200 OK
{
"items": [
{
"id": 1049,
"fileId": 123,
"title": "Соглашение о неразглашении (NDA)",
"titleEn": "Non-disclosure agreement"
}
]
}
Этот метод используется для получения списка документов, которые фрилансер должен принять перед началом работы над заданиями. В их число входят NDA и другие документы. Для загрузки такого документа на сервис, пожалуйста, свяжитесь со службой поддержки.
Запрос
HTTP запрос
Параметры
| Имя | Тип | Обязательный | Описание |
|---|---|---|---|
filter[sellerId] |
integer |
Нет | Фильтр по конкретному ID продавца |
Ответ
| Имя | Тип | Описание |
|---|---|---|
id |
integer |
ID документа |
fileId |
integer |
ID файла документа |
title |
string |
Название документа |
titleEn |
string |
Название документа (на английском) |
Специализации фрилансеров
Пример запроса
curl --location
--request GET 'https://my.mellow.io/api/lookups/specializations' \
Пример ответа
HTTP status 200 OK
{
"items": [
{
"id": 1049,
"title": "Латвия"
}
]
}
Метод используется для получения специализаций фрилансера.
Запрос
HTTP запрос
Параметры
Дополнительные параметры запроса отсутствуют.
Ответ
| Имя | Тип | Описание |
|---|---|---|
id |
integer |
ID специализации |
title |
string |
Название специализации |
titleEn |
string |
Название специализации (на английском) |
Коды стран
Пример запроса
curl --location
--request GET 'https://my.mellow.io/api/customer/ord/get-arccw-codes' \
Пример ответа
HTTP status 200 OK
{
"items": [
{
"id": 1049,
"title": "Латвия"
}
]
}
Этот метод используется для получения списка стран и их идентификаторов из ОКСМ (Российская классификация стран мира).
Запрос
HTTP запрос
Параметры
Дополнительные параметры запроса отсутствуют.
Ответ
| Имя | Тип | Описание |
|---|---|---|
id |
integer |
ID страны |
title |
string |
Название страны |
Получение типов налоговых документов
Пример запроса
curl --location \
--request GET 'https://my.mellow.io/api/customer/freelancers/get-tax-document-types?taxResidenceCountry=AU'
Пример ответа
HTTP status code: 200 OK[ { "country": "AU", "type": "TFN", "regexp": "^[0-9]{8,9}$", "typeTitle": "Tax File Number", "isMandatory": false } ]
Этот метод извлекает список всех доступных налоговых документов для клиентов. Если параметр taxResidenceCountry указан, ответ включает документы, доступные только для указанной страны.
Запрос
HTTP запрос
Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| taxResidenceCountry | string | Нет | Двухбуквенный код страны для фильтрации документов по стране |
Ответ
| Свойство | Тип | Описание |
|---|---|---|
| country | string | Двухбуквенный код страны |
| type | string | Код типа налогового документа |
| regexp | string | Регулярное выражение для проверки кода документа |
| typeTitle | string | Название типа налогового документа |
| isMandatory | boolean | Указывает, является ли документ обязательным |
Специализации фрилансеров
В таблице ниже перечислены все коды специализаций фрилансеров, используемые в поле специализации API. Каждая специализация представлена числовым идентификатором, который необходимо использовать при отправке или обновлении данных фрилансера.
| Код | Специализация |
|---|---|
| 10001 | Веб-дизайнер |
| 10002 | Программист |
| 10003 | Специалист по SEO |
| 10004 | Бухгалтер |
| 10005 | Веб-разработчик |
| 10006 | Художник |
| 10007 | Клерк |
| 10008 | Вебмастер |
| 10009 | Видеооператор |
| 10010 | Редактор |
| 10011 | Фотограф |
| 10012 | Дизайнер 3D |
| 10013 | Контент-менеджер |
| 10014 | Композитор |
| 10015 | Продюсер |
| 10016 | Типограф |
| 10017 | Копирайтер |
| 10018 | Журналист |
| 10019 | Корреспондент |
| 10020 | Менеджер проектов |
| 10021 | Менеджер |
| 10022 | Юрист |
| 10023 | Оператор контакт-центра |
| 10024 | Высшее руководство компании |
| 10025 | Системный администратор |
| 10026 | Аналитик |
| 10027 | Архитектор |
| 10028 | Дизайнер |
| 10029 | Бюджетник |
| 10030 | Технический писатель |
| 10031 | Переводчик / Интерпретатор |
| 10032 | Учитель |
| 10033 | Консультант |
| 10034 | Судебный эксперт |
| 10035 | Тестировщик |
| 10036 | Установщик |
| 10037 | Редактор |
| 10038 | Корректор |
| 10039 | Ведущий радиопрограмм |
| 10040 | Модератор |
| 10041 | Фоторедактор |
| 10042 | Курьер |
| 10043 | Агент |
| 10044 | Ассистент |
| 10045 | Промоутер |
| 10046 | Репетитор |
| 10047 | Координатор |
| 10048 | Методист |
| 10049 | Блоггер |
| 10050 | Дизайнер |
| 10051 | Электрик |
| 10052 | Слесарь |
| 10053 | Инженер |
| 10054 | Конструктор |
| 10055 | Дизайнер |
| 10056 | Слесарь |
| 10057 | Инженер по обслуживанию |
| 10058 | Рекрутер |
| 10059 | Ремонтник |
| 10060 | Турагент |
| 10061 | Агроном |
| 10062 | Администратор гостиницы |
| 10063 | Менеджер ресторана |
| 10064 | Администратор сайта |
| 10065 | Актер |
| 10066 | Актуарий |
| 10067 | Аниматор |
| 10068 | Антикризисный менеджер |
| 10069 | Арт-директор |
| 10070 | Архивариус |
| 10071 | Байер |
| 10072 | Бармен |
| 10073 | Бизнес-аналитик |
| 10074 | Бизнес-тренер |
| 10075 | Биоинженер |
| 10076 | Биолог |
| 10077 | Биотехнолог |
| 10078 | Брокер |
| 10079 | Верстальщик |
| 10080 | Визажист |
| 10081 | Винодел |
| 10082 | Генетический инженер |
| 10083 | Геодезист |
| 10084 | Геолог |
| 10085 | Геофизик |
| 10086 | Геоэколог |
| 10087 | Гид |
| 10088 | Гид-переводчик |
| 10089 | Графический дизайнер |
| 10090 | Гример |
| 10091 | Дегустатор |
| 10092 | Диджей |
| 10093 | Диетолог |
| 10094 | Дизайнер интерьеров |
| 10095 | Дизайнер рекламы |
| 10096 | Звукооператор |
| 10097 | Звукорежиссер |
| 10098 | Стилист |
| 10099 | Инженер по оборудованию |
| 10100 | Инженер по безопасности |
| 10101 | Инженер по телекоммуникациям |
| 10102 | Инженер-транспортник |
| 10103 | Инженер по техническому обслуживанию |
| 10104 | Инженер связи |
| 10105 | Конструктор |
| 10106 | Инженер-сметчик |
| 10107 | Инженер-строитель |
| 10108 | Инженер по качеству |
| 10109 | Инженер-эколог |
| 10110 | Инженер-электрик |
| 10111 | Инженер-энергетик |
| 10112 | Инструктор по вождению |
| 10113 | Интервьюер |
| 10114 | Искусствовед |
| 10115 | Картограф |
| 10116 | Кинокритик |
| 10117 | Кинооператор |
| 10118 | Клипмейкер |
| 10119 | Кондитер |
| 10120 | Консультант по туризму |
| 10121 | Косметолог |
| 10122 | Тренер |
| 10123 | Критик |
| 10124 | Культуролог |
| 10125 | Ландшафтный дизайнер |
| 10126 | Лингвист |
| 10127 | Лоббист (GR-специалист) |
| 10128 | Логист |
| 10130 | Маникюрша |
| 10131 | Менеджер гостинично-ресторанного бизнеса |
| 10132 | Менеджер по закупкам |
| 10133 | Менеджер по инновациям |
| 10134 | Менеджер по логистике |
| 10135 | Менеджер по маркетингу |
| 10136 | Менеджер по персоналу |
| 10137 | Менеджер по продажам |
| 10138 | Менеджер по развитию |
| 10140 | Менеджер по рекламе |
| 10141 | Менеджер по туризму |
| 10142 | PR-менеджер |
| 10143 | Мерчендайзер |
| 10144 | Модельер |
| 10145 | Мультипликатор |
| 10146 | Налоговый консультант |
| 10147 | Нанотехнолог |
| 10148 | Океанолог |
| 10149 | Оператор ПК |
| 10150 | Официант |
| 10151 | Оценщик |
| 10152 | Парикмахер |
| 10153 | Педагог |
| 10154 | Писатель |
| 10155 | Повар |
| 10156 | Политолог |
| 10157 | Политтехнолог |
| 10158 | Помощник бухгалтера |
| 10159 | Пресс-атташе |
| 10160 | Продавец |
| 10161 | Прораб |
| 10162 | Психолог |
| 10163 | Радиотехник |
| 10164 | Продюсер |
| 10165 | Рекламный агент |
| 10166 | Ресторатор |
| 10167 | Риелтор |
| 10168</td |
WebHooks
Webhooks — это сообщения, которые уведомляют сервисы о событиях внутри Mellow. Вы можете добавить пользовательский URL, куда будут отправляться все уведомления о событиях. Используйте этот запрос для добавления такого URL. После этого вы можете настроить его таким образом, чтобы обрабатывались только необходимые полученные события. Mellow всегда отправляет все уведомления о событиях на добавленный вами URL, и вы можете фильтровать эти события по своему желанию (поле name поможет вам определить тип события).
Доступные события:
Регистрация фрилансера. Если вы работаете с API, фрилансеры должны самостоятельно завершить регистрацию. Вы можете настроить webhook, уведомляющий вас о фрилансерах, переходящих по ссылке в электронной почте и заполняющих регистрационную форму.
Добавление/удаление способа оплаты. Добавление способа оплаты также является действием, которое фрилансеры выполняют самостоятельно, поэтому вы можете настроить соответствующее уведомление.
Изменение налогового статуса подрядчика.
Пример сообщения, отправляемого на указанный URL:
{
"timestamp": 1674539549,
"name": "cardAdded",
"payload": {
"ownerId": 6,
"id": 11
}
}
Параметры:
name- Название события,payload- Данные события. Возможные значения включают:- Уведомление о добавлении способа оплаты возвращает параметры
ownerId(ID пользователя, добавившего метод) иid(ID способа оплаты). - Для регистрации фрилансера возвращается
uuidфрилансера. - Изменение налогового статуса подрядчика (применимо только для фрилансеров из Российской Федерации) возвращает
uuidфрилансера и его налоговый статус.
- Уведомление о добавлении способа оплаты возвращает параметры
timestamp- Дата события
| Событие | Описание | Полезная нагрузка |
|---|---|---|
bankAccountAdded |
Добавлен банковский счет | id - UUID банковского счета, ownerId - ID фрилансера, uuid - UUID банковского счета |
bankAccountRemoved |
Банковский счет удален | id - UUID банковского счета, ownerId - ID фрилансера, uuid - UUID банковского счета |
cardAdded |
Добавлен способ оплаты (банковская карта) | id - UUID карты, ownerId - ID фрилансера, uuid - UUID карты |
cardRemoved |
Способ оплаты (банковская карта) удален | id - UUID карты, ownerId - ID фрилансера, uuid - UUID карты |
walletAdded |
Добавлен кошелек | id - UUID кошелька, ownerId - ID фрилансера, uuid - UUID кошелька |
walletRemoved |
Кошелек удален | id - UUID кошелька, ownerId - ID фрилансера, uuid - UUID кошелька |
freelancerRegistered |
Фрилансер зарегистрирован (webhook срабатывает после того, как фрилансер завершает начальный этап регистрации аккаунта — это происходит, когда пользователь устанавливает пароль и подтверждает свою электронную почту по ссылке регистрации) | uuid - UUID фрилансера |
freelancerVerified |
Фрилансер успешно верифицирован | uuid - UUID фрилансера |
taxationStatusChanged |
Изменен налоговый статус фрилансера | uuid - UUID фрилансера, taxationStatusId - ID нового налогового статуса |
Каждый запрос содержит специальный заголовок X-Sign с подписью. Подпись выглядит как sha256(body . secret), где:
secret- это секретный ключ из запросаGET api/v1/customer/web-hook.body- это тело запроса.
Если у вас несколько компаний, настройка webhook для каждой требует перехода в компанию и вызова запроса на создание webhook.
Если клиент не отвечает (или отвечает с HTTP-кодом, отличным от 200), Mellow будет продолжать пытаться отправить уведомление в течение следующих 24 часов.
Получение Webhook
Пример запроса
curl --location
--request GET 'https://my.mellow.io/api/customer/web-hook' \
Пример ответа
HTTP статус 200 OK
{
"url": "https://webhook.site/588190fc-47d6-47f2-bded-17216bfe6e92",
"status": "enabled",
"secret": "bb940556f36a5ae58063f151e51f5318",
"lastTriggered": null,
"lastError": null
}
Этот метод используется для получения деталей webhook.
Запрос
HTTP запрос
Параметры
Дополнительные параметры запроса отсутствуют.
Ответ
| Имя | Тип | Описание |
|---|---|---|
url |
string |
Целевой URL для уведомлений |
status |
string |
Статус. Доступные варианты:
|
secret |
string |
Секретный ключ, который будет включен в каждое уведомление |
lastTriggered |
string |
Указывает, когда было отправлено последнее уведомление |
lastError |
string |
Указывает, когда последнее уведомление не было доставлено |
Создание или обновление веб-хука
Пример запроса
curl --location
--request POST 'https://my.mellow.io/api/customer/web-hook' \
--data-raw '{
"status" : "enabled",
"url" : "https://test.com"
}'
Пример ответа
HTTP статус 200 OK
Этот метод используется для добавления или обновления веб-хука. Другими словами, вы добавляете URL, на который будут отправляться все события (например, добавление или удаление способа оплаты фрилансера). Чтобы включить или отключить отправку уведомлений о событиях, передайте соответственно enabled или disabled в status.
Запрос
HTTP запрос
Параметры
| Имя | Тип | Обязательность | Описание |
|---|---|---|---|
status |
string |
Да | Статус. Доступные варианты:
|
url |
string |
Да | Целевой URL для уведомлений |
Ответ
Успешный запрос возвращает пустой ответ.
Удаление вебхука
Пример запроса
curl --location
--request DELETE 'https://my.mellow.io/api/customer/web-hook' \
--data-raw '{
"status" : "enabled",
"url" : "https://test.com"
}'
Пример ответа
HTTP status 200 OK
Этот метод используется для удаления вебхуков.
Запрос
HTTP запрос
Параметры
Дополнительные параметры запроса отсутствуют.
Ответ
Успешный запрос возвращает пустой ответ.
Коллекция запросов Postman
API Mellow поддерживает предварительно созданные коллекции запросов Postman. Эти коллекции включают краткие инструкции по использованию переменных и отправке запросов в Postman.
Чтобы использовать коллекцию запросов Postman:
Шаг 1
Откройте коллекцию запросов Postman.
Шаг 2
Нажмите Создать копию коллекции, чтобы скопировать коллекцию запросов в ваше рабочее пространство Postman.
В открывшемся окне укажите название копии коллекции и рабочее пространство, где эта копия будет создана. Отметьте "Следить за оригинальной коллекцией", если хотите получать уведомления о изменениях в оригинальной коллекции запросов.

Шаг 3
Перейдите к запросу токена и укажите свои данные авторизации.

Шаг 4
Перейдите в настройки коллекции -> Авторизация и скопируйте полученный токен.

Мягкий MCP
Что такое MCP и зачем оно вам нужно
MCP (Model Context Protocol) — это способ подключения клиента ИИ (Claude, Cursor, ChatGPT и других) к Mellow. После подключения вы отдаете команды простым текстом, и агент выполняет их в Mellow за вас.
Обычно, чтобы создать задачу, вы открываете свой аккаунт, открываете форму, заполняете поля и нажимаете "опубликовать". С MCP это выглядит так: Создать задачу "Разработка лендинга" для фрилансера [email protected], 500 евро, срок до 1 июня 2026 года
Агент находит фрилансера, заполняет параметры, создает задачу и показывает вам результат.
Почему это удобно:
- Команды на простом языке - нет необходимости изучать API или писать код.
- Массовые операции: вы можете передать агенту файл Excel, и он будет создавать задачи построчно.
- Один клиент покрывает разные аспекты работы - задачи, фрилансеры, платежи, найм.
Под капотом это тот же Mellow, который вы используете в своем аккаунте и через API: те же данные и те же разрешения, вы просто отдаете команды на простом языке.
К чему у вас будет доступ
Набор команд зависит от роли вашего аккаунта - Mellow автоматически предоставляет подходящую.
Если вы клиент (компания):
- приглашать фрилансеров и управлять ими;
- создавать задачи, публиковать их, изменять сроки, принимать работу и оплачивать, отменять;
- группировать задачи в проекты;
- просматривать баланс и транзакции, скачивать документы - счета и отчеты;
- находить подрядчиков через AI Scout: размещать запросы, рассматривать заявки, приглашать кандидатов, поддерживать собственный пул.
Если вы фрилансер:
- управлять вашими внешними клиентами - добавлять, редактировать, архивировать;
- выставлять счета через Mellow, отправлять их, отслеживать платежи и отменять.
Как подключиться
Поддерживаемые клиенты
Инструкции по подключению предоставлены для:
- Claude - приложение и веб (протестировано)
- Claude Code (протестировано)
- Codex (протестировано)
- Cursor
- Visual Studio Code
- Windsurf
- Zed
- ChatGPT
Любой другой клиент MCP также подойдет, если он поддерживает вход через OAuth и подключение к удаленному серверу.
Что вам понадобится
- Аккаунт Mellow — клиент или фрилансер.
- Клиент AI из списка ниже.
- Node.js (LTS, версия 18 или новее) - только если ваш клиент подключается через
mcp-remote(это указано в соответствующем блоке).
Адрес сервера
Одинаков для всех клиентов:
https://mcp.mellow.io/mcp
Вход в систему
При первом подключении клиент открывает браузер со страницей входа Mellow. Войдите в систему со своей учетной записью и подтвердите доступ - так же, как при обычном входе на сайт. После этого клиент работает самостоятельно; он никогда не видит и не хранит ваш пароль.
Клод (веб, claude.ai)
Откройте Настройки → Коннекторы. Введите Mellow в строку поиска, выберите его из списка, подключитесь и войдите в свой аккаунт.
Claude Desktop
Если в вашей версии есть каталог соединителей: откройте Настройка → Соединители, введите Mellow в поиск и подключите из списка.
Если такой опции нет, подключитесь через mcp-remote - для этого вам нужно отредактировать конфигурацию Claude Desktop.
Откройте меню Claude → Настройки → Разработчик → Редактировать конфиг - это откроет файл claude_desktop_config.json (он создается, если его еще нет). Добавьте в него:
{ "mcpServers": { "mellow": { "command": "npx", "args": ["mcp-remote", "https://mcp.mellow.io/mcp"] } } }
Если файл пуст, вставьте весь блок. Если в нем уже есть настройки, добавьте mcpServers на верхний уровень - рядом с тем, что уже есть, разделенные запятой, не внутри других блоков. Схематически:
{ "existing_settings": { ... },
"mcpServers": { "mellow": { "command": "npx", "args": ["mcp-remote", "https://mcp.mellow.io/mcp"] } } }
Первый блок здесь - это то, что уже было в файле; не изменяйте его (этот пример схематичен, не копируйте его дословно). Если приложение сообщает об ошибке в файле после редактирования, это обычно лишняя или недостающая запятая между блоками.
Если вы хотите найти файл вручную, он здесь:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
После сохранения перезапустите приложение.
Код Клода
Запустите в терминале:
claude mcp add --transport http mellow https://mcp.mellow.io/mcp
Затем перезапустите сессию - выйдите (/exit или Ctrl+C) и запустите claude снова. Без перезапуска новый сервер не будет обнаружен.
После перезапуска, выполните команду /mcp в чате - откроется страница входа Mellow. После успешного входа в систему, консоль покажет:
Authentication successful. Connected to mellow.
Кодекс
В терминале:
codex mcp add mellow --url https://mcp.mellow.io/mcp
Команда проведет вас через процесс входа в Mellow.
Если это ваш первый MCP в Codex, активируйте функцию rmcp - добавьте это в файл ~/.codex/config.toml:
[features] experimental_use_rmcp_client = true
Курсор
Тип сервера - Команда, команда:
npx mcp-remote https://mcp.mellow.io/mcp
Или добавьте Mellow со страницы MCP в настройках Курсора.
Visual Studio Code
Откройте палитру команд (Ctrl/Cmd + Shift + P), найдите MCP: Add Server, выберите Command (stdio) и введите:
npx mcp-remote https://mcp.mellow.io/mcp
Или добавьте это в конфигурацию вручную:
{ "mcpServers": { "mellow": { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.mellow.io/mcp"] } } }
Виндсерфинг
Настройки → Каскад → Серверы MCP → Добавить пользовательский сервер:
{ "mcpServers": { "mellow": { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.mellow.io/mcp"] } } }
Зед
Откройте настройки Зед (Cmd + ,) и добавьте:
{ "context_servers": { "mellow": { "source": "custom", "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.mellow.io/mcp"], "env": {} } } }
ChatGPT
Подключается через mcp-remote так же, как и Claude Code: клиент устанавливает соединение, входит в систему и получает доступ к командам Mellow.
Другие клиенты
Большинство других клиентов с поддержкой MCP настраиваются одинаково:
- Команда:
npx - Аргументы:
-y mcp-remote https://mcp.mellow.io/mcp - Окружение: не требуется
Как проверить, что подключение прошло успешно
После входа в систему:
- Консольные клиенты показывают строку
Authentication successful. Connected to mellow. - В других клиентах Mellow появляется в списке подключенных серверов, а его команды - среди доступных.
Сделайте первый запрос - он только читает данные и ничего не изменяет: Показать мой профиль
Или, в зависимости от вашей роли:
- Показать моих фрилансеров (заказчик)
- Показать моих клиентов (фрилансер)
Если агент отвечает данными вашего Mellow - все работает.
Что вы можете делать: примеры команд
Вы пишете команды свободным текстом - это всего лишь примеры формулировок.
Управление фрилансерами
- Пригласить фрилансера [email protected]
- Найти фрилансера с электронной почтой [email protected]
- Показать всех моих фрилансеров
- Показать детали фрилансера с ID 12345
- Изменить специализацию фрилансера 12345 на "Frontend Developer"
Управление задачами
- Создать задачу "Разработка лендинга" для фрилансера [email protected], 500 евро, срок до 1 июня 2026 года
- Показать все мои задачи
- Показать задачи стоимостью более 100 евро, созданные после 1 января 2026 года
- Показать детали задачи 6657614
- Опубликовать задачу с UUID 94d104bd-…
- Продлить срок выполнения задачи 6657614 до 15 мая 2026 года
- Принять задачу 6657614
- Отклонить задачу 6657614
Финансы и платежи
- Какие валюты доступны?
- Показать текущие обменные курсы
- Какие валюты доступны для моей компании?
- Оплатить задачу 6657614
- Показать список всех документов
- Показать транзакции за март 2026 года
Справочные данные
- Показать список категорий услуг
- Какие налоговые статусы доступны?
- Показать мой профиль
Поиск
- Найти всё, что связано с "дизайном"
Группы задач
- Создать группу задач "Project Alpha"
- Показать все группы задач
- Переименовать группу 5 в "Project Beta"
- Удалить группу задач 5
Как это работает на практике
Вы пишете команду, и агент разбивает её на отдельные действия и выполняет их по порядку. Каждое действие - это вызов метода Mellow API.
Пример 1. Создание и публикация задания
Создайте задание "Дизайн логотипа" для [email protected] за 200 евро с дедлайном 20 апреля и опубликуйте его
Что делает агент, шаг за шагом:
- Ищет фрилансера по электронной почте. Если его нет в вашей команде - приглашает.
- Если в задании не хватает данных - категории услуги или необходимых атрибутов - спрашивает у вас. Агент не заполняет их наугад.
- Создает задание.
- Проверяет, что задание создано и какой у него статус.
- Проверяет баланс компании перед публикацией.
- Публикует задание - теперь фрилансер может его видеть.
Пример 2. Принять и оплатить задание
Принять и оплатить задание 6657614
Что делает агент, шаг за шагом:
- Читает текущий статус задания - вы можете принять работу, которую фрилансер уже отправил (статус "ожидает принятия").
- Принимает работу.
- Проверяет баланс компании.
- Инициирует выплату - оплачивается только принятая работа.
- Ждет, пока задание перейдет в статус "оплачено".
Перед тем как производить оплату, отмену и другие действия, связанные с деньгами или договоренностями, агент сначала показывает, что он собирается делать, и ждет вашего подтверждения.
Пример диалога
Вы: Создайте задачу по дизайну лендинга для [email protected], 300 евро.
Агент: Я нашел Анну в вашей команде. Отсутствуют два обязательных поля - категория услуги и срок выполнения. Какой срок установить и к какой категории относится эта задача?
Вы: Срок до 30 апреля, категория веб-дизайн.
Агент: Я подготовлю задачу "Дизайн лендинга", Анна, 300 евро, срок до 30 апреля, категория "Веб-дизайн". Создать и опубликовать?
Вы: Да.
Агент: Создано и опубликовано - Анна уже может видеть задачу.
Когда ответ не мгновенный
Большинство команд выполняются сразу. Некоторые операции завершаются в фоновом режиме: выплата задания занимает от нескольких секунд до нескольких минут, а архивация документов и подбор кандидатов Scout не происходят мгновенно. В таких случаях агент либо ждет результат, либо сообщает, что операция начата и результат поступит позже.
Распространенные сценарии
Привлечь нового фрилансера и создать задание:
- Пригласить фрилансера [email protected]
- Создать задание "Дизайн логотипа" для [email protected], 200 евро, срок до 20 апреля 2026 года
- Опубликовать это задание
Мониторинг текущих заданий:
- Показать все задания в процессе
- Какие задания просрочены?
- Показать детали задания 12345
Завершение и оплата:
- Принять задание 12345
- Оплатить задание 12345
Массовая работа:
- Показать всех непроверенных фрилансеров
- Показать все задания более 1000 евро за последний месяц
- Показать все документы
Импорт задач из файла
Если вы уже используете стандартный файл импорта Excel от Mellow для массового создания задач, передайте этот же файл агенту - он прочитает файл, обработает данные и создаст задачи.
Как это работает
- Подготовьте файл импорта в стандартном формате Mellow (
.xlsx). - Попросите агента обработать его:
Прочитайте файл /Users/me/Desktop/import_tasks.xlsx и создайте задачу для каждой строки
Агент:
- читает файл и распознает стандартные колонки Mellow;
- ищет фрилансеров по электронной почте (или предлагает пригласить новых);
- создает задачи с правильными параметрами;
- показывает результат и предлагает опубликовать задачи.
Формат файла импорта
Файл использует стандартный формат Mellow со следующими столбцами:
| Столбец | Обязательно | Описание |
|---|---|---|
email |
да | Электронная почта фрилансера (должна быть в вашей команде) |
payout_sum |
да | Сумма выплаты (без центов, без точек и запятых) |
worker_currency |
да | Валюта: EUR, USD или RUB |
service_code |
да | Числовой код услуги из каталога Mellow |
attributes |
да | Значения атрибутов, разделённые ; (не менее 3 атрибутов) |
title |
да | Название задачи (до 300 символов) |
description |
да | Описание задачи (до 10 000 символов) |
merchant_txid |
нет | Уникальный ID задачи для предотвращения дубликатов |
completion_date |
нет | Срок выполнения в формате YYYY-MM-DD (не менее +1 дня) |
group_name |
нет | Название группы задач (должно уже существовать) |
need_report |
нет | 1 - требуется отчёт от фрилансера |
copyright |
нет | 1 - передача авторских прав |
agreement |
нет | 1 - требуется подписанное соглашение |
share_commission |
нет | 1 - разделить 1% комиссии с фрилансером |
Пример файла
Стандартный import_tasks_example.xlsx выглядит так:
email: [email protected] payout_sum: 5000 worker_currency: USD service_code: 3084 attributes: 1;11.11.2025/21.12.2026;https://mellow.io/;One World Trade Center...;Mellow test;English;txt;Mellow title: Название задачи (макс. 300 символов) description: Описание задачи (макс. 10000 символов) completion_date: 2029-01-02 group_name: Группа задач 1 need_report: 1 copyright: 1 agreement: 0 share_commission: 1
Поле attributes заполняется значениями, разделенными ;, в порядке, который зависит от выбранного service_code. Если атрибут не нужен, оставьте пустое место между ; (например: ;November;https://mellow.io/;;;English).
Примеры запросов
Импорт с предпросмотром: - Прочитайте файл import_tasks.xlsx, покажите, что в нем находится, и создайте задачи
Импорт только для определенных фрилансеров: - Из import.xlsx создайте задачи только для [email protected] и [email protected]
Импорт с корректировкой параметров: - Загрузите задачи из import.xlsx, но установите срок всех задач на 1 июня 2026 года
Проверка без создания: - Прочитайте import.xlsx и проверьте, все ли фрилансеры в моей команде
Вы можете скачать шаблон файла в своем аккаунте Mellow, в разделе импорта задач.
Доступ и подтверждения
Агент работает строго в рамках разрешений вашего аккаунта Mellow: он видит и может делать именно то, что доступно вам в вашем аккаунте. Если у вашей роли нет разрешения, действие не будет выполнено - так же, как в интерфейсе.
По умолчанию агент ничего не делает без уведомления: перед каждым действием в Mellow клиент точно показывает, что он собирается делать, и ждет вашего решения. Запрос показывает название команды, её параметры и краткое описание - например, перед приглашением фрилансера:
- claude.ai Mellow - Пригласить фрилансера (email: "[email protected]", firstName: "test")
И три варианта ответа:
- Да - выполнить один раз. В следующий раз агент спросит снова.
- Да, и больше не спрашивать для … команд - перестать спрашивать для этой команды: с этого момента она выполняется без подтверждения.
- Нет - отклонить.
Второй вариант удобен для безопасных операций, которые вы часто повторяете - например, просмотр списка задач. Для действий, связанных с деньгами или договорённостями (оплата, отмена, выставление счета), лучше сохранить подтверждение и не выбирать "больше не спрашивать".
Где это настроить
- Claude (приложение). Откройте Настройка → Коннекторы → Mellow. В разделе разрешений инструмента вы можете настроить, какие команды Mellow выполняются без запросов и какие всегда требуют подтверждения.
- Claude Code. Команда
/permissionsпоказывает текущие правила и позволяет их изменять: добавить команду в список разрешенных или удалить ее оттуда, если вы случайно выбрали "не спрашивать снова". Правила сохраняются в файле настроек Claude Code.
Также существует режим, который полностью отключает подтверждения (bypass). Включайте его только если вы доверяете всем операциям и работаете в изолированной среде; для действий с реальными деньгами это не рекомендуется.
Как переключить аккаунты
Claude Code (консоль). Выполните /mcp, выберите Mellow, затем Очистить аутентификацию - это сбросит текущий вход в систему. После этого выберите Переподключиться и войдите с нужным аккаунтом.
Claude (приложение). Откройте Настройки → Коннекторы, отключите Mellow и подключите его снова.
При повторном входе в систему помните: если вы все еще залогинены в Mellow в вашем браузере под старым аккаунтом, вход может произойти автоматически. Выйдите из Mellow в вашем браузере (на my.mellow.io) или откройте страницу входа в инкогнито окне.
Возможные проблемы соединения
- Клиент не видит сервер. Перезапустите клиента или сессию - без перезапуска добавленный сервер не будет обнаружен. Убедитесь, что адрес введен точно:
https://mcp.mellow.io/mcp. - Ошибка входа или цикл входа. Удалите сохраненные данные авторизации и подключитесь снова:
rm -rf ~/.mcp-auth
Если это не помогает - обновите Node.js.
- npx или mcp-remote не запускаются. Проверьте, установлен ли Node.js и доступна ли команда npx в терминале.
- Команды отсутствуют или устарели. Отключитесь и снова подключитесь к Mellow - клиент обновит список доступных команд.
- Некоторые команды недоступны или действие не проходит. Возможно, вашей роли в Mellow не хватает необходимых разрешений. Проверьте вашу роль с администратором вашей компании.
- Ничего не помогает. Пишите в службу поддержки: [email protected].
Что дальше
Обычно больше ничего настраивать не нужно: вместе с командами клиент получает встроенную инструкцию по работе с Mellow и использует её самостоятельно.
Примечания к выпуску
Январь 2026
Добавлено:
- Новый эндпойнт Привязка ИНН для налогового соответствия позволяет клиентам сохранять российский идентификационный номер налогоплательщика (ИНН) для фрилансеров с индивидуальным налоговым статусом. С 1 января 2026 года ИНН становится обязательным для вывода средств на российские банковские счета. Эндпойнт проверяет формат ИНН и контрольную сумму перед сохранением его в системе.
Октябрь 2025
Изменено:
- API запросы для Названий услуг и работ и Атрибутов задач были обновлены для упрощения использования и повышения консистентности. Параметры пути были удалены, и теперь оба эндпоинта возвращают полный список, актуальный для текущей компании.
- Ответ на запрос приглашения фрилансера теперь включает ID фрилансера (
freelancerId).
Август 2025
Изменено:
- Обновлена процедура приглашения фрилансеров в команду.
emailтеперь обязателен при приглашении фрилансера (приглашения только поphoneбольше не поддерживаются).- В запрос приглашения добавлены новые необязательные поля:
citizenship,address,postal_code,city,state,country. - Все поля должны быть заполнены до того, как фрилансер сможет принять первое задание.
- Обновлен конечный точка для отправки налоговой информации фрилансеров.
- Новая конечная точка:
POST /api/customer/freelancers/tax-info - Заменяет предыдущую
POST /api/customer/freelancers/add-tax-document. - Теперь требуется указание
taxResidenceCountryи проверка типа документа и номера для указанной страны. - Добавлен необязательный параметр
vatдля фрилансеров из ЕС.
- Новая конечная точка:
- Изменена конечная точка для установки статуса по умолчанию для компании.
- Новая конечная точка:
POST /api/customer/companies/{companyId}/default - Заменяет предыдущую
PATCH /api/customer/companies. - Используйте новый возвращенный JWT для всех последующих аутентифицированных запросов API.
- Новая конечная точка:
- Запрос на проверку возможности начала работы фрилансером теперь проверяет, полностью ли заполнены профиль и налоговая информация фрилансера:
- Должны быть предоставлены
taxNumberиtaxResidenceCountry. Вы можете предоставить номер налогоплательщика фрилансера, используя конечную точку добавления номера налогоплательщика фрилансера. - Если требуемые данные отсутствуют, ответ укажет на незаполненные поля, и фрилансеру будет запрещено начинать задание, пока это не будет исправлено.
- Должны быть предоставлены
Июнь 2025
Добавлено:
- Расширенная поддержка мультивалютности в задачах. Теперь вы можете указать другую валюту для оплаты фрилансеру, используя параметр
workerCurrencyв запросе на создание задачи.
- Проверьте доступные валюты с помощью Получить разрешенные валюты для мультивалютных задач.
- Сервис автоматически конвертирует ваш баланс в выбранную валюту по текущему курсу обмена.
- Если средств недостаточно, задача будет создана как черновик.
- Опубликуйте черновики, когда будете готовы, используя метод Публикация черновой задачи. ### Незначительная очистка
- Удалены точки доступа и параметры, связанные с
insurance. Они больше не поддерживаются и были удалены из API.
Август 2024
Добавлено:
- Добавлен параметр
shareCommissionв запрос задач, заменяющийcompensateWorkerServiceFee. Этот новый параметр позволяет делиться 1% комиссии с фрилансером.
Июнь 2024
Добавлено:
- Запрос на получение списка специализаций для фрилансера.
Апрель 2024
Добавлено:
- Новые события для вебхуков: регистрация фрилансера, изменения в налоговом статусе фрилансера и включение/отключение автоматических налоговых платежей.
- Параметр для компенсации комиссии фрилансера,
compensationType, был добавлен в запрос на создание задачи. Этот параметр определяет тип платежной системы, которую фрилансер будет использовать для вывода средств. Поскольку процент комиссии различается для разных платежных методов, этот параметр позволяет точно рассчитать процент комиссии фрилансера. - В ответ на запрос добавления способа оплаты включен параметр
UUIDдля способа оплаты. - При получении списка способов оплаты теперь включен параметр, показывающий, включена ли автооплата для каждого способа оплаты.
Ноябрь 2023
Добавлено:
- Параметр
fileIdбыл добавлен в ответ на запрос получения списка документов для принятия задачи. - Параметр для компенсации комиссии фрилансера,
compensateWorkerServiceFee, был добавлен в запрос на создание задачи.
Октябрь 2023
Добавлено:
- Теперь в запросе на создание платежа по задаче можно указать валюту, в которой должна быть выполнена конвертация перед выводом средств.
Август 2023
Добавлено:
- Запрос на добавление налоговой информации фрилансера.
- Запрос на изменение личных данных фрилансера.
- Отмена выделения для ORD. Подробнее здесь.
Июль 2023
Добавлено:
- Запрос на получение оплаты за задание.