• Desa Margakaya, Pringsewu
  • API Reference for Developers

    API Reference for Developers

    Getting Started

    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. The API key must be sent with each request (see full example below). If the API key is not sent or is expired, there will be an error. Please make sure to keep your API key secret to prevent abuse.

    Authentication

    To authenticate with the API system, you need to send your API key as an authorization token with each request. You can see sample code below.

    curl --location --request POST 'https://upangmarga.go.id/api/account' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \ 
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/account",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
    ));
    
    $response = curl_exec($curl);
    var request = require('request');
    var options = {
        'method': 'POST',
        'url': 'https://upangmarga.go.id/api/account',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        body: ''
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Rate Limit

    Our API has a rate limiter to safeguard against spike in requests to maximize its stability. Our rate limiter is currently caped at 30 requests per 1 minute.

    Several headers will be sent alongside the response and these can be examined to determine various information about the request.

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

    All API response are returned in JSON format by default. To convert this into usable data, the appropriate function will need to be used according to the language. In PHP, the function json_decode() can be used to convert the data to either an object (default) or an array (set the second parameter to true). It is very important to check the error key as that provides information on whether there was an error or not. You can also check the header code.

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

    Account

    Get Account
    GET https://upangmarga.go.id/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://upangmarga.go.id/api/account' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/account",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'GET',
        'url': 'https://upangmarga.go.id/api/account',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "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://upangmarga.go.id/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://upangmarga.go.id/api/account/update' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "email": "newemail@google.com",
        "password": "newpassword"
    }'
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/account/update",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "PUT",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode(array(
          'email' => 'newemail@google.com',
          'password' => 'newpassword',
        )),
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'PUT',
        'url': 'https://upangmarga.go.id/api/account/update',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
        "email": "newemail@google.com",
        "password": "newpassword"
    }),
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "message": "Account has been successfully updated."
    }

    Branded Domains

    List Branded Domains
    GET https://upangmarga.go.id/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).

    ParameterDescription
    limit (optional) Per page data result
    page (optional) Current page request
    curl --location --request GET 'https://upangmarga.go.id/api/domains?limit=2&page=1' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/domains?limit=2&page=1",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'GET',
        'url': 'https://upangmarga.go.id/api/domains?limit=2&page=1',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "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://upangmarga.go.id/api/domain/add

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

    ParameterDescription
    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://upangmarga.go.id/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"
    }'
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/domain/add",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode(array(
          'domain' => 'https://domain1.com',
          'redirectroot' => 'https://rootdomain.com',
          'redirect404' => 'https://rootdomain.com/404',
        )),
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'POST',
        'url': 'https://upangmarga.go.id/api/domain/add',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
        "domain": "https:\/\/domain1.com",
        "redirectroot": "https:\/\/rootdomain.com",
        "redirect404": "https:\/\/rootdomain.com\/404"
    }),
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "id": 1
    }
    Update Domain
    PUT https://upangmarga.go.id/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).

    ParameterDescription
    redirectroot (optional) Root redirect when someone visits your domain
    redirect404 (optional) Custom 404 redirect
    curl --location --request PUT 'https://upangmarga.go.id/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"
    }'
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/domain/:id/update",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "PUT",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode(array(
          'redirectroot' => 'https://rootdomain-new.com',
          'redirect404' => 'https://rootdomain-new.com/404',
        )),
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'PUT',
        'url': 'https://upangmarga.go.id/api/domain/:id/update',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
        "redirectroot": "https:\/\/rootdomain-new.com",
        "redirect404": "https:\/\/rootdomain-new.com\/404"
    }),
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "message": "Domain has been updated successfully."
    }
    Delete Domain
    DELETE https://upangmarga.go.id/api/domain/:id/delete

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

    curl --location --request DELETE 'https://upangmarga.go.id/api/domain/:id/delete' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/domain/:id/delete",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "DELETE",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'DELETE',
        'url': 'https://upangmarga.go.id/api/domain/:id/delete',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "message": "Domain has been deleted successfully."
    }

    CTA Overlays

    List CTA Overlays
    GET https://upangmarga.go.id/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).

    ParameterDescription
    limit (optional) Per page data result
    page (optional) Current page request
    curl --location --request GET 'https://upangmarga.go.id/api/overlay?limit=2&page=1' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/overlay?limit=2&page=1",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'GET',
        'url': 'https://upangmarga.go.id/api/overlay?limit=2&page=1',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "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"
                }
            ]
        }
    }

    Campaigns

    List Campaigns
    GET https://upangmarga.go.id/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).

    ParameterDescription
    limit (optional) Per page data result
    page (optional) Current page request
    curl --location --request GET 'https://upangmarga.go.id/api/campaigns?limit=2&page=1' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/campaigns?limit=2&page=1",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'GET',
        'url': 'https://upangmarga.go.id/api/campaigns?limit=2&page=1',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "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://upangmarga.go.id/api/campaign/add

    A campaign can be added using this endpoint.

    ParameterDescription
    name (optional) Campaign name
    slug (optional) Rotator Slug
    public (optional) Access
    curl --location --request POST 'https://upangmarga.go.id/api/campaign/add' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "name": "New Campaign",
        "slug": "new-campaign",
        "public": true
    }'
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/campaign/add",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode(array(
          'name' => 'New Campaign',
          'slug' => 'new-campaign',
          'public' => true,
        )),
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'POST',
        'url': 'https://upangmarga.go.id/api/campaign/add',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
        "name": "New Campaign",
        "slug": "new-campaign",
        "public": true
    }),
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "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://upangmarga.go.id/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://upangmarga.go.id/api/campaign/:campaignid/assign/:linkid' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/campaign/:campaignid/assign/:linkid",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'POST',
        'url': 'https://upangmarga.go.id/api/campaign/:campaignid/assign/:linkid',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "message": "Link successfully added to the campaign."
    }
    Update Campaign
    PUT https://upangmarga.go.id/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).

    ParameterDescription
    name (required) Campaign name
    slug (optional) Rotator Slug
    public (optional) Access
    curl --location --request PUT 'https://upangmarga.go.id/api/campaign/:id/update' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "name": "Twitter Campaign",
        "slug": "twitter-campaign",
        "public": true
    }'
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/campaign/:id/update",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "PUT",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode(array(
          'name' => 'Twitter Campaign',
          'slug' => 'twitter-campaign',
          'public' => true,
        )),
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'PUT',
        'url': 'https://upangmarga.go.id/api/campaign/:id/update',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
        "name": "Twitter Campaign",
        "slug": "twitter-campaign",
        "public": true
    }),
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "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://upangmarga.go.id/api/campaign/:id/delete

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

    curl --location --request DELETE 'https://upangmarga.go.id/api/campaign/:id/delete' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/campaign/:id/delete",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "DELETE",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'DELETE',
        'url': 'https://upangmarga.go.id/api/campaign/:id/delete',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "message": "Campaign has been deleted successfully."
    }

    Channels

    List Channels
    GET https://upangmarga.go.id/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).

    ParameterDescription
    limit (optional) Per page data result
    page (optional) Current page request
    curl --location --request GET 'https://upangmarga.go.id/api/channels?limit=2&page=1' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/channels?limit=2&page=1",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'GET',
        'url': 'https://upangmarga.go.id/api/channels?limit=2&page=1',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "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://upangmarga.go.id/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).

    ParameterDescription
    limit (optional) Per page data result
    page (optional) Current page request
    curl --location --request GET 'https://upangmarga.go.id/api/channel/:id?limit=1&page=1' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/channel/:id?limit=1&page=1",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'GET',
        'url': 'https://upangmarga.go.id/api/channel/:id?limit=1&page=1',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "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:\/\/upangmarga.go.id\/google",
                    "date": "2022-05-12"
                },
                {
                    "type": "bio",
                    "id": 1,
                    "title": "My Sample Bio",
                    "preview": "https:\/\/upangmarga.go.id\/mybio",
                    "link": "https:\/\/upangmarga.go.id\/mybio",
                    "date": "2022-06-01"
                }
            ]
        }
    }
    Create a Channel
    POST https://upangmarga.go.id/api/channel/add

    A channel can be added using this endpoint.

    ParameterDescription
    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://upangmarga.go.id/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
    }'
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/channel/add",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode(array(
          'name' => 'New Channel',
          'description' => 'my new channel',
          'color' => '#000000',
          'starred' => true,
        )),
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'POST',
        'url': 'https://upangmarga.go.id/api/channel/add',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
        "name": "New Channel",
        "description": "my new channel",
        "color": "#000000",
        "starred": true
    }),
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "id": 3,
        "name": "New Channel",
        "description": "my new channel",
        "color": "#000000",
        "starred": true
    }
    Assign an Item to a Channel
    POST https://upangmarga.go.id/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.

    ParameterDescription
    :channelid (required) Channel ID
    :type (required) links or bio or qr
    :itemid (required) Item ID
    curl --location --request POST 'https://upangmarga.go.id/api/channel/:channelid/assign/:type/:itemid' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/channel/:channelid/assign/:type/:itemid",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'POST',
        'url': 'https://upangmarga.go.id/api/channel/:channelid/assign/:type/:itemid',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "message": "Item successfully added to the channel."
    }
    Update Channel
    PUT https://upangmarga.go.id/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).

    ParameterDescription
    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://upangmarga.go.id/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
    }'
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/channel/:id/update",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "PUT",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode(array(
          'name' => 'Acme Corp',
          'description' => 'channel for items for Acme Corp',
          'color' => '#FFFFFF',
          'starred' => false,
        )),
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'PUT',
        'url': 'https://upangmarga.go.id/api/channel/:id/update',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
        "name": "Acme Corp",
        "description": "channel for items for Acme Corp",
        "color": "#FFFFFF",
        "starred": false
    }),
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "message": "Channel has been updated successfully."
    }
    Delete Channel
    DELETE https://upangmarga.go.id/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://upangmarga.go.id/api/channel/:id/delete' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/channel/:id/delete",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "DELETE",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'DELETE',
        'url': 'https://upangmarga.go.id/api/channel/:id/delete',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "message": "Channel has been deleted successfully."
    }

    Custom Splash

    List Custom Splash
    GET https://upangmarga.go.id/api/splash?limit=2&page=1

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

    ParameterDescription
    limit (optional) Per page data result
    page (optional) Current page request
    curl --location --request GET 'https://upangmarga.go.id/api/splash?limit=2&page=1' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/splash?limit=2&page=1",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'GET',
        'url': 'https://upangmarga.go.id/api/splash?limit=2&page=1',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "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"
                }
            ]
        }
    }

    Links


    Pixels

    List Pixels
    GET https://upangmarga.go.id/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).

    ParameterDescription
    limit (optional) Per page data result
    page (optional) Current page request
    curl --location --request GET 'https://upangmarga.go.id/api/pixels?limit=2&page=1' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/pixels?limit=2&page=1",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'GET',
        'url': 'https://upangmarga.go.id/api/pixels?limit=2&page=1',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "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://upangmarga.go.id/api/pixel/add

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

    ParameterDescription
    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://upangmarga.go.id/api/pixel/add' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "type": "gtmpixel",
        "name": "My GTM",
        "tag": "GTM-ABCDE"
    }'
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/pixel/add",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode(array(
          'type' => 'gtmpixel',
          'name' => 'My GTM',
          'tag' => 'GTM-ABCDE',
        )),
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'POST',
        'url': 'https://upangmarga.go.id/api/pixel/add',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
        "type": "gtmpixel",
        "name": "My GTM",
        "tag": "GTM-ABCDE"
    }),
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "id": 1
    }
    Update Pixel
    PUT https://upangmarga.go.id/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).

    ParameterDescription
    name (optional) Custom name for your pixel
    tag (required) The tag for the pixel
    curl --location --request PUT 'https://upangmarga.go.id/api/pixel/:id/update' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "name": "My GTM",
        "tag": "GTM-ABCDE"
    }'
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/pixel/:id/update",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "PUT",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode(array(
          'name' => 'My GTM',
          'tag' => 'GTM-ABCDE',
        )),
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'PUT',
        'url': 'https://upangmarga.go.id/api/pixel/:id/update',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
        "name": "My GTM",
        "tag": "GTM-ABCDE"
    }),
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "message": "Pixel has been updated successfully."
    }
    Delete Pixel
    DELETE https://upangmarga.go.id/api/pixel/:id/delete

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

    curl --location --request DELETE 'https://upangmarga.go.id/api/pixel/:id/delete' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/pixel/:id/delete",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "DELETE",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'DELETE',
        'url': 'https://upangmarga.go.id/api/pixel/:id/delete',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "message": "Pixel has been deleted successfully."
    }

    QR Codes

    List QR codes
    GET https://upangmarga.go.id/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).

    ParameterDescription
    limit (optional) Per page data result
    page (optional) Current page request
    curl --location --request GET 'https://upangmarga.go.id/api/qr?limit=2&page=1' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/qr?limit=2&page=1",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'GET',
        'url': 'https://upangmarga.go.id/api/qr?limit=2&page=1',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": "0",
        "data": {
            "result": 2,
            "perpage": 2,
            "currentpage": 1,
            "nextpage": 1,
            "maxpage": 1,
            "qrs": [
                {
                    "id": 2,
                    "link": "https:\/\/upangmarga.go.id\/qr\/a2d5e",
                    "scans": 0,
                    "name": "Google",
                    "date": "2020-11-10 18:01:43"
                },
                {
                    "id": 1,
                    "link": "https:\/\/upangmarga.go.id\/qr\/b9edfe",
                    "scans": 5,
                    "name": "Google Canada",
                    "date": "2020-11-10 18:00:25"
                }
            ]
        }
    }
    Get a single QR Code
    GET https://upangmarga.go.id/api/qr/:id

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

    curl --location --request GET 'https://upangmarga.go.id/api/qr/:id' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/qr/:id",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'GET',
        'url': 'https://upangmarga.go.id/api/qr/:id',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "details": {
            "id": 1,
            "link": "https:\/\/upangmarga.go.id\/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://upangmarga.go.id/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).

    ParameterDescription
    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
    curl --location --request POST 'https://upangmarga.go.id/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"
    }'
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/qr/add",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode(array(
          'type' => 'link',
          'data' => 'https://google.com',
          'background' => 'rgb(255,255,255)',
          'foreground' => 'rgb(0,0,0)',
          'logo' => 'https://site.com/logo.png',
        )),
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'POST',
        'url': 'https://upangmarga.go.id/api/qr/add',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
        "type": "link",
        "data": "https:\/\/google.com",
        "background": "rgb(255,255,255)",
        "foreground": "rgb(0,0,0)",
        "logo": "https:\/\/site.com\/logo.png"
    }),
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "id": 3,
        "link": "https:\/\/upangmarga.go.id\/qr\/a58f79"
    }
    Update QR Code
    PUT https://upangmarga.go.id/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).

    ParameterDescription
    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://upangmarga.go.id/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"
    }'
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/qr/:id/update",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "PUT",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode(array(
          'type' => 'link',
          'data' => 'https://google.com',
          'background' => 'rgb(255,255,255)',
          'foreground' => 'rgb(0,0,0)',
          'logo' => 'https://site.com/logo.png',
        )),
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'PUT',
        'url': 'https://upangmarga.go.id/api/qr/:id/update',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
        "type": "link",
        "data": "https:\/\/google.com",
        "background": "rgb(255,255,255)",
        "foreground": "rgb(0,0,0)",
        "logo": "https:\/\/site.com\/logo.png"
    }),
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "message": "QR has been updated successfully."
    }
    Delete a QR Code
    DELETE https://upangmarga.go.id/api/qr/:id/delete

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

    curl --location --request DELETE 'https://upangmarga.go.id/api/qr/:id/delete' \
    --header 'Authorization: Bearer YOURAPIKEY' \
    --header 'Content-Type: application/json' \
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://upangmarga.go.id/api/qr/:id/delete",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 2,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST => "DELETE",
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer YOURAPIKEY",
            "Content-Type: application/json",
        ],
        
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    var request = require('request');
    var options = {
        'method': 'DELETE',
        'url': 'https://upangmarga.go.id/api/qr/:id/delete',
        'headers': {
            'Authorization': 'Bearer YOURAPIKEY',
            'Content-Type': 'application/json'
        },
        
    };
    request(options, function (error, response) {
        if (error) throw new Error(error);
        console.log(response.body);
    });
    Server response
    {
        "error": 0,
        "message": "QR Code has been deleted successfully."
    }