Перейти к основному содержимому

Ссылки-приглашения

Общая ссылка-приглашение — управляемый адрес, который ведёт на объявление компании и помечает пришедшие по нему отклики. Одному объявлению можно завести сколько угодно ссылок: по одной на канал распространения (телеграм-канал, рассылка, объявление на доске), а затем сравнивать, какой канал привёл исполнителей.

Ссылка не расширяет доступ. Это только атрибуция: объявление, закрытое для показа, по ссылке не откроется, а исполнитель проходит те же регистрацию и идентификацию, что и обычно.

Все методы требуют доступ org.task-invite-links.read или org.task-invite-links.write и scope announcement в токене.

Сценарий использования​

  1. Создать ссылку — POST .../task-invite-links для нужного объявления. В ответе приходит token; публичный адрес собирается как https://market.selfwork.ru/ad-link/{token}.
  2. Распространить — разослать адрес по своему каналу. Каждый переход учитывается в статистике ссылки.
  3. Получить отклик — исполнитель переходит по адресу, при необходимости регистрируется и идентифицируется, затем откликается на объявление.
  4. Прочитать источник — в списке откликов (Отклики) и в списке предложений (Предложения) у такого отклика заполнено поле taskInviteLink. Оба списка дополнительно фильтруются по TASK_INVITE_LINK_ID, а агрегированные счётчики канала возвращает фильтр ссылок.

 

Создание ссылки-приглашения​

Создаёт ссылку для объявления о задаче. Объявление должно быть опубликовано. Требует доступ org.task-invite-links.write.

Запрос​

Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/task-invite-links

Path Parameters​

ПараметрТипОбязательное полеПримерОписание
organisationIdstring (uuid)Да550e8400-e29b-41d4-a716-446655440000ID организации

Request Body​

ПолеТипОбязательное полеОписание
taskAnnouncementIdnumberДаID объявления о задаче, на которое создаётся ссылка
namestringНетНазвание канала распространения, до 128 символов. Не уникально
expiresAtstringНетМомент истечения срока действия, ISO 8601. Без значения ссылка бессрочная

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

curl -X 'POST' \
"https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/task-invite-links" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-d '{
"taskAnnouncementId": 2481,
"name": "Телеграм-канал «Работа рядом»",
"expiresAt": "2026-12-31T23:59:59.000Z"
}'

Пример успешного ответа​

{
"requestId": "97c5678a-8c6a-4688-8452-68ab606fe049",
"result": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"taskAnnouncementId": 2481,
"token": "k7fd2mqrx9ab",
"name": "Телеграм-канал «Работа рядом»",
"status": "ACTIVE",
"expiresAt": "2026-12-31T23:59:59.000Z",
"createdBy": "9f1c6e2a-1c2b-4a3d-8f4e-5b6c7d8e9f01",
"createdAt": "2026-07-24T14:50:00.000Z",
"updatedAt": "2026-07-24T14:50:00.000Z"
},
"success": true
}

Описание полей ответа​

ПолеТипОписание
requestIdstring (uuid)Уникальный идентификатор запроса
successbooleanСтатус выполнения запроса
resultobjectСозданная ссылка-приглашение
idstring (uuid)Идентификатор ссылки-приглашения
taskAnnouncementIdnumberID объявления о задаче
tokenstringТокен, подставляемый в публичный адрес /ad-link/{token} на маркетплейсе
namestring, nullНазвание канала распространения
statusstringСтатус ссылки (см. справочник ниже)
expiresAtstring, nullМомент истечения срока действия, ISO 8601. null — бессрочная
createdBystringИдентификатор сотрудника, создавшего ссылку
createdAtstringДата создания
updatedAtstringДата последнего изменения

Статусы ссылки (status)​

СтатусОписание
ACTIVEСсылка работает
DISABLEDСсылка отключена вручную. Статистика сохраняется, отключение обратимо
ARCHIVEDОбъявление стало недоступно, ссылка архивирована автоматически

Срок действия и статус — независимые оси. Истёкшая ссылка остаётся в статусе ACTIVE, но не работает: чтобы вернуть её в строй, нужно сдвинуть или снять expiresAt.

Возможные ошибки​

CodeОписание
VALIDATION_ERRORОшибка валидации параметров или тела запроса
FORBIDDEN_ERRORВ токене нет необходимого scope или доступа
TASK_ANNOUNCEMENT_NOT_PUBLISHEDОбъявление не опубликовано или закрыто
TASK_INVITE_LINK_TOKEN_GENERATION_FAILEDНе удалось сгенерировать уникальный токен ссылки
UNKNOWN_ERRORОшибка сервера

 

Фильтрация ссылок-приглашений​

Возвращает список ссылок организации со статистикой канала. Требует доступ org.task-invite-links.read.

Запрос​

Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/task-invite-links/filter

Path Parameters​

ПараметрТипОбязательное полеОписание
organisationIdstring (uuid)ДаID организации

Request Body​

Общая структура запроса описана в разделе Фильтрация: общая структура.

Доступные фильтры (filters)​

Имя (name)Тип значения (value)Пример значенияОписание
TASK_ANNOUNCEMENT_IDarray[number][2481, 2482]Ссылки указанных объявлений
STATUSarray[string]["ACTIVE", "DISABLED"]Статусы ссылки
NAMEarray[string]["Телеграм-канал «Работа рядом»"]Точное совпадение названия канала
CREATED_BYarray[string]["9f1c6e2a-1c2b-4a3d-8f4e-5b6c7d8e9f01"]Ссылки, созданные конкретным сотрудником

Доступные сортировки​

Поле (field)Описание
CREATED_ATДата создания ссылки
NAMEНазвание канала
TOTAL_VISITS_COUNTОбщее количество переходов

Поля, обрабатываемые по query​

Текстовый поиск (query) выполняет поиск частичного совпадения по названию канала и токену ссылки.

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

curl -X 'POST' \
"https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/task-invite-links/filter" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-d '{
"filters": [
{ "name": "TASK_ANNOUNCEMENT_ID", "value": [2481] },
{ "name": "STATUS", "value": ["ACTIVE"] }
],
"order": [{ "field": "TOTAL_VISITS_COUNT", "sort": "DESC" }],
"pagination": { "limit": 10, "lastId": null }
}'

Пример успешного ответа​

{
"requestId": "25f4f954-a53d-44f5-8154-f6b5ff4ef7a8",
"result": {
"lastId": "550e8400-e29b-41d4-a716-446655440000",
"items": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"taskAnnouncementId": 2481,
"token": "k7fd2mqrx9ab",
"name": "Телеграм-канал «Работа рядом»",
"status": "ACTIVE",
"expiresAt": null,
"createdBy": "9f1c6e2a-1c2b-4a3d-8f4e-5b6c7d8e9f01",
"createdAt": "2026-07-24T14:50:00.000Z",
"updatedAt": "2026-07-24T14:50:00.000Z",
"totalVisitsCount": 128,
"uniqueVisitsCount": 47,
"offersCount": 12
}
]
},
"success": true
}

Описание полей ответа​

ПолеТипОписание
requestIdstring (uuid)Уникальный идентификатор запроса
successbooleanСтатус выполнения запроса
resultobjectКонтейнер с результатом фильтрации
result.lastIdstring, nullID последнего элемента для получения следующей страницы
result.itemsarrayМассив ссылок-приглашений
totalVisitsCountnumberВсе переходы по работающей ссылке, включая повторные и анонимные
uniqueVisitsCountnumberКоличество уникальных авторизованных посетителей
offersCountnumberКоличество откликов, пришедших по ссылке

Остальные поля элементов result.items совпадают с полями ссылки, описанными в разделе «Создание ссылки-приглашения».

Переход по неработающей ссылке (отключена, истекла, архивирована) не пополняет ни один счётчик.

Статистика возвращается только этим методом и методом получения ссылки: каждое поле стоит отдельного запроса, поэтому создание, обновление, включение и отключение её не отдают.

Возможные ошибки​

CodeОписание
VALIDATION_ERRORОшибка валидации параметров или тела запроса
FORBIDDEN_ERRORВ токене нет необходимого scope или доступа
UNKNOWN_ERRORОшибка сервера

 

Получение ссылки-приглашения​

Возвращает ссылку со статистикой канала по её идентификатору. Требует доступ org.task-invite-links.read.

Запрос​

Метод: GET URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/task-invite-links/{linkId}

Path Parameters​

ПараметрТипОбязательное полеОписание
organisationIdstring (uuid)ДаID организации
linkIdstring (uuid)ДаID ссылки-приглашения

Request Body​

Тело запроса не требуется (Empty Body).

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

curl -X 'GET' \
"https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/task-invite-links/550e8400-e29b-41d4-a716-446655440000" \
-H "accept: application/json" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ"

Пример успешного ответа​

{
"requestId": "25f4f954-a53d-44f5-8154-f6b5ff4ef7a8",
"result": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"taskAnnouncementId": 2481,
"token": "k7fd2mqrx9ab",
"name": "Телеграм-канал «Работа рядом»",
"status": "ACTIVE",
"expiresAt": null,
"createdBy": "9f1c6e2a-1c2b-4a3d-8f4e-5b6c7d8e9f01",
"createdAt": "2026-07-24T14:50:00.000Z",
"updatedAt": "2026-07-24T14:50:00.000Z",
"totalVisitsCount": 128,
"uniqueVisitsCount": 47,
"offersCount": 12
},
"success": true
}

Описание полей ответа​

ПолеТипОписание
requestIdstring (uuid)Уникальный идентификатор запроса
successbooleanСтатус выполнения запроса
resultobjectСсылка-приглашение со статистикой
idstring (uuid)Идентификатор ссылки-приглашения
taskAnnouncementIdnumberID объявления о задаче
tokenstringТокен для формирования публичного адреса
namestring, nullНазвание канала распространения
statusstringСтатус ссылки
expiresAtstring, nullМомент истечения срока действия
createdBystringИдентификатор сотрудника, создавшего ссылку
createdAtstringДата создания
updatedAtstringДата последнего изменения
totalVisitsCountnumberОбщее количество переходов по ссылке
uniqueVisitsCountnumberКоличество уникальных авторизованных посетителей
offersCountnumberКоличество откликов, пришедших по ссылке

Возможные ошибки​

CodeОписание
VALIDATION_ERRORОшибка валидации параметров запроса
FORBIDDEN_ERRORВ токене нет необходимого scope или доступа
TASK_INVITE_LINK_NOT_FOUNDСсылка не существует, удалена или принадлежит другой организации
UNKNOWN_ERRORОшибка сервера

 

Обновление ссылки-приглашения​

Меняет название канала и срок действия. Требует доступ org.task-invite-links.write.

Запрос​

Метод: PUT URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/task-invite-links/{linkId}

Path Parameters​

ПараметрТипОбязательное полеОписание
organisationIdstring (uuid)ДаID организации
linkIdstring (uuid)ДаID ссылки-приглашения

Request Body​

ПолеТипОбязательное полеОписание
namestringНетНазвание канала распространения, до 128 символов
expiresAtstring, nullНетМомент истечения срока действия, ISO 8601. null снимает ограничение

Хотя бы одно поле должно быть передано.

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

curl -X 'PUT' \
"https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/task-invite-links/550e8400-e29b-41d4-a716-446655440000" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-d '{
"name": "Авито",
"expiresAt": null
}'

Пример успешного ответа​

{
"requestId": "97c5678a-8c6a-4688-8452-68ab606fe049",
"result": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"taskAnnouncementId": 2481,
"token": "k7fd2mqrx9ab",
"name": "Авито",
"status": "ACTIVE",
"expiresAt": null,
"createdBy": "9f1c6e2a-1c2b-4a3d-8f4e-5b6c7d8e9f01",
"createdAt": "2026-07-24T14:50:00.000Z",
"updatedAt": "2026-07-25T09:12:00.000Z"
},
"success": true
}

Описание полей ответа​

ПолеТипОписание
requestIdstring (uuid)Уникальный идентификатор запроса
successbooleanСтатус выполнения запроса
resultobjectОбновлённая ссылка-приглашение
idstring (uuid)Идентификатор ссылки-приглашения
taskAnnouncementIdnumberID объявления о задаче
tokenstringТокен для формирования публичного адреса
namestring, nullНазвание канала распространения
statusstringСтатус ссылки
expiresAtstring, nullМомент истечения срока действия
createdBystringИдентификатор сотрудника, создавшего ссылку
createdAtstringДата создания
updatedAtstringДата последнего изменения

Ответ не содержит полей статистики.

Возможные ошибки​

CodeОписание
VALIDATION_ERRORОшибка валидации параметров или тела запроса
FORBIDDEN_ERRORВ токене нет необходимого scope или доступа
TASK_INVITE_LINK_EMPTY_UPDATEВ запросе не передано ни одного изменяемого поля
TASK_INVITE_LINK_NOT_FOUNDСсылка не существует, удалена или принадлежит другой организации
UNKNOWN_ERRORОшибка сервера

 

Включение ссылки-приглашения​

Возвращает ранее отключённую ссылку в работу. Требует доступ org.task-invite-links.write.

Запрос​

Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/task-invite-links/{linkId}/enable

Path Parameters​

ПараметрТипОбязательное полеОписание
organisationIdstring (uuid)ДаID организации
linkIdstring (uuid)ДаID ссылки-приглашения

Request Body​

Тело запроса не требуется (Empty Body).

Метод идемпотентен: повторный вызов для уже активной ссылки возвращает тот же результат и ничего не меняет.

Включение ссылки не отменяет истечение срока: если expiresAt в прошлом, ссылка останется неработающей до тех пор, пока срок не сдвинут или не снят. Ссылку в статусе ARCHIVED включить можно, но при следующем переходе она вернётся в ARCHIVED, если объявление действительно закрыто.

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

curl -X 'POST' \
"https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/task-invite-links/550e8400-e29b-41d4-a716-446655440000/enable" \
-H "accept: application/json" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ"

Пример успешного ответа​

{
"requestId": "97c5678a-8c6a-4688-8452-68ab606fe049",
"result": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"taskAnnouncementId": 2481,
"token": "k7fd2mqrx9ab",
"name": "Телеграм-канал «Работа рядом»",
"status": "ACTIVE",
"expiresAt": null,
"createdBy": "9f1c6e2a-1c2b-4a3d-8f4e-5b6c7d8e9f01",
"createdAt": "2026-07-24T14:50:00.000Z",
"updatedAt": "2026-07-25T09:12:00.000Z"
},
"success": true
}

Описание полей ответа​

ПолеТипОписание
requestIdstring (uuid)Уникальный идентификатор запроса
successbooleanСтатус выполнения запроса
resultobjectВключённая ссылка-приглашение
idstring (uuid)Идентификатор ссылки-приглашения
taskAnnouncementIdnumberID объявления о задаче
tokenstringТокен для формирования публичного адреса
namestring, nullНазвание канала распространения
statusstringСтатус ссылки (ACTIVE)
expiresAtstring, nullМомент истечения срока действия
createdBystringИдентификатор сотрудника, создавшего ссылку
createdAtstringДата создания
updatedAtstringДата последнего изменения

Ответ не содержит полей статистики.

Возможные ошибки​

CodeОписание
VALIDATION_ERRORОшибка валидации параметров запроса
FORBIDDEN_ERRORВ токене нет необходимого scope или доступа
TASK_INVITE_LINK_NOT_FOUNDСсылка не существует, удалена или принадлежит другой организации
UNKNOWN_ERRORОшибка сервера

 

Отключение ссылки-приглашения​

Ссылка перестаёт работать, накопленная статистика сохраняется. Требует доступ org.task-invite-links.write.

Запрос​

Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/task-invite-links/{linkId}/disable

Path Parameters​

ПараметрТипОбязательное полеОписание
organisationIdstring (uuid)ДаID организации
linkIdstring (uuid)ДаID ссылки-приглашения

Request Body​

Тело запроса не требуется (Empty Body).

Метод идемпотентен: повторный вызов для уже отключённой ссылки возвращает тот же результат и ничего не меняет.

Отключать и включать ссылку в пределах срока действия можно сколько угодно раз. Исполнитель, перешедший по отключённой ссылке, увидит сообщение «Ссылка отключена».

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

curl -X 'POST' \
"https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/task-invite-links/550e8400-e29b-41d4-a716-446655440000/disable" \
-H "accept: application/json" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ"

Пример успешного ответа​

{
"requestId": "97c5678a-8c6a-4688-8452-68ab606fe049",
"result": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"taskAnnouncementId": 2481,
"token": "k7fd2mqrx9ab",
"name": "Телеграм-канал «Работа рядом»",
"status": "DISABLED",
"expiresAt": null,
"createdBy": "9f1c6e2a-1c2b-4a3d-8f4e-5b6c7d8e9f01",
"createdAt": "2026-07-24T14:50:00.000Z",
"updatedAt": "2026-07-25T09:12:00.000Z"
},
"success": true
}

Описание полей ответа​

ПолеТипОписание
requestIdstring (uuid)Уникальный идентификатор запроса
successbooleanСтатус выполнения запроса
resultobjectОтключённая ссылка-приглашение
idstring (uuid)Идентификатор ссылки-приглашения
taskAnnouncementIdnumberID объявления о задаче
tokenstringТокен для формирования публичного адреса
namestring, nullНазвание канала распространения
statusstringСтатус ссылки (DISABLED)
expiresAtstring, nullМомент истечения срока действия
createdBystringИдентификатор сотрудника, создавшего ссылку
createdAtstringДата создания
updatedAtstringДата последнего изменения

Ответ не содержит полей статистики.

Возможные ошибки​

CodeОписание
VALIDATION_ERRORОшибка валидации параметров запроса
FORBIDDEN_ERRORВ токене нет необходимого scope или доступа
TASK_INVITE_LINK_NOT_FOUNDСсылка не существует, удалена или принадлежит другой организации
UNKNOWN_ERRORОшибка сервера

 

Удаление ссылки-приглашения​

Удаляет ссылку-приглашение. Удаление мягкое: атрибуция в уже собранных откликах остаётся читаемой, а токен не освобождается. Требует доступ org.task-invite-links.write.

Запрос​

Метод: DELETE URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/task-invite-links/{linkId}

Path Parameters​

ПараметрТипОбязательное полеОписание
organisationIdstring (uuid)ДаID организации
linkIdstring (uuid)ДаID ссылки-приглашения

Request Body​

Тело запроса не требуется (Empty Body).

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

curl -X 'DELETE' \
"https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/task-invite-links/550e8400-e29b-41d4-a716-446655440000" \
-H "accept: application/json" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ"

Пример успешного ответа​

{
"requestId": "97c5678a-8c6a-4688-8452-68ab606fe049",
"result": {
"id": "550e8400-e29b-41d4-a716-446655440000"
},
"success": true
}

Описание полей ответа​

ПолеТипОписание
requestIdstring (uuid)Уникальный идентификатор запроса
successbooleanСтатус выполнения запроса
resultobjectРезультат удаления
idstring (uuid)Идентификатор удалённой ссылки-приглашения

Возможные ошибки​

CodeОписание
VALIDATION_ERRORОшибка валидации параметров запроса
FORBIDDEN_ERRORВ токене нет необходимого scope или доступа
TASK_INVITE_LINK_NOT_FOUNDСсылка не существует, удалена или принадлежит другой организации
UNKNOWN_ERRORОшибка сервера