Developers

API документация за разработчици

An API key is required for requests to be processed by the system. Once a user registers, an API key is automatically generated for this user.

Започнете

За да бъдат обработвани заявките от системата, е необходим API ключ. След регистрация за всеки потребител автоматично се генерира API ключ. API ключът трябва да бъде изпращан с всяка заявка (вижте пълния пример по-долу). Ако API ключът не бъде изпратен или е изтекъл, ще възникне грешка. Моля, пазете своя API ключ в тайна, за да предотвратите злоупотреби.

Удостоверяване

За удостоверяване чрез API системата трябва да изпращате своя API ключ като токен за оторизация с всяка заявка. По-долу можете да видите примерен код.

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

Ограничение на заявките

Нашият API разполага с ограничение на заявките, за да се предпази от внезапни пикове и да се гарантира стабилност. В момента ограничението е 30 заявки на всеки 1 минути. Please note that the rate might change according to the subscribed plan.

Нашият API разполага с ограничение на заявките, за да се предпази от внезапни пикове и да се гарантира стабилност. В момента ограничението е {x} заявки на всеки {y} минути.

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

Обработка на отговори

Всички API отговори по подразбиране се връщат във формат JSON. За да ги преобразувате в използваеми данни, трябва да използвате подходящата функция според езика. В PHP можете да използвате функцията json_decode(), за да преобразувате данните в обект (по подразбиране) или масив (като зададете втория параметър на true). Много е важно да проверявате ключа error, тъй като той показва дали е възникнала грешка. Можете също да проверите и HTTP кода на отговора.

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

Get Account

GET https://tiny.bg/api/account

To get information on the account, you can send a request to this endpoint and it will return data on the account.

curl --location --request GET 'https://tiny.bg/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"
    }
}

Update Account

PUT https://tiny.bg/api/account/update

To update information on the account, you can send a request to this endpoint and it will update data on the account.

curl --location --request PUT 'https://tiny.bg/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."
}

CTA наслагвания

List CTA Overlays

GET https://tiny.bg/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://tiny.bg/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"
            }
        ]
    }
}

QR кодове

List QR codes

GET https://tiny.bg/api/qr?limit=2&page=1

To get your QR 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://tiny.bg/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:\/\/tiny.bg\/qr\/a2d5e",
                "scans": 0,
                "name": "Google",
                "date": "2020-11-10 18:01:43"
            },
            {
                "id": 1,
                "link": "https:\/\/tiny.bg\/qr\/b9edfe",
                "scans": 5,
                "name": "Google Canada",
                "date": "2020-11-10 18:00:25"
            }
        ]
    }
}

Get a single QR Code

GET https://tiny.bg/api/qr/:id

To get details for a single QR code via the API, you can use this endpoint.

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

Отговор от сървъра

{
    "error": 0,
    "details": {
        "id": 1,
        "link": "https:\/\/tiny.bg\/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
        }
    }
}

Create a QR Code

POST https://tiny.bg/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://tiny.bg/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:\/\/tiny.bg\/qr\/a58f79"
}

Update QR Code

PUT https://tiny.bg/api/qr/:id/update

To update a QR Code, 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).

Параметър Описанието
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://tiny.bg/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."
}

Delete a QR Code

DELETE https://tiny.bg/api/qr/:id/delete

To delete a QR code, you need to send a DELETE request.

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

Отговор от сървъра

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

Брандирани домейни

List Branded Domains

GET https://tiny.bg/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://tiny.bg/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://tiny.bg/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://tiny.bg/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://tiny.bg/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://tiny.bg/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://tiny.bg/api/domain/:id/delete

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

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

Отговор от сървъра

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

Кампании

List Campaigns

GET https://tiny.bg/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://tiny.bg/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"
            }
        ]
    }
}

Create a Campaign

POST https://tiny.bg/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://tiny.bg/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://tiny.bg/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://tiny.bg/api/campaign/:campaignid/assign/:linkid' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Отговор от сървъра

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

Update Campaign

PUT https://tiny.bg/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://tiny.bg/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://tiny.bg/api/campaign/:id/delete

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

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

Отговор от сървъра

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

Канали

List Channels

GET https://tiny.bg/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://tiny.bg/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://tiny.bg/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://tiny.bg/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:\/\/tiny.bg\/google",
                "date": "2022-05-12"
            },
            {
                "type": "bio",
                "id": 1,
                "title": "My Sample Bio",
                "preview": "https:\/\/tiny.bg\/mybio",
                "link": "https:\/\/tiny.bg\/mybio",
                "date": "2022-06-01"
            }
        ]
    }
}

Create a Channel

POST https://tiny.bg/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://tiny.bg/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://tiny.bg/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://tiny.bg/api/channel/:channelid/assign/:type/:itemid' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Отговор от сървъра

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

Update Channel

PUT https://tiny.bg/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://tiny.bg/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://tiny.bg/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://tiny.bg/api/channel/:id/delete' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Отговор от сървъра

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

Персонализиран Splash

List Custom Splash

GET https://tiny.bg/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://tiny.bg/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 Pixels

GET https://tiny.bg/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://tiny.bg/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://tiny.bg/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://tiny.bg/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://tiny.bg/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://tiny.bg/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://tiny.bg/api/pixel/:id/delete

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

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

Отговор от сървъра

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