NAV Navbar
Mellow

Обзор

Mellow API служит для интеграции Mellow в ваш проект. Эта документация API предоставляет разработчикам подробное описание всех доступных запросов.

Общая информация

API Mellow включает методы для работы с задачами и фрилансерами. После регистрации в качестве администратора вашей компании вы можете приглашать и создавать фрилансеров, управлять задачами и инициировать вывод средств на платежные методы фрилансеров.

Предпочитаете работать через клиента ИИ? Помимо REST API, Mellow предлагает сервер MCP — подключите клиента ИИ (Claude, Cursor, ChatGPT и другие) и выполняйте те же операции с помощью команд на естественном языке вместо HTTP-запросов. Те же данные, те же разрешения. Смотрите руководство Mellow MCP, чтобы начать работу.

Создаете своего агента? Mellow также предоставляет готовые интеграционные подсказки, которые обучают агента ИИ его рабочим правилам от начала до конца — двухэтапное принятие→оплата, отправка счетов, обработка ошибок и другое — для сценариев Contractor of Record, Scout и фрилансер (F2B). Смотрите раздел Подсказка агента.

Раздел Быстрый старт представляет наиболее популярный вариант использования 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 в заголовке запроса. В этом случае вы можете одновременно делать запросы для всех компаний без обновления токена, просто передавая идентификатор компании в каждом запросе.

Процесс аутентификации выглядит следующим образом:

Аутентификация

Срок действия токена

Запрос 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 Нет Код двухфакторной аутентификации. В зависимости от настроек учетной записи пользователя:
  • Если 2FA включена, этот параметр необходим для получения токена. Если он не передан, будет отправлено SMS. После получения кода вам нужно будет снова вызвать этот запрос.
  • Если 2FA не включена, этот параметр не требуется.

Ответ

Имя свойства Тип Описание
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, рекомендуемые шаги следующие:

Use_case_1

  1. Найти или пригласить фрилансера. Фрилансер получит пригласительное письмо со ссылкой для регистрации. Чтобы проверить статус регистрации, сделайте запрос поиска фрилансера с фильтром по электронной почте: пользователи, которые завершили и подтвердили свою регистрацию, будут иметь параметр isRegistered как "true". Далее фрилансеру необходимо пройти верификацию.
  2. Создать новое задание.
  3. Фрилансер подтверждает и выполняет задание.
  4. Принять задание.
  5. Оплатить задание. Сумма платежа списывается с баланса клиента и зачисляется на баланс фрилансера.

Если ваши фрилансеры не собираются использовать Mellow самостоятельно (менять статусы заданий, добавлять способы оплаты или выводить оплату за задание), то рекомендуемые шаги следующие:

Use_case_1

  1. Найти или пригласить фрилансера.
  2. Создать новое задание.
  3. Изменить статусы задания по порядку: "Принято фрилансером", "Выполнено".
  4. Принять задание.
  5. Оплатить задание.
  6. Получить способ оплаты фрилансера или добавить новый. Только фрилансер может добавить новый способ оплаты. Чтобы добавить способ оплаты, необходимо отправить код подтверждения фрилансеру, а затем сгенерировать ссылку на экран, где фрилансер сможет ввести платежные данные.
  7. Создать выплату на способ оплаты фрилансера за выполненное задание.

Приглашение фрилансеров

Чтобы добавить фрилансера в вашу команду, вызовите запрос на приглашение фрилансера.

Метод и URI запроса: POST https://my.mellow.io/api/customer/freelancers

Успешный запрос возвращает пустой ответ с кодом 200.

Создание задач

Чтобы создать задачу, используйте этот запрос, передав все необходимые параметры задачи: категорию, атрибуты, название, описание и цену.

Метод и URI запроса: POST https://my.mellow.io/api/tasks

Успешный запрос возвращает пустой ответ с кодом 200.

Изменение статусов задач

Этапы выполнения задачи следующие:

При использовании API необходимо выполнять эти этапы последовательно. Оплата задачи производится через отдельный запрос (оплата производится только на баланс фрилансера). Все другие переходы статусов обрабатываются с помощью запроса изменения статуса задачи. Другими словами, при отправке запроса необходимо соблюдать последовательность со следующими статусами:

Метод и 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": "n.malina@example.com",
        "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 валюты. Возможные значения:
  • 1: RUB
  • 2: USD
  • 3: EUR
filter[groupId] integer Нет ID группы задач
filter[deadlineType] integer Нет ID типа срока. Возможные значения:
  • 1: Мягкий срок
  • 2: Жесткий срок
filter[workerTaxationStatus] integer Нет Налоговый статус фрилансера. Возможные значения:
  • 1: Физическое лицо
  • 3: Самозанятый
  • 4: Индивидуальный предприниматель
filter[hasCopyright] boolean Нет Указывает на необходимость передачи прав интеллектуальной собственности
filter[hasReport] boolean Нет Указывает, что при выполнении задачи требуется отчет
filter[payedBy] integer Нет ID пользователя, оплатившего задачу
filter[externalId] string Нет Внешний ID задачи, который можно установить при создании задачи (merchant_txid)
sort string Нет Атрибут для сортировки. Возможные значения:
  • date_end: Срок выполнения задачи
  • date_finished: Дата завершения задачи
  • price: Цена задачи
direction string Нет Порядок сортировки. Возможные значения:
  • asc: По возрастанию
  • desc: По убыванию
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": "n.malina@example.com",
    "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 Email фрилансера
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 Нет Валюта, в которой фрилансер получит средства. Поддерживаемые значения можно получить, используя запрос на получение разрешенных валют для мультивалютных задач. Если отличается от валюты баланса заказчика, сумма будет автоматически конвертирована по текущему курсу обслуживания. Если средств недостаточно, задача будет создана в статусе черновика. Позже вы можете опубликовать черновик, используя запрос Публикация черновика задачи.
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 статус-код: 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). Возможные проблемы:

С 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 статус код: 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

Этот метод используется для отклонения (отказа) от задачи. В зависимости от статуса задачи до запроса, после выполнения запроса статус изменится на:

Запрос

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 status code: 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":"Task is ready, 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 Да Тип файла. Возможные значения:
  • 5: Передача прав в задаче
Ответ

Успешный запрос возвращает пустой ответ.

Фрилансеры

Этот раздел содержит методы управления фрилансерами, включая:

Приглашение фрилансера

Пример запроса

curl -X POST "https://my.mellow.io/api/customer/freelancers" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "email": "samantha.williams@example.com",
        "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 должны быть предоставлены в запросе.

Требования к налоговым данным

Предоставление информации о налогоплательщике обязательно для поддержания активного профиля фрилансера.
См. Добавление идентификационного номера налогоплательщика фрилансера.

Требования к соглашению о предложении фрилансера

Для начала работы в сервисе фрилансер должен подписать соглашение о предложении. Если фрилансер регистрируется самостоятельно, ему будет предложено подписать предложение перед принятием первого задания. Если вы завершаете регистрацию от его имени, вы должны убедиться, что предложение принято, прежде чем он сможет начать работу. Перед изменением статуса задания на "Начать задание" или выполнением любого действия, переводящего в этот статус (например, быстрая оплата задания), выполните проверку на наличие ограничений, используя Проверка наличия проблем перед началом задания. Если предложение не подписано, используйте точку доступа Принять предложение от имени фрилансера для продолжения.

Эти требования применяются для активации профиля фрилансера и также проверяются при создании предложений или счетов.

Запрос возвращает 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

Все параметры 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": "alex.mironov@example.com",
      "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 налогового статуса. Возможные значения:
  • 1: Физическое лицо
  • 3: Самозанятый
  • 4: Индивидуальный предприниматель
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": "michael.adams@gmail.com",
  "name": "Michael Adams",
  "taxationStatusId": 0,
  "taxationBlockedTill": "",
  "categoryTitle": "Developer",
  "categoryTitleEn": "Developer",
  "details": {
    "firstName": "Michael",
    "lastName": "Adams",
    "note": "Опытный в создании масштабируемых веб-приложений с использованием современных технологий, таких как React, Node.js и 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": "alex.smith@gmail.com",
  "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": "sophia.johnson@example.com",
  "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": "john.doe@example.com",
        "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 налогового статуса. Возможные значения:
  • 1 - физическое лицо
  • 3 - самозанятый
  • 4 - индивидуальный предприниматель

Ответ

Имя свойства Тип Описание
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 статус код: 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 предложения

Ответ

Успешный запрос возвращает пустой ответ.

Заметки

Подписание исправительного документа

Пример запроса

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 Да Тип способа выплаты. Возможные значения:
  • 1: Банковская карта
  • 2: WebMoney
  • 6: Банковский счет
.
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 Статус выплаты. Возможные значения:
  • 1: В процессе
  • 2: Завершено
  • 3: Отклонено
  • 5: Частично завершено
  • 10: Создано
.

Получение списка транзакций

Пример запроса

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 Тип транзакции. Возможные значения:
  • 1: Пополнение
  • 2: Снятие
  • 3: Возврат
.
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 Тип электронного кошелька. Возможные значения:
  • 3: WebMoney
.
wallets.type string Тип способа оплаты. Возможные значения:
  • 1: Банковская карта
  • 2: Электронный кошелек
  • 6: Банковский счет
.
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 Статус. Возможные значения:
  • 1: Инициировано привязывание карты
  • 3: Карта заблокирована
  • 4: Карта добавлена и проверена
  • 7: Карта удалена
.
cards.cardType string Тип банковской карты. Возможные значения:
  • 1: Visa
  • 2: Mastercard
  • 3: Maestro
  • 8: Мир
  • 0: Неопределен
.
cards.type string Тип способа оплаты. Возможные значения:
  • 1: Банковская карта
  • 2: Электронный кошелек
  • 6: Банковский счет
.
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 Статус. Возможные значения:
  • 3: Счет добавлен, но не проверен
  • 1: Счет проверен
  • 2: Счет удален
.
iban.bankAccountType string Тип счета. Возможные значения:
  • 1: SEPA
  • 2: SWIFT
  • 6: BIC
.
iban.type string Тип способа оплаты. Возможные значения:
  • 1: Банковская карта
  • 2: Электронный кошелек
  • 6: Банковский счет
.
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"
}

Этот запрос используется для добавления нового способа оплаты для фрилансера. Он возвращает ссылку на страницу добавления способа оплаты. Перед вызовом запроса также необходимо запросить код, который будет отправлен на номер телефона фрилансера. Добавление нового способа оплаты происходит следующим образом:

  1. Запросить код, который будет отправлен на телефон фрилансера.
  2. Вызвать запрос на добавление способа оплаты, передав в качестве входного параметра код, полученный на предыдущем этапе. Затем запрос возвращает ссылку на страницу, где фрилансер может ввести данные способа оплаты.
    После этого фрилансер вводит данные нового способа оплаты.

Запрос

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"
}

Этот запрос используется для добавления нового банковского счета фрилансера. Он возвращает ссылку на страницу добавления способа оплаты. Перед вызовом запроса также необходимо запросить код, который будет отправлен на номер телефона фрилансера. Добавление нового банковского счета происходит следующим образом:

  1. Запросить код, который будет отправлен на телефон фрилансера.
  2. Вызвать запрос на добавление способа оплаты, передав полученный на предыдущем этапе код в качестве входного параметра. Затем запрос возвращает ссылку на страницу, где фрилансер может ввести данные способа оплаты.
    После этого фрилансер вводит данные нового способа оплаты.

Запрос

HTTP Запрос
Тело запроса
Имя Тип Обязательно Описание
code integer Да Код, отправленный на номер телефона фрилансера
freelancerId integer Требуется либо freelancerId, либо freelancerUuid ID фрилансера
freelancerUuid string Требуется либо freelancerId, либо freelancerUuid UUID фрилансера (например, 8e947213-c114-41ec-a9ae-0242ac130002)
bankAccountType integer Да Тип банковского счета. Возможные значения:
  • 1: Счет в стране еврозоны (SEPA)
  • 2: Счет SWIFT
  • 6: Российский банковский счет (БИК)
.
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"
}

Этот запрос используется для добавления нового электронного кошелька фрилансеру. Он возвращает ссылку на страницу добавления способа оплаты. Перед вызовом запроса также необходимо запросить код, который будет отправлен на номер телефона фрилансера. Добавление нового электронного кошелька происходит следующим образом:

  1. Запросить код, который будет отправлен на телефон фрилансера.
  2. Вызвать запрос на добавление способа оплаты, передав полученный на предыдущем этапе код в качестве входного параметра. Затем запрос возвращает ссылку на страницу, где фрилансер может ввести данные способа оплаты.
    После этого фрилансер заполняет данные нового способа оплаты.

Запрос

HTTP Запрос
Тело запроса
Имя Тип Обязательно Описание
code integer Да Код, отправленный на номер телефона фрилансера
freelancerId integer Требуется либо freelancerId, либо freelancerUuid ID фрилансера
freelancerUuid string Требуется либо freelancerId, либо freelancerUuid UUID фрилансера (например, 8e947213-c114-41ec-a9ae-0242ac130002)
walletType integer Да Тип электронного кошелька. Возможные значения:
  • 3: WebMoney
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 запрос
Параметры пути

Как параметр пути, вы должны передать идентификатор банковского счета.

Параметры запроса
Имя Тип Обязательно Описание
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 поддерживает два способа указания контекста компании, используемого для запроса:

  1. Установка активной компании (PATCH /customer/companies)

Используйте метод PATCH /customer/companies для установки компании по умолчанию.
Все последующие запросы выполняются в контексте этой компании, если вы не переопределите его с помощью x-company-id.
Этот подход подходит для работы с компаниями по одной (последовательно или изолированно).

  1. Передача 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)

Ответ

Имя свойства Тип Описание
Пустое тело ответа при успешном выполнении

Правила проверки

Ответы об ошибках

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 Нет Тип документа. Возможные значения:
  • 6: Счет-фактура
  • 7: Сертификат
filter[dateFrom] date Нет Дата начала действия документа (начало интервала)
filter[dateTo] date Нет Дата окончания действия документа (конец интервала)
sort string Нет Параметр для сортировки результатов. Возможные значения:
  • createdAt: Дата создания документа
  • id: ID документа
  • fileId: ID файла
.
direction string Нет Порядок сортировки. Возможные значения:
  • asc: Обычный (по возрастанию)
  • desc: Обратный (по убыванию)
.

Ответ

Имя свойства Тип Описание
fileId integer ID файла
type integer Тип документа. Возможные значения:
  • 6: Счет-фактура
  • 7: Сертификат
.
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 Нет Тип документа. Возможные значения:
  • 6: Счет-фактура
  • 7: Сертификат
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": "john.doe@example.com",
  "username": "john.doe@example.com",
  "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 Идентификатор пользователя
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 Да Название языка. Возможные варианты:
  • EN: Английский
  • RU: Русский
.

Ответ

Успешный запрос должен возвращать пустой ответ.

Справочник

Этот раздел содержит запросы для получения различных значений разных параметров (например, валют, типов сроков и налоговых статусов).

Список валют

Пример запроса

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 статус 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 поможет вам определить тип события).

Доступные события:

Пример сообщения, отправляемого на указанный URL:

{  
  "timestamp": 1674539549,
  "name": "cardAdded",
  "payload": {
    "ownerId": 6,
    "id": 11
  }
}

Параметры:

Событие Описание Полезная нагрузка
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 Фрилансер зарегистрирован (вебхук срабатывает после того, как фрилансер завершает начальный этап регистрации аккаунта — это происходит, когда пользователь устанавливает пароль и подтверждает свою электронную почту по ссылке регистрации) uuid - UUID фрилансера
freelancerVerified Фрилансер успешно верифицирован uuid - UUID фрилансера
taxationStatusChanged Изменен налоговый статус фрилансера uuid - UUID фрилансера, taxationStatusId - ID нового налогового статуса

Каждый запрос содержит специальный заголовок X-Sign с подписью. Подпись представляет собой sha256(body . secret), где:

Если у вас несколько компаний, настройка вебхука для каждой требует перехода в компанию и вызова запроса на создание вебхука.

Если клиент не отвечает (или отвечает с HTTP-кодом, отличным от 200), Mellow будет продолжать пытаться отправить уведомление в течение следующих 24 часов.

Получение вебхука

Пример запроса

curl --location 
  --request GET 'https://my.mellow.io/api/customer/web-hook' \

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

HTTP status 200 OK

{
  "url": "https://webhook.site/588190fc-47d6-47f2-bded-17216bfe6e92",
  "status": "enabled",
  "secret": "bb940556f36a5ae58063f151e51f5318",
  "lastTriggered": null,
  "lastError": null
}

Этот метод используется для получения деталей вебхука.

Запрос

HTTP запрос

Параметры

Дополнительные параметры запроса отсутствуют.

Ответ

Имя Тип Описание
url string Целевой URL для уведомлений
status string Статус. Доступные варианты:
  • enabled: Включено
  • disabled: Отключено
.
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 Да Статус. Доступные варианты:
  • enabled: Включено
  • disabled: Отключено
.
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

Чтобы использовать коллекцию запросов Postman:

Шаг 1
Откройте коллекцию запросов Postman.

Шаг 2
Нажмите Создать копию коллекции, чтобы скопировать коллекцию запросов в ваше рабочее пространство Postman.

В открывшемся окне укажите название копии коллекции и рабочее пространство, где эта копия будет создана. Отметьте "Следить за оригинальной коллекцией", если хотите получать уведомления о изменениях в оригинальной коллекции запросов.

Введите название и выберите рабочее пространство.
Введите название и выберите рабочее пространство.

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

Данные авторизации
Данные авторизации

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

Скопировать токен

Мягкий MCP

Что такое MCP и зачем оно вам нужно

MCP (Model Context Protocol) — это способ подключения клиента ИИ (Claude, Cursor, ChatGPT и других) к Mellow. После подключения вы отдаете команды обычным текстом, а клиент ИИ выполняет их в Mellow за вас.

Обычно, чтобы создать задачу, вы открываете свой аккаунт, форму, заполняете поля и нажимаете "опубликовать". С MCP это выглядит так: Создать задачу "Разработка лендинга" для фрилансера ivan@example.com, 500 евро, срок до 1 июня 2026 года

Клиент ИИ находит фрилансера, заполняет параметры, создает задачу и показывает вам результат.

Почему это удобно:

Под капотом это тот же Mellow, который вы используете в своем аккаунте и через API: те же данные и те же разрешения, только команды вы отдаете обычным языком.

К чему у вас будет доступ

Набор команд зависит от роли вашего аккаунта - Mellow автоматически предоставляет подходящую.

Структура ролей MCP

Если вы клиент (компания):

Если вы фрилансер:

Как подключиться

Поддерживаемые клиенты

Инструкции по подключению предоставлены для:

Любой другой клиент MCP также подойдет, если он поддерживает вход через OAuth и подключение к удаленному серверу.

Что вам понадобится

Адрес сервера

Одинаков для всех клиентов:

https://mcp.mellow.io/mcp

Вход в систему

При первом подключении клиент открывает браузер со страницей входа Mellow. Войдите в систему с помощью вашей учетной записи и подтвердите доступ - так же, как при обычном входе на сайт. После этого клиент работает самостоятельно; он никогда не видит и не хранит ваш пароль.

Клод (веб, http://claude.ai )

Откройте Настройки → Коннекторы. Введите Mellow в строку поиска, выберите его из списка, подключитесь и войдите в свой аккаунт.

Рабочий стол Клода

Если в вашей версии есть каталог подключений:

  1. откройте Настройки → Подключения

Открыть настройки подключений

  1. введите Mellow в поиск и подключитесь из списка.

Поиск и подключение Mellow

  1. Войдите в свой аккаунт

Вход в Mellow

Если такой опции нет, подключитесь через mcp-remote - для этого вам нужно отредактировать конфигурацию Рабочего стола Клода.

Откройте меню Клод → Настройки → Разработчик → Редактировать конфиг - это откроет файл 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"]
    }
  }
}

existing_settings — это только место для содержимого, уже имеющегося в вашем файле. Не копируйте его буквально или не заменяйте свои текущие настройки.

Первый блок здесь — это то, что уже было в файле; не меняйте его (этот пример схематичен, не копируйте его дословно). Если приложение сообщает об ошибке в файле после редактирования, это обычно лишняя или отсутствующая запятая между блоками.

Если вы хотите найти файл вручную, он здесь:

После сохранения перезапустите приложение.

Код Клода

Запустите в терминале:

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: Добавить сервер, выберите Команда (stdio) и введите:

npx mcp-remote https://mcp.mellow.io/mcp

В качестве альтернативы, вы можете добавить Mellow в конфигурацию вручную. Скопируйте конфигурацию, показанную справа, и добавьте её в ваш файл конфигурации.

{
  "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 настраиваются одинаково:

Как проверить, что подключение прошло успешно

После входа в систему:

Сделайте первый запрос - он только читает данные и ничего не изменяет: Показать мой профиль

Или, в зависимости от вашей роли:

Если клиент AI отвечает данными вашего Mellow - все работает.

Что вы можете делать: примеры команд

Вы пишете команды обычным текстом - это всего лишь примеры формулировок. Примеры ниже следуют за самой работой: привлечь подрядчика, договориться о работе и оплатить её - плюс найм на большой масштаб с помощью Scout и, для фрилансеров, выставление счетов вашим клиентам.

Для компаний, работающих в CoR - найдите подрядчика и оплатите задание

Основной цикл: найдите человека, организуйте задание и оплатите после выполнения работы.

Привлечь подрядчика

Договоритесь о работе - задача является вашим соглашением с подрядчиком (объем, сроки, цена)

Оплата за работу

Деньги и документы

Организация и поиск информации

Наймите масштабно с Scout

Найдите и оцените кандидатов, прежде чем принимать кого-либо на работу:

Как только вы выберете кого-то, привлеките его как контрактника и создайте задачу (см. "найти контрактника, договориться и заплатить" выше). Управление Scout и контрактниками осуществляется отдельно, поэтому автоматической передачи нет.

Для фрилансеров - выставляйте счета своим клиентам (F2B)

Выставляйте счета внешним компаниям через Mellow, который выступает в качестве юридического посредника:

Как это работает на практике

Вы пишете команду, и клиент ИИ разбивает её на отдельные действия и выполняет их по порядку. Каждое действие — это вызов метода Mellow API.

Пример 1. Создание и публикация задачи

Создайте задачу "Дизайн логотипа" для anna@example.com за 200 евро с дедлайном 20 апреля и опубликуйте её

Что делает клиент AI, шаг за шагом:

  1. Ищет фрилансера по электронной почте. Если его нет в вашей команде - приглашает.
  2. Если в задаче не хватает данных - категории услуги или необходимых атрибутов - спрашивает у вас. Клиент AI не заполняет их случайным образом.
  3. Создаёт задачу.
  4. Проверяет, что задача создана и в каком она статусе.
  5. Проверяет баланс компании перед публикацией.
  6. Публикует задачу - теперь фрилансер может её видеть.

Пример 2. Принять и оплатить задание

Принять и оплатить задание 6657614

Что делает клиент AI, шаг за шагом:

  1. Читает текущий статус задания - вы можете принять работу, которую фрилансер уже отправил (статус "ожидает принятия").
  2. Принимает работу.
  3. Проверяет баланс компании.
  4. Инициирует выплату - оплачивается только принятая работа.
  5. Ждет, пока задание перейдет в статус "оплачено".

Пример 3. Поиск кандидата с помощью Scout

Создайте запрос на контрактника для старшего фронтенд разработчика, удаленно и на постоянной основе, и покажите мне подходящих кандидатов

Что делает клиент AI, шаг за шагом:

  1. Создает и публикует запрос на контрактника согласно вашему заданию, запрашивая недостающую информацию.
  2. Mellow подбирает кандидатов из своей базы в соответствии с запросом - клиент AI ожидает, пока это происходит в фоновом режиме.
  3. Показывает лучших кандидатов с их экспертизой, страной и оценкой совпадения.
  4. По вашему подтверждению приглашает выбранного кандидата.
  5. Для заключения договора принимает их на работу как контрактника и создает задачу - управление Scout и контрактниками осуществляется отдельно, автоматической передачи нет.

Пример 4. Выставление счета клиенту (для фрилансеров)

Выставить счет компании ACME за 3 дня работы дизайнера, 1500 EUR

Что делает клиент на AI, шаг за шагом:

  1. Находит клиента - или добавляет его, если он новый, подтверждая валюту (она фиксируется сразу).
  2. Создает черновик счета. Ничего еще не отправлено.
  3. Показывает вам разбивку: промежуточный итог, комиссия и кто ее платит, итоговая сумма и сколько вы получите.
  4. После вашего "да" отправляет счет - клиент получает электронное письмо со ссылкой на оплату.
  5. Отслеживает статус до момента оплаты.

Перед тем как произвести оплату, отмену и другие действия, связанные с деньгами или договоренностями, клиент на AI сначала показывает, что он собирается сделать, и ждет вашего подтверждения.

Пример диалога

Вы: Создайте задачу по дизайну лендинга для anna@example.com, 300 евро.

ИИ Клиент: Я нашел Анну в вашей команде. Отсутствуют два обязательных поля: категория услуги и срок выполнения. Какой срок выполнения установить и к какой категории относится эта задача?

Вы: Срок выполнения 30 апреля, категория веб-дизайн.

ИИ Клиент: Я подготовлю задачу «Дизайн лендинга» для Анны: 300 евро, срок выполнения 30 апреля, категория Веб-дизайн. Создать и опубликовать?

Вы: Да.

ИИ Клиент: Создано и опубликовано. Анна уже может видеть задачу.

Когда ответ не мгновенный

Большинство команд выполняются сразу. Некоторые операции завершаются в фоновом режиме: выплата задания занимает от нескольких секунд до минут, а архивация документов и подбор кандидатов Scout не происходят мгновенно. В этих случаях клиент ИИ либо ждет результат, либо сообщает, что операция начата и результат поступит позже.

Импорт задач из файла

Если вы уже используете стандартный файл импорта Excel от Mellow для массового создания задач, передайте этот же файл клиенту AI - он прочитает файл, обработает данные и создаст задачи.

Как это работает

  1. Подготовьте файл импорта в стандартном формате Mellow (.xlsx).
  2. Попросите клиентскую программу AI обработать его:

Прочитайте файл /Users/me/Desktop/import_tasks.xlsx и создайте задачу для каждой строки

Клиентская программа AI:

Формат файла импорта

Файл использует стандартный формат Mellow со следующими столбцами:

Столбец Обязательно Описание
email да Электронная почта фрилансера (должна быть в вашей команде)
payout_sum да Сумма выплаты (без центов, без точек и запятых)
worker_currency да Валюта: EUR, USD или RUB
service_code да Числовой код услуги из каталога Mellow
attributes да Значения атрибутов, разделённые ; (не менее 3 атрибутов)
title да Название задачи (до 300 символов)
description да Описание задачи (до 10 000 символов)
merchant_txid нет Уникальный идентификатор задачи для предотвращения дублирования
completion_date нет Срок выполнения в формате YYYY-MM-DD (минимум +1 день)
group_name нет Название группы задач (должно уже существовать)
need_report нет 1 - требуется отчёт от фрилансера
copyright нет 1 - передача авторских прав
agreement нет 1 - требуется подписанное соглашение
share_commission нет 1 - разделить 1% комиссию с фрилансером

Пример файла

Стандартный файл import_tasks_example.xlsx может содержать следующие значения:

Столбец Пример значения
email 3@localhost.local
payout_sum 5000
worker_currency USD
service_code 3084
title Название задачи
description Описание задачи
completion_date 2029-01-02
group_name Группа задач 1
need_report 1
copyright 1
agreement 0
share_commission 1

Пример атрибутов

Значение attributes для этого примера:

1;11.11.2025/21.12.2026;https://mellow.io/;One World Trade Center...;Mellow test;English;txt;Mellow

Значения атрибутов разделены точкой с запятой (;). Их порядок зависит от выбранного service_code.

Если атрибут не требуется, оставьте его позицию пустой, сохраняя окружающие точки с запятой. Например:

;November;https://mellow.io/;;;English

Примеры запросов

Импорт с предпросмотром: - Прочитайте файл import_tasks.xlsx, покажите, что в нем находится, и создайте задачи

Импорт только для определенных фрилансеров: - Из import.xlsx создайте задачи только для anna@example.com и ivan@example.com

Импорт с корректировкой параметров: - Загрузите задачи из import.xlsx, но установите срок всех задач на 1 июня 2026 года

Проверка без создания: - Прочитайте import.xlsx и проверьте, все ли фрилансеры в моей команде

Вы можете скачать шаблон файла в своем аккаунте Mellow, в разделе импорта задач.

Доступ и подтверждения

Клиент AI работает строго в рамках разрешений вашего аккаунта Mellow: он видит и может делать именно то, что доступно вам в вашем аккаунте. Если вашей роли не хватает разрешения, действие не будет выполнено - так же, как в интерфейсе.

По умолчанию клиент AI ничего не делает без уведомления: перед каждым действием в Mellow клиент точно показывает, что он собирается делать, и ждет вашего решения. Запрос показывает название команды, её параметры и краткое описание - например, перед приглашением фрилансера:

http://claude.ai Mellow - Пригласить фрилансера (email: "test@test.com", firstName: "test")

И три варианта ответа:

Второй вариант удобен для безопасных операций, которые вы часто повторяете - например, просмотр списка задач. Для действий, связанных с деньгами или договорённостями (оплата, отмена, выставление счета), лучше сохранить подтверждение и не выбирать "больше не спрашивать".

Где это настроить

Также существует режим, который полностью отключает подтверждения (bypass). Включайте его только если вы доверяете всем операциям и работаете в изолированной среде; для действий с реальными деньгами это не рекомендуется.

Как переключить аккаунты

Claude Code (консоль). Запустите /mcp, выберите Mellow, затем Очистить аутентификацию - это сбросит текущий вход в систему. После этого выберите Переподключиться и войдите с нужным аккаунтом.

Claude (приложение). Откройте Настройки → Коннекторы, отключите Mellow и подключите его снова.

При повторном входе в систему помните: если вы все еще залогинены в Mellow в вашем браузере под старым аккаунтом, вход может произойти автоматически. Выйдите из Mellow в вашем браузере (на my.mellow.io) или откройте страницу входа в инкогнито окне.

Возможные проблемы с подключением

Если это не помогает - обновите Node.js. - npx или mcp-remote не запускаются. Проверьте, установлен ли Node.js и доступна ли команда npx в терминале. - Команды отсутствуют или устарели. Отключитесь и снова подключитесь к Mellow - клиент обновит список доступных команд. - Некоторые команды недоступны или действие не проходит. Возможно, вашей роли в Mellow не хватает необходимых разрешений. Проверьте вашу роль с администратором вашей компании. - Ничего не помогает. Пишите в службу поддержки: support@mellow.io.

Что дальше

Обычно больше ничего настраивать не требуется: вместе с командами клиент получает встроенную инструкцию о том, как работать с Mellow и использует её самостоятельно.

Подсказка агента

Готовая подсказка, которую вы можете вставить в своего собственного ИИ-агента, чтобы он корректно управлял Mellow через REST API, с учетом всех правил жизненного цикла задач, двухэтапной оплаты и обработки ошибок, которые не объясняет само API.

Эта страница посвящена API для Контрактора-рекордера: управление контракторами, задачами и платежами.

Когда это вам нужно

Вы встраиваете Mellow в свой собственный агент или продукт, который напрямую вызывает REST API, и вы контролируете системный запрос агента.

Если вы используете Mellow MCP, вам не нужен этот запрос - MCP загружает те же правила автоматически. Смотрите руководство по подключению MCP.

Счета для разведчиков и фрилансеров (F2B) не имеют общедоступного REST API; управляйте ими через Mellow MCP (руководство MCP показывает как).

Как использовать

  1. Откройте вашего агента (Claude, Cursor, Codex или ваш собственный LLM с инструментами).
  2. Скопируйте приведенный ниже запрос.
  3. Вставьте его как системный запрос (или в начало разговора).
  4. Заполните блок контекста - базовый URL и, если вы управляете несколькими компаниями, идентификатор компании.
  5. Затем агент работает по правилам Mellow: он запрашивает недостающее, следует правильному порядку операций и подтверждает действия с деньгами и контрактами.

Что это обеспечивает

Задание

# Вы управляете Mellow (Контрактор от имени пользователя) через REST API

Вы управляете подрядчиками и их задачами для учетной записи компании (клиента), вызывая
REST API Mellow. Следуйте этим правилам - они кодируют поведение, которое не очевидно
только из справочника по эндпоинтам.

## Настройка
<context>
Базовый URL: https://my.mellow.io/api   (тестовая среда: https://demo.mellow.io/api)
Компания:  [идентификатор компании, если вы управляете несколькими - отправляется в заголовке x-company-id]
</context>
- Каждый запрос отправляет заголовок: Accept: application/json
- Аутентификация: POST /login {username, password, code?} -> {token, refreshToken}.
  Отправляйте "Authorization: Bearer <token>" при каждом вызове. Токен действителен ~65 дней;
  обновите с помощью POST /token/refresh {refreshToken}. Если /login возвращает объект "2FA"
  вместо токена, запросите у пользователя код 2FA и вызовите /login снова с "code".
- Несколько компаний: отправляйте заголовок "x-company-id: <id>" для каждого запроса. Запросы между компаниями
  не поддерживаются - для агрегации перебирайте компании пользователя.

## Золотые правила
1. Никогда не изобретайте значения. Обязательные поля задачи (categoryId, >=3 атрибута, название,
   описание, workerId, срок, цена) должны поступать от пользователя. Изобретенные данные
   попадают в контракты и счета-фактуры.
2. Подтверждайте перед действиями с деньгами или контрактами - принять, заплатить, быстрая оплата, отказать,
   удалить фрилансера. Повторно укажите идентификатор задачи и действие, получите явное "да".
3. Читайте текущее состояние перед действием. Каждый переход законен только из
   перечисленных ниже состояний.
4. Читайте свои записи: после создания задачи получите ее по uuid. Точка входа LIST задач
   индексируется для поиска и может задерживаться на несколько секунд.
5. Ошибки: 401 = неверная аутентификация; 403 = запрещено / нет разрешения; 422 = ошибка валидации, тело
   содержит {field: error}; 409 = ошибка выполнения, тело содержит описание. Читайте
   тело; никогда не анализируйте сообщения, предназначенные для человека, для логики.

## Состояния задач (поле `state` / ID)
17 Черновик · 1 Новая · 2 В процессе · 3 Ожидает проверки · 4 Ожидает оплаты ·
5 Завершена · 6 Отклонена фрилансером · 8 Отклонена заказчиком ·
11 Ожидает подтверждения отмены фрилансером · 12 В очереди на оплату ·
13 Спор · 14 Требуется проверка заказчика (срок) · 16 Пересмотр изменений.

## Фрилансеры
- Пригласить: POST /customer/freelancers {email, firstName?, lastName?, note?,
  specialization?, inEnglish?, sendEmail?} -> {uuid, freelancerId}. email обязателен.
  Повторное приглашение уже активного участника возвращает ошибку.
- Найти по email / список: GET /customer/freelancers (используйте это для определения workerId и для
  проверки, существует ли уже фрилансер).
- Редактировать профиль (только до активации аккаунта фрилансером):
  PATCH /customer/freelancers/profile.
- Удалить: заблокировано, пока у фрилансера есть задачи, не находящиеся на завершающей стадии.

## Задачи - создание и публикация
- Создать: POST /customer/tasks
  {categoryId, attributes:[{id,value}] (>=3), title, description, workerId,
   deadline (например, "2026-06-01T15:00:00.000Z"), price, workerCurrency?, externalId?,
   copyright?, needReport?, shareCommission?, editGroup?:[groupId], uuid?, validateOnly?}
  -> возвращает uuid задачи.
  - categoryId - это идентификатор услуги из справочника услуг; атрибуты -
    пары id/значение из справочника атрибутов (>=3 требуется).
  - Если баланс компании не покрывает стоимость, задача создается как Черновик (17)
    БЕЗ ошибки. Всегда получайте задачу после этого и сообщайте ее реальное состояние
    (Новая = опубликована и видна фрилансеру; Черновик = не видна).
  - validateOnly:true проверяет правила и возвращает рассчитанную стоимость БЕЗ создания.
- Опубликовать черновик: POST /customer/tasks/publish-draft {taskId|uuid, companyId}.
  Требуется баланс >= стоимости, иначе ошибка. Черновик (17) -> Новая (1).
- Мультивалютность: GET /customer/tasks/allowed-currencies?companyId= для разрешенных
  валют; POST /customer/tasks/total-cost для предварительного просмотра цены, комиссии, НДС и
  курса обмена. Курс фиксируется при создании задачи.

## Задачи - чтение
- Список: GET /customer/tasks с filter[workerId], filter[state][] (например,
  state[]=2&state[]=3), filter[priceFrom]/[priceTo], filter[search], filter[externalId],
  filter[companyId], sort, direction, page, size (максимум 500).
- Одна задача: GET /customer/tasks/{taskId|uuid}.

## Задачи - движение по жизненному циклу
- Принять работу: POST /customer/tasks/accept {taskId|uuid}. Только из Ожидает проверки (3)
  -> Ожидает оплаты (4).
- Оплатить: POST /customer/tasks/pay {taskId|uuid}. Только из Ожидает оплаты (4) ->
  В очереди на оплату (12); система затем завершает ее до (5). ПРИНЯТИЕ И ОПЛАТА - 
  ДВА ОТДЕЛЬНЫХ ШАГА - принятие не означает оплату. Не говорите "оплачено", пока состояние не станет 5.
- Предварительная проверка баланса перед принятием/оплатой: прочитайте баланс компании и рассчитайте
  доступно = balanceAmount - holdAmount - toPayAmount. Если недостаточно, скажите пользователю
  пополнить (веб-кабинет) и остановитесь.
- Быстрая оплата (создать-затем-оплатить): POST /customer/tasks/quick-pay {taskId|uuid, companyId?}.
  Оплачивает новую задачу напрямую; работает только, когда нет документов (предложение/NDA) для подписания.
- Отклонить / отменить: POST /customer/tasks/decline {taskId}.
  Из Новая(1)/В процессе(2)/(11) -> Отклонена заказчиком (8).
  Из Ожидает оплаты(4)/Ожидает проверки(3) -> Ожидает подтверждения фрилансера (11).
  Из 16/13/5/6 -> ошибка. Отмена мягкая; жесткого удаления нет.
- Возобновить (вернуть на доработку): POST /customer/tasks/return-to-work {taskId}. Только
  Ожидает проверки (3) -> В процессе (2).
- Продлить срок: POST /customer/tasks/prolong-deadline {taskId|uuid, deadline}.
  Только когда задача находится в состоянии Требуется проверка заказчика (14). Укорачивание не поддерживается.
- Симуляция собственных шагов фрилансера (начать=2 / завершить=3) через
  PUT /customer/tasks/{taskId|uuid} {state} требует дополнительных прав доступа от поддержки Mellow;
  обычно фрилансер делает это в своем собственном интерфейсе.

## Перед ожиданием принятия - проверьте блокировки
GET /customer/freelancers/check-task-requirements?taskUuid=&freelancerUuid=
Пустой ответ = фрилансер может принять. В противном случае он перечисляет элементы (проверка,
соглашение, профиль, налоги и т. д.). Большинство решаются фрилансером в его собственном интерфейсе;
ссылку на проверку можно отправить через GET /customer/freelancers/verification-link.

## Прочее
- Сообщения: GET /tasks/{taskId}/messages · POST /tasks/messages {taskId, message}.
- Файлы: POST /customer/tasks/files {taskId|uuid, file, type}.
- Группы: GET/POST/PUT/DELETE /customer/task-groups.
- Финансы: баланс компании, GET транзакции (с фильтрами по дате), список документов +
  загрузка (загрузка асинхронна).
- Справочник (поиск идентификаторов перед созданием задач): услуги (categoryId), атрибуты задач,
  валюты, курс обмена, налоговые статусы, специализации, страны.

## Вне досягаемости через этот API - направьте пользователя на https://my.mellow.io/
Пополнения баланса, выводы и Предложения (Безопасная сделка). Изменения KYC / контактов / налогообложения
являются действиями фрилансера.

Теперь управляйте Mellow. Запрашивайте один раз любое отсутствующее обязательное поле, подтверждайте действия с деньгами/контрактами,
и после создания задачи всегда читайте ее, чтобы сообщить ее реальное состояние.

Почему это работает

Примечания к выпуску

Июнь 2026

Добавлено:

Январь 2026

Добавлено:

Октябрь 2025

Изменено:

Август 2025

Изменено:

Июнь 2025

Добавлено:

Август 2024

Добавлено:

Июнь 2024

Добавлено:

Апрель 2024

Добавлено:

Ноябрь 2023

Добавлено:

Октябрь 2023

Добавлено:

Август 2023

Добавлено:

Июль 2023

Добавлено: