Разработчикам

Ссылка на API для разработчиков

Для запросов нужен API-ключ. Он создаётся автоматически при регистрации.

Приступая к работе

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

Идентификация

Для аутентификации в системе API вам необходимо отправлять свой ключ API в качестве токена авторизации с каждым запросом. Вы можете увидеть пример кода ниже.

curl --location --request POST 'https://tapny.ru/api/account' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \ 

Ограничение скорости

Наш API имеет ограничитель запросов для защиты от пиков и обеспечения стабильности. Текущий лимит — 30 запросов в 1 минуту. Обратите внимание, что тариф может измениться в зависимости от подписки.

Несколько заголовков отправляются с ответом, их можно анализировать для получения информации о запросе.

X-RateLimit-Limit: 30X-RateLimit-Remaining: 29X-RateLimit-Reset: TIMESTAMP

Обработка ответов

По умолчанию все ответы API возвращаются в формате JSON. Чтобы преобразовать это в полезные данные, необходимо будет использовать соответствующую функцию в соответствии с языком. В PHP функция json_decode() может использоваться для преобразования данных либо в объект (по умолчанию), либо в массив (установите для второго параметра значение true). Очень важно проверить ключ ошибки, так как он предоставляет информацию о том, произошла ошибка или нет. Вы также можете проверить код заголовка.

{
    "error": 1,
    "message": "An error occurred"
}

QR Коды

List QR codes

GET https://tapny.ru/api/qr?limit=2&page=1

Чтобы получить свои QR-коды через API, вы можете использовать эту конечную точку. Вы также можете фильтровать данные (дополнительную информацию см. в таблице).

Параметр Описание
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://tapny.ru/api/qr?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": "0",
    "data": {
        "result": 2,
        "perpage": 2,
        "currentpage": 1,
        "nextpage": 1,
        "maxpage": 1,
        "qrs": [
            {
                "id": 2,
                "link": "https:\/\/tapny.ru\/qr\/a2d5e",
                "scans": 0,
                "name": "Google",
                "date": "2020-11-10 18:01:43"
            },
            {
                "id": 1,
                "link": "https:\/\/tapny.ru\/qr\/b9edfe",
                "scans": 5,
                "name": "Google Canada",
                "date": "2020-11-10 18:00:25"
            }
        ]
    }
}

Получите один QR-код

GET https://tapny.ru/api/qr/:id

Чтобы получить подробную информацию об одном QR-коде через API, вы можете использовать эту конечную точку.

curl --location --request GET 'https://tapny.ru/api/qr/:id' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": 0,
    "details": {
        "id": 1,
        "link": "https:\/\/tapny.ru\/qr\/b9edfe",
        "scans": 5,
        "name": "Google Canada",
        "date": "2020-11-10 18:00:25"
    },
    "data": {
        "clicks": 1,
        "uniqueClicks": 1,
        "topCountries": {
            "Unknown": "1"
        },
        "topReferrers": {
            "Direct, email and other": "1"
        },
        "topBrowsers": {
            "Chrome": "1"
        },
        "topOs": {
            "Windows 10": "1"
        },
        "socialCount": {
            "facebook": 0,
            "twitter": 0,
            "instagram": 0
        }
    }
}

Создайте QR-код

POST https://tapny.ru/api/qr/add

To create a QR Code, you need to send a valid data in JSON via a POST request. The data must be sent as the raw body of your request as shown below. The example below shows all the parameters you can send but you are not required to send all (See table for more info).

Параметр Описание
type (required) text | vcard | link | email | phone | sms | wifi
data (required) Data to be embedded inside the QR code. The data can be string or array depending on the type
background (optional) RGB color e.g. rgb(255,255,255)
foreground (optional) RGB color e.g. rgb(0,0,0)
logo (optional) Path to the logo either png or jpg
name (optional) QR Code name
curl --location --request POST 'https://tapny.ru/api/qr/add' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "type": "link",
    "data": "https:\/\/google.com",
    "background": "rgb(255,255,255)",
    "foreground": "rgb(0,0,0)",
    "logo": "https:\/\/site.com\/logo.png",
    "name": "QR Code API"
}'

Ответ сервера

{
    "error": 0,
    "id": 3,
    "link": "https:\/\/tapny.ru\/qr\/a58f79"
}

Update QR Code

PUT https://tapny.ru/api/qr/:id/update

Чтобы обновить QR-код, вам необходимо отправить действительные данные в формате JSON с помощью запроса PUT. Данные должны быть отправлены в виде исходного текста вашего запроса, как показано ниже. В приведенном ниже примере показаны все параметры, которые вы можете отправить, но вы не обязаны отправлять все (см. Таблицу для получения дополнительной информации).

Параметр Описание
data (required) Data to be embedded inside the QR code. The data can be string or array depending on the type
background (optional) RGB color e.g. rgb(255,255,255)
foreground (optional) RGB color e.g. rgb(0,0,0)
logo (optional) Path to the logo either png or jpg
curl --location --request PUT 'https://tapny.ru/api/qr/:id/update' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "type": "link",
    "data": "https:\/\/google.com",
    "background": "rgb(255,255,255)",
    "foreground": "rgb(0,0,0)",
    "logo": "https:\/\/site.com\/logo.png"
}'

Ответ сервера

{
    "error": 0,
    "message": "QR has been updated successfully."
}

Удалить QR-код

DELETE https://tapny.ru/api/qr/:id/delete

Чтобы удалить QR-код, вам необходимо отправить запрос на УДАЛЕНИЕ.

curl --location --request DELETE 'https://tapny.ru/api/qr/:id/delete' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": 0,
    "message": "QR Code has been deleted successfully."
}

Аккаунт

Получить учетную запись

GET https://tapny.ru/api/account

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

curl --location --request GET 'https://tapny.ru/api/account' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": 0,
    "data": {
        "id": 1,
        "email": "sample@domain.com",
        "username": "sampleuser",
        "avatar": "https:\/\/domain.com\/content\/avatar.png",
        "status": "pro",
        "expires": "2022-11-15 15:00:00",
        "registered": "2020-11-10 18:01:43"
    }
}

Обновить учетную запись

PUT https://tapny.ru/api/account/update

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

curl --location --request PUT 'https://tapny.ru/api/account/update' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "email": "newemail@google.com",
    "password": "NewPassword1"
}'

Ответ сервера

{
    "error": 0,
    "message": "Account has been successfully updated."
}

Всплывающие Окна

List CTA Overlays

GET https://tapny.ru/api/overlay?limit=2&page=1

To get cta overlays via the API, you can use this endpoint. You can also filter data (See table for more info).

Параметр Описание
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://tapny.ru/api/overlay?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": "0",
    "data": {
        "result": 2,
        "perpage": 2,
        "currentpage": 1,
        "nextpage": 1,
        "maxpage": 1,
        "cta": [
            {
                "id": 1,
                "type": "message",
                "name": "Product 1 Promo",
                "date": "2020-11-10 18:00:00"
            },
            {
                "id": 2,
                "type": "contact",
                "name": "Contact Page",
                "date": "2020-11-10 18:10:00"
            }
        ]
    }
}

Группы ссылок

List Campaigns

GET https://tapny.ru/api/campaigns?limit=2&page=1

To get your campaigns via the API, you can use this endpoint. You can also filter data (See table for more info).

Параметр Описание
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://tapny.ru/api/campaigns?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": "0",
    "data": {
        "result": 2,
        "perpage": 2,
        "currentpage": 1,
        "nextpage": 1,
        "maxpage": 1,
        "campaigns": [
            {
                "id": 1,
                "name": "Sample Campaign",
                "public": false,
                "rotator": false,
                "list": "https:\/\/domain.com\/u\/admin\/list-1"
            },
            {
                "id": 2,
                "domain": "Facebook Campaign",
                "public": true,
                "rotator": "https:\/\/domain.com\/r\/test",
                "list": "https:\/\/domain.com\/u\/admin\/test-2"
            }
        ]
    }
}

Создать Группу Ссылок

POST https://tapny.ru/api/campaign/add

A campaign can be added using this endpoint.

Параметр Описание
name (optional) Campaign name
slug (optional) Rotator Slug
public (optional) Access
curl --location --request POST 'https://tapny.ru/api/campaign/add' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "New Campaign",
    "slug": "new-campaign",
    "public": true
}'

Ответ сервера

{
    "error": 0,
    "id": 3,
    "domain": "New Campaign",
    "public": true,
    "rotator": "https:\/\/domain.com\/r\/new-campaign",
    "list": "https:\/\/domain.com\/u\/admin\/new-campaign-3"
}
POST https://tapny.ru/api/campaign/:campaignid/assign/:linkid

A short link can be assigned to a campaign using this endpoint. The endpoint requires the campaign ID and the short link ID.

curl --location --request POST 'https://tapny.ru/api/campaign/:campaignid/assign/:linkid' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": 0,
    "message": "Link successfully added to the campaign."
}

Обновить Группу

PUT https://tapny.ru/api/campaign/:id/update

To update a campaign, you need to send a valid data in JSON via a PUT request. The data must be sent as the raw body of your request as shown below. The example below shows all the parameters you can send but you are not required to send all (See table for more info).

Параметр Описание
name (required) Campaign name
slug (optional) Rotator Slug
public (optional) Access
curl --location --request PUT 'https://tapny.ru/api/campaign/:id/update' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "Twitter Campaign",
    "slug": "twitter-campaign",
    "public": true
}'

Ответ сервера

{
    "error": 0,
    "id": 3,
    "domain": "Twitter Campaign",
    "public": true,
    "rotator": "https:\/\/domain.com\/r\/twitter-campaign",
    "list": "https:\/\/domain.com\/u\/admin\/twitter-campaign-3"
}

Delete Campaign

DELETE https://tapny.ru/api/campaign/:id/delete

To delete a campaign, you need to send a DELETE request.

curl --location --request DELETE 'https://tapny.ru/api/campaign/:id/delete' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": 0,
    "message": "Campaign has been deleted successfully."
}

Пиксель

List Pixels

GET https://tapny.ru/api/pixels?limit=2&page=1

To get your pixels codes via the API, you can use this endpoint. You can also filter data (See table for more info).

Параметр Описание
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://tapny.ru/api/pixels?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": "0",
    "data": {
        "result": 2,
        "perpage": 2,
        "currentpage": 1,
        "nextpage": 1,
        "maxpage": 1,
        "pixels": [
            {
                "id": 1,
                "type": "gtmpixel",
                "name": "GTM Pixel",
                "tag": "GA-123456789",
                "date": "2020-11-10 18:00:00"
            },
            {
                "id": 2,
                "type": "twitterpixel",
                "name": "Twitter Pixel",
                "tag": "1234567",
                "date": "2020-11-10 18:10:00"
            }
        ]
    }
}

Create a Pixel

POST https://tapny.ru/api/pixel/add

A pixel can be created using this endpoint. You need to send the pixel type and the tag.

Параметр Описание
type (required) gtmpixel | gapixel | fbpixel | adwordspixel | linkedinpixel | twitterpixel | adrollpixel | quorapixel | pinterest | bing | snapchat | reddit | tiktok
name (required) Custom name for your pixel
tag (required) The tag for the pixel
curl --location --request POST 'https://tapny.ru/api/pixel/add' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "type": "gtmpixel",
    "name": "My GTM",
    "tag": "GTM-ABCDE"
}'

Ответ сервера

{
    "error": 0,
    "id": 1
}

Обновить пиксель

PUT https://tapny.ru/api/pixel/:id/update

To update a pixel, you need to send a valid data in JSON via a PUT request. The data must be sent as the raw body of your request as shown below. The example below shows all the parameters you can send but you are not required to send all (See table for more info).

Параметр Описание
name (optional) Custom name for your pixel
tag (required) The tag for the pixel
curl --location --request PUT 'https://tapny.ru/api/pixel/:id/update' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "My GTM",
    "tag": "GTM-ABCDE"
}'

Ответ сервера

{
    "error": 0,
    "message": "Pixel has been updated successfully."
}

Delete Pixel

DELETE https://tapny.ru/api/pixel/:id/delete

To delete a pixel, you need to send a DELETE request.

curl --location --request DELETE 'https://tapny.ru/api/pixel/:id/delete' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": 0,
    "message": "Pixel has been deleted successfully."
}

Проекты

List Channels

GET https://tapny.ru/api/channels?limit=2&page=1

To get your channels via the API, you can use this endpoint. You can also filter data (See table for more info).

Параметр Описание
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://tapny.ru/api/channels?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": "0",
    "data": {
        "result": 2,
        "perpage": 2,
        "currentpage": 1,
        "nextpage": 1,
        "maxpage": 1,
        "channels": [
            {
                "id": 1,
                "name": "Channel 1",
                "description": "Description of channel 1",
                "color": "#000000",
                "starred": true
            },
            {
                "id": 2,
                "name": "Channel 2",
                "description": "Description of channel 2",
                "color": "#FF0000",
                "starred": false
            }
        ]
    }
}

List Channel Items

GET https://tapny.ru/api/channel/:id?limit=1&page=1

To get items in a select channels via the API, you can use this endpoint. You can also filter data (See table for more info).

Параметр Описание
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://tapny.ru/api/channel/:id?limit=1&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": "0",
    "data": {
        "result": 2,
        "perpage": 2,
        "currentpage": 1,
        "nextpage": 1,
        "maxpage": 1,
        "items": [
            {
                "type": "links",
                "id": 1,
                "title": "My Sample Link",
                "preview": "https:\/\/google.com",
                "link": "https:\/\/tapny.ru\/google",
                "date": "2022-05-12"
            },
            {
                "type": "bio",
                "id": 1,
                "title": "My Sample Bio",
                "preview": "https:\/\/tapny.ru\/mybio",
                "link": "https:\/\/tapny.ru\/mybio",
                "date": "2022-06-01"
            }
        ]
    }
}

Создание проекта

POST https://tapny.ru/api/channel/add

A channel can be added using this endpoint.

Параметр Описание
name (required) Channel name
description (optional) Channel description
color (optional) Channel badge color (HEX)
starred (optional) Star the channel or not (true or false)
curl --location --request POST 'https://tapny.ru/api/channel/add' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "New Channel",
    "description": "my new channel",
    "color": "#000000",
    "starred": true
}'

Ответ сервера

{
    "error": 0,
    "id": 3,
    "name": "New Channel",
    "description": "my new channel",
    "color": "#000000",
    "starred": true
}

Assign an Item to a Channel

POST https://tapny.ru/api/channel/:channelid/assign/:type/:itemid

An item can be assigned to any channel by sending a request with the channel id, item type (links, bio or qr) and item id.

Параметр Описание
:channelid (required) Channel ID
:type (required) links or bio or qr
:itemid (required) Item ID
curl --location --request POST 'https://tapny.ru/api/channel/:channelid/assign/:type/:itemid' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": 0,
    "message": "Item successfully added to the channel."
}

Измнеить проект

PUT https://tapny.ru/api/channel/:id/update

To update a channel, you need to send a valid data in JSON via a PUT request. The data must be sent as the raw body of your request as shown below. The example below shows all the parameters you can send but you are not required to send all (See table for more info).

Параметр Описание
name (optional) Channel name
description (optional) Channel description
color (optional) Channel badge color (HEX)
starred (optional) Star the channel or not (true or false)
curl --location --request PUT 'https://tapny.ru/api/channel/:id/update' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "Acme Corp",
    "description": "channel for items for Acme Corp",
    "color": "#FFFFFF",
    "starred": false
}'

Ответ сервера

{
    "error": 0,
    "message": "Channel has been updated successfully."
}

Delete Channel

DELETE https://tapny.ru/api/channel/:id/delete

To delete a channel, you need to send a DELETE request. All items will be unassigned as well.

curl --location --request DELETE 'https://tapny.ru/api/channel/:id/delete' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": 0,
    "message": "Channel has been deleted successfully."
}

Промо страницы

List Custom Splash

GET https://tapny.ru/api/splash?limit=2&page=1

To get Splash Pages via the API, you can use this endpoint. You can also filter data (See table for more info).

Параметр Описание
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://tapny.ru/api/splash?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": "0",
    "data": {
        "result": 2,
        "perpage": 2,
        "currentpage": 1,
        "nextpage": 1,
        "maxpage": 1,
        "splash": [
            {
                "id": 1,
                "name": "Product 1 Promo",
                "date": "2020-11-10 18:00:00"
            },
            {
                "id": 2,
                "name": "Product 2 Promo",
                "date": "2020-11-10 18:10:00"
            }
        ]
    }
}

Свои домены

List Branded Domains

GET https://tapny.ru/api/domains?limit=2&page=1

To get your branded domains via the API, you can use this endpoint. You can also filter data (See table for more info).

Параметр Описание
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://tapny.ru/api/domains?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": "0",
    "data": {
        "result": 2,
        "perpage": 2,
        "currentpage": 1,
        "nextpage": 1,
        "maxpage": 1,
        "domains": [
            {
                "id": 1,
                "domain": "https:\/\/domain1.com",
                "redirectroot": "https:\/\/rootdomain.com",
                "redirect404": "https:\/\/rootdomain.com\/404"
            },
            {
                "id": 2,
                "domain": "https:\/\/domain2.com",
                "redirectroot": "https:\/\/rootdomain2.com",
                "redirect404": "https:\/\/rootdomain2.com\/404"
            }
        ]
    }
}

Create a Branded Domain

POST https://tapny.ru/api/domain/add

A domain can be added using this endpoint. Please make sure the domain is correctly pointed to our server.

Параметр Описание
domain (required) Branded domain including http or https
redirectroot (optional) Root redirect when someone visits your domain
redirect404 (optional) Custom 404 redirect
curl --location --request POST 'https://tapny.ru/api/domain/add' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "domain": "https:\/\/domain1.com",
    "redirectroot": "https:\/\/rootdomain.com",
    "redirect404": "https:\/\/rootdomain.com\/404"
}'

Ответ сервера

{
    "error": 0,
    "id": 1
}

Обновить домен

PUT https://tapny.ru/api/domain/:id/update

To update a branded domain, you need to send a valid data in JSON via a PUT request. The data must be sent as the raw body of your request as shown below. The example below shows all the parameters you can send but you are not required to send all (See table for more info).

Параметр Описание
redirectroot (optional) Root redirect when someone visits your domain
redirect404 (optional) Custom 404 redirect
curl --location --request PUT 'https://tapny.ru/api/domain/:id/update' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "redirectroot": "https:\/\/rootdomain-new.com",
    "redirect404": "https:\/\/rootdomain-new.com\/404"
}'

Ответ сервера

{
    "error": 0,
    "message": "Domain has been updated successfully."
}

Delete Domain

DELETE https://tapny.ru/api/domain/:id/delete

To delete a domain, you need to send a DELETE request.

curl --location --request DELETE 'https://tapny.ru/api/domain/:id/delete' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Ответ сервера

{
    "error": 0,
    "message": "Domain has been deleted successfully."
}