Introduction

The Shuuraku API is organized around REST and uses HTTP response codes to indicate API errors. We use built-in HTTP features, like HTTP authentication and HTTP verbs, which are understood by off-the-shelf HTTP clients. JSON is returned by all API responses, including errors.

Language:
Authentication

Authenticate your account by including your token in API requests. Do not share your token publicly on accessible areas such GitHub, client-side code, and so forth.

All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

Errors

Shuuraku uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, a charge failed, etc.). Codes in the 5xx range indicate an error with Shuuraku's servers (these are rare).

Some 4xx errors that could be handled programmatically include an error code that briefly explains the error reported.

200 - OK - Everything worked as expected.

400 - Bad Request - The request was unacceptable, often due to missing a required parameter.

401 - Unauthorized - No valid API key provided.

402 - Request Failed - The parameters were valid but the request failed.

404 - Not Found - The requested resource doesn't exist.

429 - Too Many Requests - Too many requests hit the API too quickly.

5XX - Server Errors - Something went wrong on Shuuraku's end.

Create A Countdown timer
Create a custom countdown timer that will count down to a specific date and time. Between the start date and the countdown date, an animated image will be generated. After the countdown date, a "0000-00-00 00:00:00" image will be generated.
Arguments
forms_colour
required
string
A hex value starting with a "#" character
forms_countdown_date_time
required
date-time
A date-time string formatted as YYYY-MM-DD HH:MM:SS, the date and time that the countdown timer should count down to
forms_countdown_expired_message
optional
string
A string shown when the countdown timer reaches "00:00:00:00". This string will be shown in place of "00:00:00:00" and can be a maximum of 25 characters. This parameter can only be used if you are a on a "Mid" or "Enterprise" plan.
forms_countdown_link
required
string
A string representing a link. Clicking the countdown will redirect to this link.
forms_countdown_message
optional
string
A string shown above the countdown timer, which can explain the reason for the countdown timer.
forms_countdown_show_labels
required
integer
"1" to generate labels on your countdown timer or "0" to not generate labels on your countdown timer. Labels are the "days", "hours", "minutes", and "seconds" strings that show below each number in the countdown timer.
forms_countdown_timezone
required
string
A string signifying the timezone you want the countdown timer to be associated with. Valid values can be found in the timezones section.
forms_font
required
uuid
A uuid associated with a font. Valid values can be found in the fonts section.
forms_size
required
integer
A number value used to set the font size of the countdown timer. Valid values can be found in the font sizes section.
Returns
Returns and object that includes the Marketing Item Number.
POST https://api.shuuraku.com/v1/Countdown/Create
curl -X POST \
-H "Authorization: Bearer abcdef1234567890" \
-d forms_colour=#000000 \
-d forms_countdown_date_time="2018-06-22 00:00:00" \
-d forms_countdown_expired_message="Countdown complete" \
-d forms_countdown_link="https://www.shuuraku.com" \
-d forms_countdown_message="Countdown to my event" \
-d forms_countdown_show_labels=1 \
-d forms_countdown_timezone=America/New_York \
-d forms_font="00000000-0000-4000-a000-000000000001" \
-d forms_size=36 \
https://api.shuuraku.com/v1/Countdown/Create
$.ajax({
    url: "https://api.shuuraku.com/v1/Countdown/Create",
    type: "POST",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    data: {
        forms_colour: "#000000",
        forms_countdown_date_time: "2018-06-22 00:00:00",
        forms_countdown_expired_message: "Countdown complete",
        forms_countdown_link: "https://www.shuuraku.com",
        forms_countdown_message: "Countdown to my event",
        forms_countdown_show_labels: "1",
        forms_countdown_timezone: "America/New_York",
        forms_font: "00000000-0000-4000-a000-000000000001",
        forms_size: "36"
    },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();
$data = array('forms_colour' => '#000000', 'forms_countdown_date_time' => '2018-06-22 00:00:00', 'forms_countdown_expired_message' => 'Countdown complete', 'forms_countdown_link' => 'https://www.shuuraku.com', 'forms_countdown_message' => 'Countdown to my event', 'forms_countdown_show_labels' => '1', 'forms_countdown_timezone' => 'America/New_York', 'forms_font' => '00000000-0000-4000-a000-000000000001', 'forms_size' => '36');
curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/Countdown/Create',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POST => count($data),
    CURLOPT_POSTFIELDS => http_build_query($data),
    CURLOPT_HTTPHEADER => array(
        'Authorization: Bearer abcdef1234567890'
    )
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo 'cURL error #:' . $err;
} else {
    echo $response;
}

?>
package main

import (
    "fmt"
    "os"
    "path/filepath"
    "net/http"
    "io/ioutil"
)

func main() {
    data := url.Values{}
    data.Set("forms_colour", "#000000")
    data.Set("forms_countdown_date_time", "2018-06-22 00:00:00")
    data.Set("forms_countdown_expired_message", "Countdown complete")
    data.Set("forms_countdown_link", "https://www.shuuraku.com")
    data.Set("forms_countdown_message", "Countdown to my event")
    data.Set("forms_countdown_show_labels", "1")
    data.Set("forms_countdown_timezone", "America/New_York")
    data.Set("forms_font", "00000000-0000-4000-a000-000000000001")
    data.Set("forms_size", "36")

    client := &http.Client {
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
        },
    }
    req, err := http.NewRequest("POST", "https://api.shuuraku.com/v1/Countdown/Create", strings.NewReader(data.Encode()))
    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Authorization", "Bearer abcdef1234567890")
    req.Header.Add("Content-Type", "application/x-www-form-urlencoded")     req.Header.Add("Content-Length", strconv.Itoa(len(data.Encode())))
    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}
import requests
url = 'https://api.shuuraku.com/v1/Countdown/Create'
payload = {'forms_colour': '#000000', 'forms_countdown_date_time': '2018-06-22 00:00:00', 'forms_countdown_expired_message': 'Countdown complete', 'forms_countdown_link': 'https://www.shuuraku.com', 'forms_countdown_message': 'Countdown to my event', 'forms_countdown_show_labels': '1', 'forms_countdown_timezone': 'America/New_York', 'forms_font': '00000000-0000-4000-a000-000000000001', 'forms_size': '36'}
headers = {
    'Authorization': 'Bearer abcdef1234567890'
}
response = requests.request('POST', url, headers = headers, data = payload, allow_redirects=False, timeout=undefined, allow_redirects=false)
print(response.text)
require "uri"
require "net/http"

url = URI("https://api.shuuraku.com/v1/Countdown/Create")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request.set_form_data({"forms_colour" => "#000000", "forms_countdown_date_time" => "2018-06-22 00:00:00", "forms_countdown_expired_message" => "Countdown complete", "forms_countdown_link" => "https://www.shuuraku.com", "forms_countdown_message" => "Countdown to my event", "forms_countdown_show_labels" => "1", "forms_countdown_timezone" => "America/New_York", "forms_font" => "00000000-0000-4000-a000-000000000001", "forms_size" => "36"}) request["Authorization"] = "Bearer abcdef1234567890"

response = https.request(request)
puts response.read_body
{"result":{"id_marketing_item":"00000000-0000-4000-a000-000000000002","url":"https://www.shuuraku.com/countdown/abcdefg1234567890.gif"}}
Retrieve a list of all Marketing Items
Retrieve a list of all Marketing Items in summary format, which includes when the Marketing Item was created, how much the Marketing Item cost, and what the Marketing Item Number is.
Returns
Return an array of Marketing Item objects for a customer account. Each object in the array is a separate Marketing Item.
GET https://api.shuuraku.com/v1/MarketingItems
curl -X GET \
-H "Authorization: Bearer abcdef1234567890" \
https://api.shuuraku.com/v1/MarketingItems
$.ajax({
    url: "https://api.shuuraku.com/v1/MarketingItems",
    type: "GET",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    data: { },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/MarketingItems',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => array(
        'Authorization: Bearer abcdef1234567890'
    )
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo 'cURL error #:' . $err;
} else {
    echo $response;
}

?>
package main

import (
    "fmt"
    "os"
    "path/filepath"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.shuuraku.com/v1/MarketingItems"
    method := "GET"

    client := &http.Client {
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
        },
    }
    req, err := http.NewRequest(method, url, nil)
    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Authorization", "Bearer abcdef1234567890")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}
import requests
url = 'https://api.shuuraku.com/v1/MarketingItems'
payload = {}
headers = {
    'Authorization': 'Bearer abcdef1234567890'
}
response = requests.request('GET', url, headers = headers, data = payload, allow_redirects=False, timeout=undefined, allow_redirects=false)
print(response.text)
require "uri"
require "net/http"

url = URI("https://api.shuuraku.com/v1/MarketingItems")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer abcdef1234567890"

response = https.request(request)
puts response.read_body
{"result":[{"id_marketing_item":"00000000-0000-4000-a000-000000000000","date_created":"2018-01-02 03:04:05","marketing_item_type":"Countdown","url":"https://www.shuuraku.com/countdown/abcdefg1234567890a"},{"id_marketing_item":"00000000-0000-4000-a000-000000000001","date_created":"2018-01-02 03:04:05","marketing_item_type":"Countdown","url":"https://www.shuuraku.com/countdown/abcdefg1234567890b"},{"id_marketing_item":"00000000-0000-4000-a000-000000000002","date_created":"2018-01-02 03:04:05","marketing_item_type":"Countdown","url":"https://www.shuuraku.com/countdown/abcdefg1234567890c"}]}
Get Marketing Item Details
Get additional Marketing Item information for an Marketing Item Number including customizations made when the Marketing Item was created.
Arguments
{MARKETING_ITEM_ID}
required
integer
A number representing the Marketing Item you want to get details for.
Returns
Marketing item details are returned in objects which includes core Marketing Item values and "options" includes customizations for the Marketing Item.
GET https://api.shuuraku.com/v1/MarketingItems/{MARKETING_ITEM_ID}
curl -X GET \
-H "Authorization: Bearer abcdef1234567890" \
https://api.shuuraku.com/v1/MarketingItems/00000000-0000-4000-a000-000000000001
$.ajax({
    url: "https://api.shuuraku.com/v1/MarketingItems/00000000-0000-4000-a000-000000000001",
    type: "GET",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    data: { },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/MarketingItems/00000000-0000-4000-a000-000000000001',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => array(
        'Authorization: Bearer abcdef1234567890'
    )
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo 'cURL error #:' . $err;
} else {
    echo $response;
}

?>
package main

import (
    "fmt"
    "os"
    "path/filepath"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.shuuraku.com/v1/MarketingItems/00000000-0000-4000-a000-000000000001"
    method := "GET"

    client := &http.Client {
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
        },
    }
    req, err := http.NewRequest(method, url, nil)
    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Authorization", "Bearer abcdef1234567890")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}
import requests
url = 'https://api.shuuraku.com/v1/MarketingItems/00000000-0000-4000-a000-000000000001'
payload = {}
headers = {
    'Authorization': 'Bearer abcdef1234567890'
}
response = requests.request('GET', url, headers = headers, data = payload, allow_redirects=False, timeout=undefined, allow_redirects=false)
print(response.text)
require "uri"
require "net/http"

url = URI("https://api.shuuraku.com/v1/MarketingItems/00000000-0000-4000-a000-000000000001")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer abcdef1234567890"

response = https.request(request)
puts response.read_body
{"result":{"id_marketing_item":"00000000-0000-4000-a000-000000000001","date_created":"2018-01-02 03:04:05","marketing_item_type":"Countdown","options":{"colour":"#ff0000","countdown_date_time":"2018-12-25 00:00:00","countdown_expired_message":"Countdown complete","countdown_link":"https://www.shuuraku.com","countdown_message":"Countdown to my event","countdown_show_labels":"1","countdown_timezone":"America\/New_York","font":"1","size":"48"},"url":"https://www.shuuraku.com/countdown/abcdefg1234567890"}}
Retrieve a list of all payments
Retrieve a list of all payments in summary format, which includes when the payment was created, the payment amount, and what the Payment ID is.
Returns
Return an array of payment objects for a customer account. Each object in the array is a separate payment.
GET https://api.shuuraku.com/v1/Payments
curl -X GET \
-H "Authorization: Bearer abcdef1234567890" \
https://api.shuuraku.com/v1/Payments
$.ajax({
    url: "https://api.shuuraku.com/v1/Payments",
    type: "GET",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    data: { },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/Payments',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => array(
        'Authorization: Bearer abcdef1234567890'
    )
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo 'cURL error #:' . $err;
} else {
    echo $response;
}

?>
package main

import (
    "fmt"
    "os"
    "path/filepath"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.shuuraku.com/v1/Payments"
    method := "GET"

    client := &http.Client {
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
        },
    }
    req, err := http.NewRequest(method, url, nil)
    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Authorization", "Bearer abcdef1234567890")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}
import requests
url = 'https://api.shuuraku.com/v1/Payments'
payload = {}
headers = {
    'Authorization': 'Bearer abcdef1234567890'
}
response = requests.request('GET', url, headers = headers, data = payload, allow_redirects=False, timeout=undefined, allow_redirects=false)
print(response.text)
require "uri"
require "net/http"

url = URI("https://api.shuuraku.com/v1/Payments")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer abcdef1234567890"

response = https.request(request)
puts response.read_body
{"result":[{"id_payment":"00000000-0000-4000-a000-000000000000","date_created":"2018-01-31 03:04:05","payment_total":"79.99"},{"id_payment":"00000000-0000-4000-a000-000000000001","date_created":"2018-02-28 03:04:05","payment_total":"79.99"}]}
Get Payment Details
Get additional payment information for a Payment ID including billing address, masked card details, and the plan that was paid for.
Arguments
{PAYMENT_ID}
required
integer
A number representing the Marketing Item you want to get details for.
Returns
Payment details are returned as an object.
GET https://api.shuuraku.com/v1/Payments/{PAYMENT_ID}
curl -X GET \
-H "Authorization: Bearer abcdef1234567890" \
https://api.shuuraku.com/v1/Payments/00000000-0000-4000-a000-000000000001
$.ajax({
    url: "https://api.shuuraku.com/v1/Payments/00000000-0000-4000-a000-000000000001",
    type: "GET",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    data: { },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/Payments/00000000-0000-4000-a000-000000000001',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => array(
        'Authorization: Bearer abcdef1234567890'
    )
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo 'cURL error #:' . $err;
} else {
    echo $response;
}

?>
package main

import (
    "fmt"
    "os"
    "path/filepath"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.shuuraku.com/v1/Payments/00000000-0000-4000-a000-000000000001"
    method := "GET"

    client := &http.Client {
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
        },
    }
    req, err := http.NewRequest(method, url, nil)
    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Authorization", "Bearer abcdef1234567890")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}
import requests
url = 'https://api.shuuraku.com/v1/Payments/00000000-0000-4000-a000-000000000001'
payload = {}
headers = {
    'Authorization': 'Bearer abcdef1234567890'
}
response = requests.request('GET', url, headers = headers, data = payload, allow_redirects=False, timeout=undefined, allow_redirects=false)
print(response.text)
require "uri"
require "net/http"

url = URI("https://api.shuuraku.com/v1/Payments/00000000-0000-4000-a000-000000000001")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer abcdef1234567890"

response = https.request(request)
puts response.read_body
{"result":{"id_payment":"00000000-0000-4000-a000-000000000001","date_created":"2018-02-28 03:04:05","billing_first_name":"Paxton","billing_last_name":"Smith","billing_address_1":"12 Avenue Avenue","billing_address_2":"Suite 200","billing_country":"CA","billing_province_state":"ON","billing_city":"Toronto","billing_zip_postal_code":"A1B2C3","billing_phone":"4165551234","payment_total":"79.99","card_type":"Visa","card_masked_number":"**** 1111","plan":"Enterprise"}}
Get Plan Details
Arguments
Returns
Plan details, which include your current plan.
GET https://api.shuuraku.com/v1/Plan
curl -X GET \
-H "Authorization: Bearer abcdef1234567890" \
https://api.shuuraku.com/v1/Plan
$.ajax({
    url: "https://api.shuuraku.com/v1/Plan",
    type: "GET",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    data: { },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/Plan',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => array(
        'Authorization: Bearer abcdef1234567890'
    )
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo 'cURL error #:' . $err;
} else {
    echo $response;
}

?>
package main

import (
    "fmt"
    "os"
    "path/filepath"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.shuuraku.com/v1/Plan"
    method := "GET"

    client := &http.Client {
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
        },
    }
    req, err := http.NewRequest(method, url, nil)
    if err != nil {
        fmt.Println(err)
    }
    req.Header.Add("Authorization", "Bearer abcdef1234567890")

    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)

    fmt.Println(string(body))
}
import requests
url = 'https://api.shuuraku.com/v1/Plan'
payload = {}
headers = {
    'Authorization': 'Bearer abcdef1234567890'
}
response = requests.request('GET', url, headers = headers, data = payload, allow_redirects=False, timeout=undefined, allow_redirects=false)
print(response.text)
require "uri"
require "net/http"

url = URI("https://api.shuuraku.com/v1/Plan")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer abcdef1234567890"

response = https.request(request)
puts response.read_body
{"result":{"plan":"Free","plan_maximum_view_count":20000,"plan_maximum_view_count_exceeded":false,"current_view_count":0}}
Fonts
00000000-0000-4000-a000-000000000001: Anonymous Pro
00000000-0000-4000-a000-000000000002: Arial
00000000-0000-4000-a000-000000000003: Bitstream Vera Sans Mono
00000000-0000-4000-a000-000000000004: BPmono
00000000-0000-4000-a000-000000000005: Courier Prime
00000000-0000-4000-a000-000000000006: Cousine
00000000-0000-4000-a000-000000000007: Cutive Mono
00000000-0000-4000-a000-000000000008: DejaVu Sans Mono
00000000-0000-4000-a000-000000000009: Digital Dream
00000000-0000-4000-a000-000000000010: Erika Type
00000000-0000-4000-a000-000000000011: Fantasque Sans Mono
00000000-0000-4000-a000-000000000012: Fira Mono
00000000-0000-4000-a000-000000000013: Graph 35+ Pix
00000000-0000-4000-a000-000000000014: IBM Plex Mono
00000000-0000-4000-a000-000000000015: Inconsolata
00000000-0000-4000-a000-000000000016: Joystix Monospace
00000000-0000-4000-a000-000000000017: Larabiefont Rg
00000000-0000-4000-a000-000000000018: LCD
00000000-0000-4000-a000-000000000019: Lekton
00000000-0000-4000-a000-000000000020: Liberation Mono
00000000-0000-4000-a000-000000000021: Monofonto
00000000-0000-4000-a000-000000000022: Monoid
00000000-0000-4000-a000-000000000023: Monospace
00000000-0000-4000-a000-000000000024: Nanum Gothic Coding
00000000-0000-4000-a000-000000000025: Nimbus Mono
00000000-0000-4000-a000-000000000026: NinePin
00000000-0000-4000-a000-000000000027: NK57 Monospace Sc Rg
00000000-0000-4000-a000-000000000028: Noto Mono
00000000-0000-4000-a000-000000000029: Nova Mono
00000000-0000-4000-a000-000000000030: Overpass Mono
00000000-0000-4000-a000-000000000031: Oxygen Mono
00000000-0000-4000-a000-000000000032: PT Mono
00000000-0000-4000-a000-000000000033: Roboto Mono
00000000-0000-4000-a000-000000000034: Share Tech Mono
00000000-0000-4000-a000-000000000035: Source Code Pro
00000000-0000-4000-a000-000000000036: Space Mono
00000000-0000-4000-a000-000000000037: Ubuntu Mono
00000000-0000-4000-a000-000000000038: Unispace
00000000-0000-4000-a000-000000000039: White Rabbit
Fonts Sizes
36, 48, 72
Timezones
Pacific/Midway, America/Adak, Etc/GMT+10, Pacific/Marquesas, Pacific/Gambier, America/Anchorage, America/Ensenada, Etc/GMT+8, America/Los_Angeles, America/Denver, America/Chihuahua, America/Dawson_Creek, America/Belize, America/Cancun, Chile/EasterIsland, America/Chicago, America/New_York, America/Havana, America/Bogota, America/Caracas, America/Santiago, America/La_Paz, Atlantic/Stanley, America/Campo_Grande, America/Goose_Bay, America/Glace_Bay, America/St_Johns, America/Araguaina, America/Montevideo, America/Miquelon, America/Godthab, America/Argentina/Buenos_Aires, America/Sao_Paulo, America/Noronha, Atlantic/Cape_Verde, Atlantic/Azores, Europe/Belfast, Europe/Dublin, Europe/Lisbon, Europe/London, Africa/Abidjan, Europe/Amsterdam, Europe/Belgrade, Europe/Brussels, Africa/Algiers, Africa/Windhoek, Asia/Beirut, Africa/Cairo, Asia/Gaza, Africa/Blantyre, Asia/Jerusalem, Europe/Minsk, Asia/Damascus, Europe/Moscow, Africa/Addis_Ababa, Asia/Tehran, Asia/Dubai, Asia/Yerevan, Asia/Kabul, Asia/Yekaterinburg, Asia/Tashkent, Asia/Kolkata, Asia/Katmandu, Asia/Dhaka, Asia/Novosibirsk, Asia/Rangoon, Asia/Bangkok, Asia/Krasnoyarsk, Asia/Hong_Kong, Asia/Irkutsk, Australia/Perth, Australia/Eucla, Asia/Tokyo, Asia/Seoul, Asia/Yakutsk, Australia/Adelaide, Australia/Darwin, Australia/Brisbane, Australia/Hobart, Asia/Vladivostok, Australia/Lord_Howe, Etc/GMT-11, Asia/Magadan, Pacific/Norfolk, Asia/Anadyr, Pacific/Auckland, Etc/GMT-12, Pacific/Chatham, Pacific/Tongatapu, Pacific/Kiritimati