Developers

Referência API para Desenvolvedores

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.

Vamos Começar

Uma chave API é necessária para que as solicitações sejam processadas pelo sistema. Assim que um usuário se registra, uma chave API é gerada automaticamente para este usuário. A chave API deve ser enviada com cada solicitação (ver exemplo completo abaixo). Se a chave API não for enviada ou estiver expirada, haverá um erro. Por favor, certifique-se de manter sua chave de API em segredo para evitar abusos.

Autenticação

Para autenticar com o sistema API, você precisa enviar sua chave API como um token de autorização com cada solicitação. Você pode ver o código de amostra abaixo.

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

Limite da taxa

Nosso API tem um limitador de taxa a ser protegido contra picos em solicitações para maximizar sua estabilidade. Nosso limitador de taxa é atualmente limitado a 30 solicitações por 1 minuto. Observe que a tarifa pode mudar de acordo com o plano contratado.

Vários cabeçalhos serão enviados junto com a resposta e estes podem ser examinados para determinar várias informações sobre o pedido.

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

Manuseio de respostas

Todas as respostas API são retornadas no formato JSON por padrão. Para converter isto em dados utilizáveis, a função apropriada precisará ser usada de acordo com o idioma. Em PHP, a função json_decode() pode ser usada para converter os dados para um objeto (padrão) ou um array (definir o segundo parâmetro como verdadeiro). É muito importante verificar a chave de erro, pois ela fornece informações sobre se houve ou não um erro. Também é possível verificar o código de cabeçalho.

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

Campanhas

List Campaigns

GET https://bra.lu/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).

Parameter Descrição
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://bra.lu/api/campaigns?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Resposta do servidor

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

Criar uma Campanha

POST https://bra.lu/api/campaign/add

A campaign can be added using this endpoint.

Parameter Descrição
name (optional) Campaign name
slug (optional) Rotator Slug
public (optional) Access
curl --location --request POST 'https://bra.lu/api/campaign/add' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "New Campaign",
    "slug": "new-campaign",
    "public": true
}'

Resposta do servidor

{
    "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://bra.lu/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://bra.lu/api/campaign/:campaignid/assign/:linkid' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Resposta do servidor

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

Campanha de atualização

PUT https://bra.lu/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).

Parameter Descrição
name (required) Campaign name
slug (optional) Rotator Slug
public (optional) Access
curl --location --request PUT 'https://bra.lu/api/campaign/:id/update' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "Twitter Campaign",
    "slug": "twitter-campaign",
    "public": true
}'

Resposta do servidor

{
    "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://bra.lu/api/campaign/:id/delete

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

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

Resposta do servidor

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

List Channels

GET https://bra.lu/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).

Parameter Descrição
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://bra.lu/api/channels?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Resposta do servidor

{
    "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://bra.lu/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).

Parameter Descrição
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://bra.lu/api/channel/:id?limit=1&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Resposta do servidor

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

Criar um canal

POST https://bra.lu/api/channel/add

A channel can be added using this endpoint.

Parameter Descrição
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://bra.lu/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
}'

Resposta do servidor

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

Assign an Item to a Channel

POST https://bra.lu/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.

Parameter Descrição
:channelid (required) Channel ID
:type (required) links or bio or qr
:itemid (required) Item ID
curl --location --request POST 'https://bra.lu/api/channel/:channelid/assign/:type/:itemid' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Resposta do servidor

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

Update Canal

PUT https://bra.lu/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).

Parameter Descrição
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://bra.lu/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
}'

Resposta do servidor

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

Delete Channel

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

Resposta do servidor

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

Criar uma conta

GET https://bra.lu/api/account

Para obter informações sobre a conta, você pode enviar um pedido a este ponto final e ele retornará os dados sobre a conta.

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

Resposta do servidor

{
    "error": 0,
    "data": {
        "id": 1,
        "email": "[email protected]",
        "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"
    }
}

Atualizar conta

PUT https://bra.lu/api/account/update

Para atualizar informações sobre a conta, você pode enviar um pedido a este ponto final e ele atualizará os dados sobre a conta.

curl --location --request PUT 'https://bra.lu/api/account/update' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "email": "[email protected]",
    "password": "NewPassword1"
}'

Resposta do servidor

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

ESCALA E CTA

List CTA Overlays

GET https://bra.lu/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).

Parameter Descrição
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://bra.lu/api/overlay?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Resposta do servidor

{
    "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 Custom Splash

GET https://bra.lu/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).

Parameter Descrição
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://bra.lu/api/splash?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Resposta do servidor

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

Meus Domínios

List Branded Domains

GET https://bra.lu/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).

Parameter Descrição
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://bra.lu/api/domains?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Resposta do servidor

{
    "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://bra.lu/api/domain/add

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

Parameter Descrição
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://bra.lu/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"
}'

Resposta do servidor

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

Atualizar Domínio

PUT https://bra.lu/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).

Parameter Descrição
redirectroot (optional) Root redirect when someone visits your domain
redirect404 (optional) Custom 404 redirect
curl --location --request PUT 'https://bra.lu/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"
}'

Resposta do servidor

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

Delete Domain

DELETE https://bra.lu/api/domain/:id/delete

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

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

Resposta do servidor

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

List Pixels

GET https://bra.lu/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).

Parameter Descrição
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://bra.lu/api/pixels?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Resposta do servidor

{
    "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://bra.lu/api/pixel/add

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

Parameter Descrição
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://bra.lu/api/pixel/add' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "type": "gtmpixel",
    "name": "My GTM",
    "tag": "GTM-ABCDE"
}'

Resposta do servidor

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

Atualização Pixel

PUT https://bra.lu/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).

Parameter Descrição
name (optional) Custom name for your pixel
tag (required) The tag for the pixel
curl --location --request PUT 'https://bra.lu/api/pixel/:id/update' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "My GTM",
    "tag": "GTM-ABCDE"
}'

Resposta do servidor

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

Delete Pixel

DELETE https://bra.lu/api/pixel/:id/delete

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

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

Resposta do servidor

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

QR Codes

List QR codes

GET https://bra.lu/api/qr?limit=2&page=1

Para excluir um link, você precisa enviar um pedido de DELETE.

Parameter Descrição
limit (optional) Per page data result
page (optional) Current page request
curl --location --request GET 'https://bra.lu/api/qr?limit=2&page=1' \
--header 'Authorization: Bearer YOURAPIKEY' \
--header 'Content-Type: application/json' \

Resposta do servidor

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

Criar um Código QR

GET https://bra.lu/api/qr/:id

Para obter detalhes de um único código QR através da API, você pode usar este endpoint.

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

Resposta do servidor

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

Criar QR Code

POST https://bra.lu/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).

Parameter Descrição
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://bra.lu/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"
}'

Resposta do servidor

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

Update QR Code

PUT https://bra.lu/api/qr/:id/update

Para atualizar um Código QR, você precisa enviar um dado válido no JSON através de uma solicitação PUT. Os dados devem ser enviados como o corpo bruto de sua solicitação, como mostrado abaixo. O exemplo abaixo mostra todos os parâmetros que você pode enviar, mas não é necessário enviar todos (Veja a tabela para mais informações).

Parameter Descrição
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://bra.lu/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"
}'

Resposta do servidor

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

Deletar QR CODE

DELETE https://bra.lu/api/qr/:id/delete

Para excluir um código QR, você precisa enviar um pedido de DELETE.

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

Resposta do servidor

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