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_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_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_font
required
uuid
A uuid associated with a font. Valid values can be found in the fonts section.
forms_label
required
string
A label to identify this item
forms_link
required
string
A string representing a link. Clicking the countdown will redirect to this link.
forms_message
optional
string
A string shown above the countdown timer, which can explain the reason for the countdown timer.
forms_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_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.
forms_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.
Returns
Returns and object that includes the Item Number.
POST https://api.shuuraku.com/v1/Countdown/Create
curl -X POST \
-H "Authorization: Bearer abcdef1234567890" \
-d forms_colour=#000000 \
-d forms_date_time="2026-05-23 18:52:01" \
-d forms_expired_message="Countdown complete" \
-d forms_font="00000000-0000-4000-a000-000000000001" \
-d forms_label="My Countdown" \
-d forms_link="https://www.shuuraku.com" \
-d forms_message="Countdown to my event" \
-d forms_show_labels=1 \
-d forms_size=36 \
-d forms_timezone=America/New_York \
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_date_time: "2026-05-23 18:52:01",
        forms_expired_message: "Countdown complete",
        forms_font: "00000000-0000-4000-a000-000000000001",
        forms_label: "My Countdown",
        forms_link: "https://www.shuuraku.com",
        forms_message: "Countdown to my event",
        forms_show_labels: "1",
        forms_size: "36",
        forms_timezone: "America/New_York"
    },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();
$data = array(
    'forms_colour' => '#000000',
    'forms_date_time' => '2026-05-23 18:52:01',
    'forms_expired_message' => 'Countdown complete',
    'forms_font' => '00000000-0000-4000-a000-000000000001',
    'forms_label' => 'My Countdown',
    'forms_link' => 'https://www.shuuraku.com',
    'forms_message' => 'Countdown to my event',
    'forms_show_labels' => '1',
    'forms_size' => '36',
    'forms_timezone' => 'America/New_York'
);

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_date_time", "2026-05-23 18:52:01")
    data.Set("forms_expired_message", "Countdown complete")
    data.Set("forms_font", "00000000-0000-4000-a000-000000000001")
    data.Set("forms_label", "My Countdown")
    data.Set("forms_link", "https://www.shuuraku.com")
    data.Set("forms_message", "Countdown to my event")
    data.Set("forms_show_labels", "1")
    data.Set("forms_size", "36")
    data.Set("forms_timezone", "America/New_York")

    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_date_time': '2026-05-23 18:52:01',
    'forms_expired_message': 'Countdown complete',
    'forms_font': '00000000-0000-4000-a000-000000000001',
    'forms_label': 'My Countdown',
    'forms_link': 'https://www.shuuraku.com',
    'forms_message': 'Countdown to my event',
    'forms_show_labels': '1',
    'forms_size': '36',
    'forms_timezone': 'America/New_York'
}
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_date_time" => "2026-05-23 18:52:01",
    "forms_expired_message" => "Countdown complete",
    "forms_font" => "00000000-0000-4000-a000-000000000001",
    "forms_label" => "My Countdown",
    "forms_link" => "https://www.shuuraku.com",
    "forms_message" => "Countdown to my event",
    "forms_show_labels" => "1",
    "forms_size" => "36",
    "forms_timezone" => "America/New_York"
})
request["Authorization"] = "Bearer abcdef1234567890"

response = https.request(request)
puts response.read_body
{"result":{"id_item":"00000000-0000-4000-a000-000000000002","url":"https://www.shuuraku.com/countdown/abcdefg1234567890.gif"}}
Create A Github Metrics Item
Create a Github Metrics item that tracks pull request, commit, and review activity for selected developers across all repositories in a Github organization or a specific list of repositories.
Arguments
forms_github_metrics_repository_name
optional
array
An array of repository names (in the form owner/repo) to include when forms_github_metrics_source is set to specific. Required when the source is specific; ignored when the source is all.
forms_github_metrics_source
required
string
The data source for the metrics. Valid values are all (track activity across the entire organization) or specific (track activity only across the repositories listed in forms_github_metrics_repository_name).
forms_github_metrics_user_name
required
array
An array of Github usernames (logins) of the developers to track. At least one developer is required and the total number of developers across all items must not exceed your plan's seat limit.
forms_github_org_name
optional
string
The Github organization name (e.g. my-github-org). Provide the organization that owns the repositories to track. Leave empty when tracking repositories belonging to a personal account.
forms_github_token
required
string
A Github Personal Access Token used to query the Github API. The token requires repo and read:org scopes.
forms_label
required
string
A label to identify this item
Returns
Returns an object that includes the Item Number.
POST https://api.shuuraku.com/v1/GithubMetrics/Create
curl -X POST \
-H "Authorization: Bearer abcdef1234567890" \
-d "forms_github_metrics_repository_name[]=my-github-org/repo-one" \
-d "forms_github_metrics_repository_name[]=my-github-org/repo-two" \
-d forms_github_metrics_source=specific \
-d "forms_github_metrics_user_name[]=octocat" \
-d "forms_github_metrics_user_name[]=hubot" \
-d forms_github_org_name=my-github-org \
-d forms_github_token=ghp_abcdef1234567890 \
-d forms_label="My Github Metrics" \
https://api.shuuraku.com/v1/GithubMetrics/Create
$.ajax({
    url: "https://api.shuuraku.com/v1/GithubMetrics/Create",
    type: "POST",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    traditional: false,
    data: {
        forms_github_metrics_repository_name: ["my-github-org/repo-one", "my-github-org/repo-two"],
        forms_github_metrics_source: "specific",
        forms_github_metrics_user_name: ["octocat", "hubot"],
        forms_github_org_name: "my-github-org",
        forms_github_token: "ghp_abcdef1234567890",
        forms_label: "My Github Metrics"
    },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();
$data = array(
    'forms_github_metrics_repository_name' => array('my-github-org/repo-one', 'my-github-org/repo-two'),
    'forms_github_metrics_source' => 'specific',
    'forms_github_metrics_user_name' => array('octocat', 'hubot'),
    'forms_github_org_name' => 'my-github-org',
    'forms_github_token' => 'ghp_abcdef1234567890',
    'forms_label' => 'My Github Metrics'
);

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/GithubMetrics/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.Add("forms_github_metrics_repository_name[]", "my-github-org/repo-one")
    data.Add("forms_github_metrics_repository_name[]", "my-github-org/repo-two")
    data.Set("forms_github_metrics_source", "specific")
    data.Add("forms_github_metrics_user_name[]", "octocat")
    data.Add("forms_github_metrics_user_name[]", "hubot")
    data.Set("forms_github_org_name", "my-github-org")
    data.Set("forms_github_token", "ghp_abcdef1234567890")
    data.Set("forms_label", "My Github Metrics")

    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/GithubMetrics/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/GithubMetrics/Create'
payload = {
    'forms_github_metrics_repository_name[]': ['my-github-org/repo-one', 'my-github-org/repo-two'],
    'forms_github_metrics_source': 'specific',
    'forms_github_metrics_user_name[]': ['octocat', 'hubot'],
    'forms_github_org_name': 'my-github-org',
    'forms_github_token': 'ghp_abcdef1234567890',
    'forms_label': 'My Github Metrics'
}
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/GithubMetrics/Create")

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

request = Net::HTTP::Post.new(url)
request.set_form_data({
    "forms_github_metrics_repository_name[]" => ["my-github-org/repo-one", "my-github-org/repo-two"],
    "forms_github_metrics_source" => "specific",
    "forms_github_metrics_user_name[]" => ["octocat", "hubot"],
    "forms_github_org_name" => "my-github-org",
    "forms_github_token" => "ghp_abcdef1234567890",
    "forms_label" => "My Github Metrics"
})
request["Authorization"] = "Bearer abcdef1234567890"

response = https.request(request)
puts response.read_body
{"result":{"id_item":"00000000-0000-4000-a000-000000000005"}}
Discover Github Metrics Resources
Look up the GitHub members and repositories available to a personal access token for a given organization. Use this endpoint to populate forms_github_metrics_user_name and forms_github_metrics_repository_name when calling /GithubMetrics/Create.
Arguments
forms_github_org_name
required
string
The GitHub organization login (e.g. my-org).
forms_github_token
required
string
A GitHub personal access token with read access to the organization, its members, and its repositories.
Returns
An object containing users (members of the organization with their login and avatar URL) and repositories (non-archived repositories with their full_name, name, and visibility).
GET https://api.shuuraku.com/v1/GithubMetrics/Discover
curl -X GET \
-H "Authorization: Bearer abcdef1234567890" \
-G \
--data-urlencode "forms_github_org_name=my-org" \
--data-urlencode "forms_github_token=ghp_abcdef1234567890" \
https://api.shuuraku.com/v1/GithubMetrics/Discover
$.ajax({
    url: "https://api.shuuraku.com/v1/GithubMetrics/Discover",
    type: "GET",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    data: {
        forms_github_org_name: "my-org",
        forms_github_token: "ghp_abcdef1234567890"
    },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();
$query = http_build_query(array(
    'forms_github_org_name' => 'my-org',
    'forms_github_token' => 'ghp_abcdef1234567890'
));

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/GithubMetrics/Discover?' . $query,
    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"
    "net/http"
    "net/url"
    "io/ioutil"
)

func main() {
    params := url.Values{}
    params.Set("forms_github_org_name", "my-org")
    params.Set("forms_github_token", "ghp_abcdef1234567890")

    client := &http.Client{}
    req, err := http.NewRequest("GET", "https://api.shuuraku.com/v1/GithubMetrics/Discover?" + params.Encode(), 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/GithubMetrics/Discover'
params = {
    'forms_github_org_name': 'my-org',
    'forms_github_token': 'ghp_abcdef1234567890'
}
headers = {
    'Authorization': 'Bearer abcdef1234567890'
}
response = requests.request('GET', url, headers = headers, params = params, allow_redirects=False)
print(response.text)
require "uri"
require "net/http"

url = URI("https://api.shuuraku.com/v1/GithubMetrics/Discover")
url.query = URI.encode_www_form({
    "forms_github_org_name" => "my-org",
    "forms_github_token" => "ghp_abcdef1234567890"
})

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":{"users":[{"login":"jane-smith","avatar":"https://avatars.githubusercontent.com/u/1?v=4"},{"login":"john-doe","avatar":"https://avatars.githubusercontent.com/u/2?v=4"}],"repositories":[{"full_name":"my-org/api","name":"api","private":true},{"full_name":"my-org/web","name":"web","private":false}]}}
Create A Gitlab Metrics Item
Create a Gitlab Metrics item that tracks merge request, commit, and review activity for selected developers across all projects in a Gitlab namespace or a specific list of projects.
Arguments
forms_gitlab_base_url
required
string
The Gitlab base URL to query. Use https://gitlab.com for Gitlab SaaS or your self-managed instance URL.
forms_gitlab_metrics_repository_name
optional
array
An array of Gitlab project full paths (in the form namespace/project) to include when forms_gitlab_metrics_source is set to specific. Required when the source is specific; ignored when the source is all.
forms_gitlab_metrics_source
required
string
The data source for the metrics. Valid values are all (track activity across all projects in scope) or specific (track activity only across the projects listed in forms_gitlab_metrics_repository_name).
forms_gitlab_metrics_user_name
required
array
An array of Gitlab usernames of the developers to track. At least one developer is required and the total number of developers across all items must not exceed your plan's seat limit.
forms_gitlab_namespace_name
required
string
The Gitlab username or group name that owns the projects to track (e.g. my-group or username).
forms_gitlab_project_scope
required
string
The scope used to list projects. Valid values are group (projects under a group namespace) or user (projects under a personal namespace).
forms_gitlab_token
required
string
A Gitlab Personal Access Token used to query the Gitlab API. Typical scopes required are read_api and read_repository.
forms_label
required
string
A label to identify this item
Returns
Returns an object that includes the Item Number.
POST https://api.shuuraku.com/v1/GitlabMetrics/Create
curl -X POST \
-H "Authorization: Bearer abcdef1234567890" \
-d forms_gitlab_base_url=https://gitlab.com \
-d "forms_gitlab_metrics_repository_name[]=my-group/project-one" \
-d "forms_gitlab_metrics_repository_name[]=my-group/project-two" \
-d forms_gitlab_metrics_source=specific \
-d "forms_gitlab_metrics_user_name[]=alice" \
-d "forms_gitlab_metrics_user_name[]=bob" \
-d forms_gitlab_namespace_name=my-group \
-d forms_gitlab_project_scope=group \
-d forms_gitlab_token=glpat-abcdef1234567890 \
-d forms_label="My Gitlab Metrics" \
https://api.shuuraku.com/v1/GitlabMetrics/Create
$.ajax({
    url: "https://api.shuuraku.com/v1/GitlabMetrics/Create",
    type: "POST",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    traditional: false,
    data: {
        forms_gitlab_base_url: "https://gitlab.com",
        forms_gitlab_metrics_repository_name: ["my-group/project-one", "my-group/project-two"],
        forms_gitlab_metrics_source: "specific",
        forms_gitlab_metrics_user_name: ["alice", "bob"],
        forms_gitlab_namespace_name: "my-group",
        forms_gitlab_project_scope: "group",
        forms_gitlab_token: "glpat-abcdef1234567890",
        forms_label: "My Gitlab Metrics"
    },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();
$data = array(
    'forms_gitlab_base_url' => 'https://gitlab.com',
    'forms_gitlab_metrics_repository_name' => array('my-group/project-one', 'my-group/project-two'),
    'forms_gitlab_metrics_source' => 'specific',
    'forms_gitlab_metrics_user_name' => array('alice', 'bob'),
    'forms_gitlab_namespace_name' => 'my-group',
    'forms_gitlab_project_scope' => 'group',
    'forms_gitlab_token' => 'glpat-abcdef1234567890',
    'forms_label' => 'My Gitlab Metrics'
);

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/GitlabMetrics/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_gitlab_base_url", "https://gitlab.com")
    data.Add("forms_gitlab_metrics_repository_name[]", "my-group/project-one")
    data.Add("forms_gitlab_metrics_repository_name[]", "my-group/project-two")
    data.Set("forms_gitlab_metrics_source", "specific")
    data.Add("forms_gitlab_metrics_user_name[]", "alice")
    data.Add("forms_gitlab_metrics_user_name[]", "bob")
    data.Set("forms_gitlab_namespace_name", "my-group")
    data.Set("forms_gitlab_project_scope", "group")
    data.Set("forms_gitlab_token", "glpat-abcdef1234567890")
    data.Set("forms_label", "My Gitlab Metrics")

    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/GitlabMetrics/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/GitlabMetrics/Create'
payload = {
    'forms_gitlab_base_url': 'https://gitlab.com',
    'forms_gitlab_metrics_repository_name[]': ['my-group/project-one', 'my-group/project-two'],
    'forms_gitlab_metrics_source': 'specific',
    'forms_gitlab_metrics_user_name[]': ['alice', 'bob'],
    'forms_gitlab_namespace_name': 'my-group',
    'forms_gitlab_project_scope': 'group',
    'forms_gitlab_token': 'glpat-abcdef1234567890',
    'forms_label': 'My Gitlab Metrics'
}
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/GitlabMetrics/Create")

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

request = Net::HTTP::Post.new(url)
request.set_form_data({
    "forms_gitlab_base_url" => "https://gitlab.com",
    "forms_gitlab_metrics_repository_name[]" => ["my-group/project-one", "my-group/project-two"],
    "forms_gitlab_metrics_source" => "specific",
    "forms_gitlab_metrics_user_name[]" => ["alice", "bob"],
    "forms_gitlab_namespace_name" => "my-group",
    "forms_gitlab_project_scope" => "group",
    "forms_gitlab_token" => "glpat-abcdef1234567890",
    "forms_label" => "My Gitlab Metrics"
})
request["Authorization"] = "Bearer abcdef1234567890"

response = https.request(request)
puts response.read_body
{"result":{"id_item":"00000000-0000-4000-a000-000000000006"}}
Discover Gitlab Metrics Resources
Look up the GitLab members and projects available to a personal access token for a given group or user namespace. Use this endpoint to populate forms_gitlab_metrics_user_name and forms_gitlab_metrics_repository_name when calling /GitlabMetrics/Create.
Arguments
forms_gitlab_base_url
required
string
The GitLab origin URL (e.g. https://gitlab.com or your self-hosted instance).
forms_gitlab_namespace_name
required
string
The group path or username to discover. For groups this is the full group path (e.g. my-group or my-group/sub-group); for users this is the GitLab username.
forms_gitlab_project_scope
required
string
Whether the namespace is a group or a user.
forms_gitlab_token
required
string
A GitLab personal access token with read_api scope on the namespace.
Returns
An object containing users (members of the group or projects with their login and avatar URL) and projects (non-archived projects with their path_with_namespace, name, and visibility).
GET https://api.shuuraku.com/v1/GitlabMetrics/Discover
curl -X GET \
-H "Authorization: Bearer abcdef1234567890" \
-G \
--data-urlencode "forms_gitlab_base_url=https://gitlab.com" \
--data-urlencode "forms_gitlab_namespace_name=my-group" \
--data-urlencode "forms_gitlab_project_scope=group" \
--data-urlencode "forms_gitlab_token=glpat-abcdef1234567890" \
https://api.shuuraku.com/v1/GitlabMetrics/Discover
$.ajax({
    url: "https://api.shuuraku.com/v1/GitlabMetrics/Discover",
    type: "GET",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    data: {
        forms_gitlab_base_url: "https://gitlab.com",
        forms_gitlab_namespace_name: "my-group",
        forms_gitlab_project_scope: "group",
        forms_gitlab_token: "glpat-abcdef1234567890"
    },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();
$query = http_build_query(array(
    'forms_gitlab_base_url' => 'https://gitlab.com',
    'forms_gitlab_namespace_name' => 'my-group',
    'forms_gitlab_project_scope' => 'group',
    'forms_gitlab_token' => 'glpat-abcdef1234567890'
));

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/GitlabMetrics/Discover?' . $query,
    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"
    "net/http"
    "net/url"
    "io/ioutil"
)

func main() {
    params := url.Values{}
    params.Set("forms_gitlab_base_url", "https://gitlab.com")
    params.Set("forms_gitlab_namespace_name", "my-group")
    params.Set("forms_gitlab_project_scope", "group")
    params.Set("forms_gitlab_token", "glpat-abcdef1234567890")

    client := &http.Client{}
    req, err := http.NewRequest("GET", "https://api.shuuraku.com/v1/GitlabMetrics/Discover?" + params.Encode(), 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/GitlabMetrics/Discover'
params = {
    'forms_gitlab_base_url': 'https://gitlab.com',
    'forms_gitlab_namespace_name': 'my-group',
    'forms_gitlab_project_scope': 'group',
    'forms_gitlab_token': 'glpat-abcdef1234567890'
}
headers = {
    'Authorization': 'Bearer abcdef1234567890'
}
response = requests.request('GET', url, headers = headers, params = params, allow_redirects=False)
print(response.text)
require "uri"
require "net/http"

url = URI("https://api.shuuraku.com/v1/GitlabMetrics/Discover")
url.query = URI.encode_www_form({
    "forms_gitlab_base_url" => "https://gitlab.com",
    "forms_gitlab_namespace_name" => "my-group",
    "forms_gitlab_project_scope" => "group",
    "forms_gitlab_token" => "glpat-abcdef1234567890"
})

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":{"users":[{"login":"jane-smith","avatar":"https://gitlab.com/uploads/-/system/user/avatar/1/avatar.png"},{"login":"john-doe","avatar":"https://gitlab.com/uploads/-/system/user/avatar/2/avatar.png"}],"projects":[{"path_with_namespace":"my-group/api","name":"api","private":true},{"path_with_namespace":"my-group/web","name":"web","private":false}]}}
Create A Jira Metrics Item
Create a Jira Metrics item that tracks issue, story point, and workflow activity for selected developers across all projects in a Jira site or a specific list of projects.
Arguments
forms_jira_login
required
string
The email address used to authenticate against the Jira API along with forms_jira_token (e.g. you@company.com).
forms_jira_metrics_project_key
optional
array
An array of Jira project keys (e.g. ABC, XYZ) to include when forms_jira_metrics_source is set to specific. Required when the source is specific; ignored when the source is all.
forms_jira_metrics_source
required
string
The data source for the metrics. Valid values are all (track activity across all projects in the Jira site) or specific (track activity only across the projects listed in forms_jira_metrics_project_key).
forms_jira_metrics_user_account_id
required
array
An array of Jira account IDs of the developers to track. At least one developer is required and the total number of developers across all items must not exceed your plan's seat limit.
forms_jira_metrics_user_display_by_account_id
optional
object
An object that maps each Jira account ID listed in forms_jira_metrics_user_account_id to a display name (e.g. forms_jira_metrics_user_display_by_account_id[abcd1234]=John Smith). Account IDs without a mapped display name will use the account ID as the display name.
forms_jira_site
required
string
The Jira Cloud site domain (e.g. yourcompany.atlassian.net).
forms_jira_story_point_field_id
required
string
The custom field ID that stores story points in your Jira configuration (e.g. customfield_10016).
forms_jira_token
required
string
A Jira API token used to authenticate against the Jira API along with forms_jira_login.
forms_label
required
string
A label to identify this item
Returns
Returns an object that includes the Item Number.
POST https://api.shuuraku.com/v1/JiraMetrics/Create
curl -X POST \
-H "Authorization: Bearer abcdef1234567890" \
-d forms_jira_login=you@company.com \
-d "forms_jira_metrics_project_key[]=ABC" \
-d "forms_jira_metrics_project_key[]=XYZ" \
-d forms_jira_metrics_source=specific \
-d "forms_jira_metrics_user_account_id[]=557058:abc12345" \
-d "forms_jira_metrics_user_account_id[]=557058:def67890" \
-d "forms_jira_metrics_user_display_by_account_id[557058:abc12345]=John Smith" \
-d "forms_jira_metrics_user_display_by_account_id[557058:def67890]=Sarah Johnson" \
-d forms_jira_site=yourcompany.atlassian.net \
-d forms_jira_story_point_field_id=customfield_10016 \
-d forms_jira_token=abcdef1234567890 \
-d forms_label="My Jira Metrics" \
https://api.shuuraku.com/v1/JiraMetrics/Create
$.ajax({
    url: "https://api.shuuraku.com/v1/JiraMetrics/Create",
    type: "POST",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    traditional: false,
    data: {
        forms_jira_login: "you@company.com",
        forms_jira_metrics_project_key: ["ABC", "XYZ"],
        forms_jira_metrics_source: "specific",
        forms_jira_metrics_user_account_id: ["557058:abc12345", "557058:def67890"],
        forms_jira_metrics_user_display_by_account_id: { "557058:abc12345": "John Smith", "557058:def67890": "Sarah Johnson" },
        forms_jira_site: "yourcompany.atlassian.net",
        forms_jira_story_point_field_id: "customfield_10016",
        forms_jira_token: "abcdef1234567890",
        forms_label: "My Jira Metrics"
    },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();
$data = array(
    'forms_jira_login' => 'you@company.com',
    'forms_jira_metrics_project_key' => array('ABC', 'XYZ'),
    'forms_jira_metrics_source' => 'specific',
    'forms_jira_metrics_user_account_id' => array('557058:abc12345', '557058:def67890'),
    'forms_jira_metrics_user_display_by_account_id' => array('557058:abc12345' => 'John Smith', '557058:def67890' => 'Sarah Johnson'),
    'forms_jira_site' => 'yourcompany.atlassian.net',
    'forms_jira_story_point_field_id' => 'customfield_10016',
    'forms_jira_token' => 'abcdef1234567890',
    'forms_label' => 'My Jira Metrics'
);

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/JiraMetrics/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_jira_login", "you@company.com")
    data.Add("forms_jira_metrics_project_key[]", "ABC")
    data.Add("forms_jira_metrics_project_key[]", "XYZ")
    data.Set("forms_jira_metrics_source", "specific")
    data.Add("forms_jira_metrics_user_account_id[]", "557058:abc12345")
    data.Add("forms_jira_metrics_user_account_id[]", "557058:def67890")
    data.Set("forms_jira_metrics_user_display_by_account_id[557058:abc12345]", "John Smith")
    data.Set("forms_jira_metrics_user_display_by_account_id[557058:def67890]", "Sarah Johnson")
    data.Set("forms_jira_site", "yourcompany.atlassian.net")
    data.Set("forms_jira_story_point_field_id", "customfield_10016")
    data.Set("forms_jira_token", "abcdef1234567890")
    data.Set("forms_label", "My Jira Metrics")

    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/JiraMetrics/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/JiraMetrics/Create'
payload = {
    'forms_jira_login': 'you@company.com',
    'forms_jira_metrics_project_key[]': ['ABC', 'XYZ'],
    'forms_jira_metrics_source': 'specific',
    'forms_jira_metrics_user_account_id[]': ['557058:abc12345', '557058:def67890'],
    'forms_jira_metrics_user_display_by_account_id[557058:abc12345]': 'John Smith',
    'forms_jira_metrics_user_display_by_account_id[557058:def67890]': 'Sarah Johnson',
    'forms_jira_site': 'yourcompany.atlassian.net',
    'forms_jira_story_point_field_id': 'customfield_10016',
    'forms_jira_token': 'abcdef1234567890',
    'forms_label': 'My Jira Metrics'
}
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/JiraMetrics/Create")

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

request = Net::HTTP::Post.new(url)
request.set_form_data({
    "forms_jira_login" => "you@company.com",
    "forms_jira_metrics_project_key[]" => ["ABC", "XYZ"],
    "forms_jira_metrics_source" => "specific",
    "forms_jira_metrics_user_account_id[]" => ["557058:abc12345", "557058:def67890"],
    "forms_jira_metrics_user_display_by_account_id[557058:abc12345]" => "John Smith",
    "forms_jira_metrics_user_display_by_account_id[557058:def67890]" => "Sarah Johnson",
    "forms_jira_site" => "yourcompany.atlassian.net",
    "forms_jira_story_point_field_id" => "customfield_10016",
    "forms_jira_token" => "abcdef1234567890",
    "forms_label" => "My Jira Metrics"
})
request["Authorization"] = "Bearer abcdef1234567890"

response = https.request(request)
puts response.read_body
{"result":{"id_item":"00000000-0000-4000-a000-000000000007"}}
Discover Jira Metrics Resources
Look up the Jira users, projects, and custom fields available to a Jira API token for a given Jira Cloud site. Use this endpoint to populate forms_jira_metrics_user_account_id, forms_jira_metrics_user_display_by_account_id, forms_jira_metrics_project_key, and forms_jira_story_point_field_id when calling /JiraMetrics/Create.
Arguments
forms_jira_login
required
string
The email address used to authenticate against the Jira API along with forms_jira_token (e.g. you@company.com).
forms_jira_site
required
string
The Jira Cloud site domain (e.g. yourcompany.atlassian.net).
forms_jira_token
required
string
A Jira API token used to authenticate against the Jira API along with forms_jira_login.
Returns
An object containing users (with account_id, display_name, email, and avatar URL), projects (with id, key, name, and project_type), story_point_fields (custom fields whose name contains "story"), and all_custom_fields (every custom field on the site).
GET https://api.shuuraku.com/v1/JiraMetrics/Discover
curl -X GET \
-H "Authorization: Bearer abcdef1234567890" \
-G \
--data-urlencode "forms_jira_login=you@company.com" \
--data-urlencode "forms_jira_site=yourcompany.atlassian.net" \
--data-urlencode "forms_jira_token=abcdef1234567890" \
https://api.shuuraku.com/v1/JiraMetrics/Discover
$.ajax({
    url: "https://api.shuuraku.com/v1/JiraMetrics/Discover",
    type: "GET",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    data: {
        forms_jira_login: "you@company.com",
        forms_jira_site: "yourcompany.atlassian.net",
        forms_jira_token: "abcdef1234567890"
    },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();
$query = http_build_query(array(
    'forms_jira_login' => 'you@company.com',
    'forms_jira_site' => 'yourcompany.atlassian.net',
    'forms_jira_token' => 'abcdef1234567890'
));

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/JiraMetrics/Discover?' . $query,
    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"
    "net/http"
    "net/url"
    "io/ioutil"
)

func main() {
    params := url.Values{}
    params.Set("forms_jira_login", "you@company.com")
    params.Set("forms_jira_site", "yourcompany.atlassian.net")
    params.Set("forms_jira_token", "abcdef1234567890")

    client := &http.Client{}
    req, err := http.NewRequest("GET", "https://api.shuuraku.com/v1/JiraMetrics/Discover?" + params.Encode(), 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/JiraMetrics/Discover'
params = {
    'forms_jira_login': 'you@company.com',
    'forms_jira_site': 'yourcompany.atlassian.net',
    'forms_jira_token': 'abcdef1234567890'
}
headers = {
    'Authorization': 'Bearer abcdef1234567890'
}
response = requests.request('GET', url, headers = headers, params = params, allow_redirects=False)
print(response.text)
require "uri"
require "net/http"

url = URI("https://api.shuuraku.com/v1/JiraMetrics/Discover")
url.query = URI.encode_www_form({
    "forms_jira_login" => "you@company.com",
    "forms_jira_site" => "yourcompany.atlassian.net",
    "forms_jira_token" => "abcdef1234567890"
})

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":{"users":[{"account_id":"557058:abc12345","display_name":"John Smith","email":"john@company.com","avatar":"https://secure.gravatar.com/avatar/abc"},{"account_id":"557058:def67890","display_name":"Sarah Johnson","email":"sarah@company.com","avatar":"https://secure.gravatar.com/avatar/def"}],"projects":[{"id":"10001","key":"ABC","name":"Alpha","project_type":"software"},{"id":"10002","key":"XYZ","name":"Xenon","project_type":"software"}],"story_point_fields":[{"id":"customfield_10016","name":"Story Points"}],"all_custom_fields":[{"id":"customfield_10016","name":"Story Points"},{"id":"customfield_10020","name":"Sprint"}]}}
Create A Product Banner
Create a custom product banner that can showcase a product with an image, title, brand, price, and description. Product banners can be customized with colors, fonts, and various style layouts.
Arguments
forms_brand
optional
string
A string representing the brand name to display on the product banner.
forms_colour
required
string
A hex value starting with a "#" character for the product banner color
forms_description
optional
string
A string describing the product, with a maximum of 500 characters.
forms_font
required
uuid
A uuid associated with a font. Valid values can be found in the fonts section.
forms_image
optional
string
A base64 encoded image of the product to display on the product banner.
forms_label
required
string
A label to identify this item
forms_link
required
string
A string representing a link. Clicking the product banner will redirect to this link.
forms_price
optional
string
A string representing the price of the product to display on the product banner (e.g. "$19.99").
forms_style
required
integer
A number value used to set the product banner style/layout
forms_title
optional
string
A string representing the title of the product to display on the product banner.
Returns
Returns an object that includes the Item Number and URL.
POST https://api.shuuraku.com/v1/ProductBanner/Create
curl -X POST \
-H "Authorization: Bearer abcdef1234567890" \
-d forms_brand="Acme Co." \
-d forms_colour=#000000 \
-d forms_description="A great product you will love" \
-d forms_font="00000000-0000-4000-a000-000000000001" \
-d forms_image="iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=" \
-d forms_label="My Product Banner" \
-d forms_link="https://www.shuuraku.com" \
-d forms_price="$19.99" \
-d forms_style=4 \
-d forms_title="Premium Product" \
https://api.shuuraku.com/v1/ProductBanner/Create
$.ajax({
    url: "https://api.shuuraku.com/v1/ProductBanner/Create",
    type: "POST",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    data: {
        forms_brand: "Acme Co.",
        forms_colour: "#000000",
        forms_description: "A great product you will love",
        forms_font: "00000000-0000-4000-a000-000000000001",
        forms_image: "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=",         forms_label: "My Product Banner",
        forms_link: "https://www.shuuraku.com",
        forms_price: "$19.99",
        forms_style: "4",
        forms_title: "Premium Product"
    },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();
$data = array(
    'forms_brand' => 'Acme Co.',
    'forms_colour' => '#000000',
    'forms_description' => 'A great product you will love',
    'forms_font' => '00000000-0000-4000-a000-000000000001',
    'forms_image' => 'iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=",     'forms_label' => 'My Product Banner',
    'forms_link' => 'https://www.shuuraku.com',
    'forms_price' => '$19.99',
    'forms_style' => '4',
    'forms_title' => 'Premium Product'
);

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/ProductBanner/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_brand", "Acme Co.")
    data.Set("forms_colour", "#000000")
    data.Set("forms_description", "A great product you will love")
    data.Set("forms_font", "00000000-0000-4000-a000-000000000001")
    data.Set("forms_image", "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=")
    data.Set("forms_label", "My Product Banner")
    data.Set("forms_link", "https://www.shuuraku.com")
    data.Set("forms_price", "$19.99")
    data.Set("forms_style", "4")
    data.Set("forms_title", "Premium Product")

    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/ProductBanner/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/ProductBanner/Create'
payload = {
    'forms_brand': 'Acme Co.',
    'forms_colour': '#000000',
    'forms_description': 'A great product you will love',
    'forms_font': '00000000-0000-4000-a000-000000000001',
    'forms_image': 'iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=",     'forms_label': 'My Product Banner',
    'forms_link': 'https://www.shuuraku.com',
    'forms_price': '$19.99',
    'forms_style': '4',
    'forms_title': 'Premium Product'
}
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/ProductBanner/Create")

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

request = Net::HTTP::Post.new(url)
request.set_form_data({
    "forms_brand" => "Acme Co.",
    "forms_colour" => "#000000",
    "forms_description" => "A great product you will love",
    "forms_font" => "00000000-0000-4000-a000-000000000001",
    "forms_image" => "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=",     "forms_label" => "My Product Banner",
    "forms_link" => "https://www.shuuraku.com",
    "forms_price" => "$19.99",
    "forms_style" => "4",
    "forms_title" => "Premium Product"
})
request["Authorization"] = "Bearer abcdef1234567890"

response = https.request(request)
puts response.read_body
{"result":{"id_item":"00000000-0000-4000-a000-000000000004","url":"https://www.shuuraku.com/productbanner/abcdefg1234567890"}}
Create A QR Code
Create a custom QR code that can encode URLs, text, or other data types. The QR code can be customized with colors, fonts, and optional logos.
Arguments
forms_colour
required
string
A hex value starting with a "#" character for the QR code color
forms_data
required
string
The data to encode in the QR code (URL, text, email, etc.)
forms_data_type
required
string
The type of data to encode (e.g., "url", "text", "email", "phone")
forms_font
required
uuid
A uuid associated with a font. Valid values can be found in the fonts section.
forms_integrated_logo
optional
integer
"1" to weave the supplied logo image into the QR code modules themselves (an "image-as-QR" mosaic) or "0" to overlay the logo as a centred badge. Requires forms_logo to be supplied. This parameter can only be used if you are on an "Enterprise" plan.
forms_label
required
string
A label to identify this item
forms_logo
optional
string
A base64 encoded image (no more than 150x150 pixels) to overlay on the QR code. This parameter can only be used if you are on a "Small", "Mid", or "Enterprise" plan.
forms_message
optional
string
A string shown above the QR code, which can explain the purpose of the QR code.
forms_size
required
integer
A number value used to set the font size. Valid values can be found in the font sizes section.
forms_time_ranges
optional
array
An array of time ranges to show different links at different times of day. Each time range should include start, end, and data. Example: [{"start":"09:00","end":"17:00","data":"https://www.shuuraku.com/business"},{"start":"17:00","end":"09:00","data":"https://www.shuuraku.com/after-hours"}]. This parameter can only be used if you are on a "Mid" or "Enterprise" plan.
forms_timezone
optional
string
A string signifying the timezone. Valid values can be found in the timezones section. This parameter can only be used if you are on a "Mid" or "Enterprise" plan.
Returns
Returns an object that includes the Item Number and URL.
POST https://api.shuuraku.com/v1/QRCode/Create
curl -X POST \
-H "Authorization: Bearer abcdef1234567890" \
-d forms_colour=#000000 \
-d forms_data="https://www.shuuraku.com" \
-d forms_data_type=url \
-d forms_font="00000000-0000-4000-a000-000000000001" \
-d forms_integrated_logo=1 \
-d forms_label="My QR Code" \
-d forms_logo="iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=" \
-d forms_message="Scan to visit us" \
-d forms_size=36 \
-d forms_time_ranges='[{"start":"09:00","end":"17:00","data":"https://www.shuuraku.com/business"},{"start":"17:00","end":"09:00","data":"https://www.shuuraku.com/after-hours"}]' \
-d forms_timezone=America/New_York \
https://api.shuuraku.com/v1/QRCode/Create
$.ajax({
    url: "https://api.shuuraku.com/v1/QRCode/Create",
    type: "POST",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    data: {
        forms_colour: "#000000",
        forms_data: "https://www.shuuraku.com",
        forms_data_type: "url",
        forms_font: "00000000-0000-4000-a000-000000000001",
        forms_integrated_logo: "1",
        forms_label: "My QR Code",
        forms_logo: "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=",         forms_message: "Scan to visit us",
        forms_size: "36",
        forms_time_ranges: '[{"start":"09:00","end":"17:00","data":"https://www.shuuraku.com/business"},{"start":"17:00","end":"09:00","data":"https://www.shuuraku.com/after-hours"}]',
        forms_timezone: "America/New_York"
    },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();
$data = array(
    'forms_colour' => '#000000',
    'forms_data' => 'https://www.shuuraku.com',
    'forms_data_type' => 'url',
    'forms_font' => '00000000-0000-4000-a000-000000000001',
    'forms_integrated_logo' => '1',
    'forms_label' => 'My QR Code',
    'forms_logo' => 'iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=",     'forms_message' => 'Scan to visit us',
    'forms_size' => '36',
    'forms_time_ranges' => '[{"start":"09:00","end":"17:00","data":"https://www.shuuraku.com/business"},{"start":"17:00","end":"09:00","data":"https://www.shuuraku.com/after-hours"}]',
    'forms_timezone' => 'America/New_York'
);

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/QRCode/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_data", "https://www.shuuraku.com")
    data.Set("forms_data_type", "url")
    data.Set("forms_font", "00000000-0000-4000-a000-000000000001")
    data.Set("forms_integrated_logo", "1")
    data.Set("forms_label", "My QR Code")
    data.Set("forms_logo", "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=")
    data.Set("forms_message", "Scan to visit us")
    data.Set("forms_size", "36")
    data.Set("forms_time_ranges", `[{"start":"09:00","end":"17:00","data":"https://www.shuuraku.com/business"},{"start":"17:00","end":"09:00","data":"https://www.shuuraku.com/after-hours"}]`)
    data.Set("forms_timezone", "America/New_York")

    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/QRCode/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/QRCode/Create'
payload = {
    'forms_colour': '#000000',
    'forms_data': 'https://www.shuuraku.com',
    'forms_data_type': 'url',
    'forms_font': '00000000-0000-4000-a000-000000000001',
    'forms_integrated_logo': '1',
    'forms_label': 'My QR Code',
    'forms_logo': 'iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=",     'forms_message': 'Scan to visit us',
    'forms_size': '36',
    'forms_time_ranges': '[{"start":"09:00","end":"17:00","data":"https://www.shuuraku.com/business"},{"start":"17:00","end":"09:00","data":"https://www.shuuraku.com/after-hours"}]',
    'forms_timezone': 'America/New_York'
}
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/QRCode/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_data" => "https://www.shuuraku.com",
    "forms_data_type" => "url",
    "forms_font" => "00000000-0000-4000-a000-000000000001",
    "forms_integrated_logo" => "1",
    "forms_label" => "My QR Code",
    "forms_logo" => "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=",     "forms_message" => "Scan to visit us",
    "forms_size" => "36",
    "forms_time_ranges" => '[{"start":"09:00","end":"17:00","data":"https://www.shuuraku.com/business"},{"start":"17:00","end":"09:00","data":"https://www.shuuraku.com/after-hours"}]',
    "forms_timezone" => "America/New_York"
})
request["Authorization"] = "Bearer abcdef1234567890"

response = https.request(request)
puts response.read_body
{"result":{"id_item":"00000000-0000-4000-a000-000000000002","url":"https://www.shuuraku.com/qrcode/abcdefg1234567890"}}
Create A Signature
Create a custom email signature that can include company logos, social media links, and personalized employee information. Signatures can be customized with colors, fonts, and various styling options.
Arguments
forms_colour
required
string
A hex value starting with a "#" character for the signature color
forms_employee_list
optional
array
An array representing employee information to include in the signature. Each entry should include signature_employee_identifier (unique employee ID), signature_data_1 (i.e. name), signature_data_2 (i.e. title), and signature_data_3 (i.e. email/phone). Example: [{"signature_employee_identifier":"12345","signature_data_1":"John Smith","signature_data_2":"john.smith@company.com","signature_data_3":"+1-555-123-4567"},{"signature_employee_identifier":"67890","signature_data_1":"Sarah Johnson","signature_data_2":"sarah.johnson@company.com","signature_data_3":"+1-555-987-6543"}]. This parameter can only be used if you are on an "Enterprise" plan.
forms_font
required
uuid
A uuid associated with a font. Valid values can be found in the fonts section.
forms_label
required
string
A label to identify this item
forms_link
required
string
A string representing a link. Clicking the signature will redirect to this link.
forms_logo
optional
string
A base64 encoded image (no more than 150x150 pixels) to include in the signature.
forms_message
optional
string
A string shown in the signature, which can include company information or taglines. This parameter can only be used if you are on a "Basic", "Mid", or "Enterprise" plan.
forms_social_list
optional
array
An array representing social media links in a 3-column by 5-row grid layout (positions 1-15). Each entry should include columnLength (how many grid spaces the link occupies), displayText (text to display), icon (social media icon identifier), link (URL), and position (grid position 1-15). Valid icon values can be found in the icons section. Example: [{"columnLength":1,"displayText":"Follow us","icon":"00000000-0000-4000-a000-000000000001","link":"https://facebook.com/company","position":1},{"columnLength":2,"displayText":"Tweet us","icon":"00000000-0000-4000-a000-000000000002","link":"https://twitter.com/company","position":2}]. This parameter can only be used if you are on a "Mid" or "Enterprise" plan.
forms_style
required
integer
A number value used to set the signature style/layout
Returns
Returns an object that includes the Item Number and URL.
POST https://api.shuuraku.com/v1/Signature/Create
curl -X POST \
-H "Authorization: Bearer abcdef1234567890" \
-d forms_colour=#000000 \
-d forms_employee_list='[{"signature_employee_identifier":"12345","signature_data_1":"John Smith","signature_data_2":"john.smith@company.com","signature_data_3":"+1-555-123-4567"},{"signature_employee_identifier":"67890","signature_data_1":"Sarah Johnson","signature_data_2":"sarah.johnson@company.com","signature_data_3":"+1-555-987-6543"}]' \
-d forms_font="00000000-0000-4000-a000-000000000001" \
-d forms_label="Company Signature" \
-d forms_link="https://www.shuuraku.com" \
-d forms_logo="iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=" \
-d forms_message="Building amazing digital experiences" \
-d forms_social_list='[{"columnLength":1,"displayText":"Follow us","icon":"a7b4a403-1286-4fd3-9818-76189cba204c","link":"https://facebook.com/company","position":1},{"columnLength":1,"displayText":"Tweet us","icon":"bc4d2192-71e3-41d1-b9e9-966d7a4873fe","link":"https://twitter.com/company","position":2}]' \
-d forms_style=1 \
https://api.shuuraku.com/v1/Signature/Create
$.ajax({
    url: "https://api.shuuraku.com/v1/Signature/Create",
    type: "POST",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer abcdef1234567890");
    },
    data: {
        forms_colour: "#000000",
        forms_employee_list: '[{"signature_employee_identifier":"12345","signature_data_1":"John Smith","signature_data_2":"john.smith@company.com","signature_data_3":"+1-555-123-4567"},{"signature_employee_identifier":"67890","signature_data_1":"Sarah Johnson","signature_data_2":"sarah.johnson@company.com","signature_data_3":"+1-555-987-6543"}]',
        forms_font: "00000000-0000-4000-a000-000000000001",
        forms_label: "Company Signature",
        forms_link: "https://www.shuuraku.com",
        forms_logo: "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=",         forms_message: "Building amazing digital experiences",
        forms_social_list: '[{"columnLength":1,"displayText":"Follow us","icon":"a7b4a403-1286-4fd3-9818-76189cba204c","link":"https://facebook.com/company","position":1},{"columnLength":1,"displayText":"Tweet us","icon":"bc4d2192-71e3-41d1-b9e9-966d7a4873fe","link":"https://twitter.com/company","position":2}]',
        forms_style: "1"
    },
    success: function(data) { alert("success"); },
    error: function(data) { alert("error"); }
});
<?php

$curl = curl_init();
$data = array(
    'forms_colour' => '#000000',
    'forms_employee_list' => '[{"signature_employee_identifier":"12345","signature_data_1":"John Smith","signature_data_2":"john.smith@company.com","signature_data_3":"+1-555-123-4567"},{"signature_employee_identifier":"67890","signature_data_1":"Sarah Johnson","signature_data_2":"sarah.johnson@company.com","signature_data_3":"+1-555-987-6543"}]',
    'forms_font' => '00000000-0000-4000-a000-000000000001',
    'forms_label' => 'Company Signature',
    'forms_link' => 'https://www.shuuraku.com',
    'forms_logo' => 'iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=",     'forms_message' => 'Building amazing digital experiences',
    'forms_social_list' => '[{"columnLength":1,"displayText":"Follow us","icon":"a7b4a403-1286-4fd3-9818-76189cba204c","link":"https://facebook.com/company","position":1},{"columnLength":1,"displayText":"Tweet us","icon":"bc4d2192-71e3-41d1-b9e9-966d7a4873fe","link":"https://twitter.com/company","position":2}]',
    'forms_style' => '1'
);

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.shuuraku.com/v1/Signature/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_employee_list", `[{"signature_employee_identifier":"12345","signature_data_1":"John Smith","signature_data_2":"john.smith@company.com","signature_data_3":"+1-555-123-4567"},{"signature_employee_identifier":"67890","signature_data_1":"Sarah Johnson","signature_data_2":"sarah.johnson@company.com","signature_data_3":"+1-555-987-6543"}]`)
    data.Set("forms_font", "00000000-0000-4000-a000-000000000001")
    data.Set("forms_label", "Company Signature")
    data.Set("forms_link", "https://www.shuuraku.com")
    data.Set("forms_logo", "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=")
    data.Set("forms_message", "Building amazing digital experiences")
    data.Set("forms_social_list", `[{"columnLength":1,"displayText":"Follow us","icon":"a7b4a403-1286-4fd3-9818-76189cba204c","link":"https://facebook.com/company","position":1},{"columnLength":1,"displayText":"Tweet us","icon":"bc4d2192-71e3-41d1-b9e9-966d7a4873fe","link":"https://twitter.com/company","position":2}]`)
    data.Set("forms_style", "1")

    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/Signature/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/Signature/Create'
payload = {
    'forms_colour': '#000000',
    'forms_employee_list': '[{"signature_employee_identifier":"12345","signature_data_1":"John Smith","signature_data_2":"john.smith@company.com","signature_data_3":"+1-555-123-4567"},{"signature_employee_identifier":"67890","signature_data_1":"Sarah Johnson","signature_data_2":"sarah.johnson@company.com","signature_data_3":"+1-555-987-6543"}]',
    'forms_font': '00000000-0000-4000-a000-000000000001',
    'forms_label': 'Company Signature',
    'forms_link': 'https://www.shuuraku.com',
    'forms_logo': 'iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=",     'forms_message': 'Building amazing digital experiences',
    'forms_social_list': '[{"columnLength":1,"displayText":"Follow us","icon":"a7b4a403-1286-4fd3-9818-76189cba204c","link":"https://facebook.com/company","position":1},{"columnLength":1,"displayText":"Tweet us","icon":"bc4d2192-71e3-41d1-b9e9-966d7a4873fe","link":"https://twitter.com/company","position":2}]',
    'forms_style': '1'
}
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/Signature/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_employee_list" => '[{"signature_employee_identifier":"12345","signature_data_1":"John Smith","signature_data_2":"john.smith@company.com","signature_data_3":"+1-555-123-4567"},{"signature_employee_identifier":"67890","signature_data_1":"Sarah Johnson","signature_data_2":"sarah.johnson@company.com","signature_data_3":"+1-555-987-6543"}]',
    "forms_font" => "00000000-0000-4000-a000-000000000001",
    "forms_label" => "Company Signature",
    "forms_link" => "https://www.shuuraku.com",
    "forms_logo" => "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+kHBhUVBTfmECYAAACZSURBVFjD7ZlBCsAgDARN6Vv1TfpZe/NQqCgxQens0R6yMJFNrNRaw366wpbCFrawha3TbN39zyJiVLifLkDUQ0wpvU5ijEvqlVK4ic43sSnnrCnTumJwvAOiBUSlZnsAiD/qreWZTVS7QVyV0ES1P0RlMI8McEDE1t57ovOjIRAt9kS7rR+Ix00Qg7EGxBkJP1ewhS1sfekB2MYlo2hBu20AAAAASUVORK5CYII=",     "forms_message" => "Building amazing digital experiences",
    "forms_social_list" => '[{"columnLength":1,"displayText":"Follow us","icon":"a7b4a403-1286-4fd3-9818-76189cba204c","link":"https://facebook.com/company","position":1},{"columnLength":1,"displayText":"Tweet us","icon":"bc4d2192-71e3-41d1-b9e9-966d7a4873fe","link":"https://twitter.com/company","position":2}]',
    "forms_style" => "1"
})
request["Authorization"] = "Bearer abcdef1234567890"

response = https.request(request)
puts response.read_body
{"result":{"id_item":"00000000-0000-4000-a000-000000000003","url":"https://www.shuuraku.com/signature/abcdefg1234567890"}}
Retrieve a list of all Items
Retrieve a list of all Items in summary format, which includes when the Item was created, how much the Item cost, and what the Item Number is.
Returns
Return an array of Item objects for a customer account. Each object in the array is a separate Item.
GET https://api.shuuraku.com/v1/Items
curl -X GET \
-H "Authorization: Bearer abcdef1234567890" \
https://api.shuuraku.com/v1/Items
$.ajax({
    url: "https://api.shuuraku.com/v1/Items",
    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/Items',
    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/Items"
    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/Items'
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/Items")

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_item":"00000000-0000-4000-a000-000000000000","date_created":"2026-05-19 18:52:01","item_type":"Countdown","url":"https://www.shuuraku.com/countdown/abcdefg1234567890a"},{"id_item":"00000000-0000-4000-a000-000000000001","date_created":"2026-05-19 18:52:01","item_type":"Countdown","url":"https://www.shuuraku.com/countdown/abcdefg1234567890b"},{"id_item":"00000000-0000-4000-a000-000000000002","date_created":"2026-05-19 18:52:01","item_type":"Countdown","url":"https://www.shuuraku.com/countdown/abcdefg1234567890c"}]}
Get Item Details
Get additional Item information for an Item Number including customizations made when the Item was created.
Arguments
{ITEM_ID}
required
integer
A number representing the Item you want to get details for.
Returns
Item details are returned in objects which includes core Item values and "options" includes customizations for the Item.
GET https://api.shuuraku.com/v1/Items/{ITEM_ID}
curl -X GET \
-H "Authorization: Bearer abcdef1234567890" \
https://api.shuuraku.com/v1/Items/00000000-0000-4000-a000-000000000001
$.ajax({
    url: "https://api.shuuraku.com/v1/Items/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/Items/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/Items/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/Items/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/Items/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_item":"00000000-0000-4000-a000-000000000001","date_created":"2026-05-19 18:52:01","item_type":"Countdown","options":{"colour":"#ff0000","date_time":"2026-05-19 18:52:01","expired_message":"Countdown complete","font":"1","link":"https://www.shuuraku.com","message":"Countdown to my event","show_labels":"1","size":"48","timezone":"America\/New_York"},"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":"2026-05-19 18:52:01","payment_total":"79.99"},{"id_payment":"00000000-0000-4000-a000-000000000001","date_created":"2026-05-19 18:52:01","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 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":"2026-05-19 18:52:01","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
Retrieve the plan currently associated with your account along with the monthly view quota and the developer/seat quota consumed across all metrics items.
Returns

An object describing the current plan and quota usage.

plan — the human-readable plan name (e.g. Free, Small, Mid, Enterprise).

plan_maximum_view_count — the maximum number of views allowed by the plan in the current month.

plan_maximum_view_count_exceededtrue when the account has already exceeded the monthly view quota.

current_view_count — the number of views recorded in the current month.

plan_maximum_developer_count — the maximum number of developers (seats) the plan allows across all metrics items.

current_developer_count — the number of developers currently in use across all metrics items. /JiraMetrics/Create, /GithubMetrics/Create, and /GitlabMetrics/Create will reject requests when adding their selected developers would push this value above plan_maximum_developer_count.

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,"plan_maximum_developer_count":1,"current_developer_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
Icons
0419b765-b476-4e84-8889-3fc773963d58: Apple
9516b2dd-cc20-42b2-9416-18a18158b994: Behance
adf241c4-e9be-4111-894f-a946491349af: Blogger
74e81203-fe49-4a0e-82a1-7466b9a9758c: Deviantart
8e60adf3-1307-44dd-aae6-683d4402bfba: Dribbble
815f9f20-0f2a-47e5-879a-5780c0252fcd: Drive
03be36e5-d303-4923-be9c-9dcb55c6f78f: Dropbox
79d0be1f-e4a7-4734-8a64-a6e736ae1bf6: Email
edcb708a-0edd-454e-971d-d8c502980757: Envato
7ce0bbe2-9ba5-42c3-8b17-80013e803eab: Evernote
a7b4a403-1286-4fd3-9818-76189cba204c: Facebook
12b17d39-b1f9-4a29-bdd1-c9283f95f2cc: Flickr
d45a8e08-5a12-4cd6-8368-90317b113adb: Google
c73ca1db-b3ff-406c-9b13-8e17e7aca880: Instagram
5afddeef-b9b0-4503-9fe6-d2c3b873b141: LinkedIn
5186b374-66fa-4dc2-91d2-503c9a37e91b: Messenger
0e6d390d-025c-4437-83db-d24025eae526: Paypal
dea48c65-0985-47e9-b8d1-b86bf64fff59: Pinterest
a519e9f9-950c-40bd-97a2-87cb5a0c7809: RSS
d08fc181-67ba-4832-a030-07aa632892fd: Skype
8b043d33-da58-4de5-98fe-245a96d8df4c: Slack
704dc04f-e564-4705-b266-b1935c61edd3: Snapchat
bcb36fd7-9438-4b4b-96dc-b582a12afa98: Soundcloud
7f276856-8c96-4745-9b92-bc303c98faf4: Stripe
488306b3-5ef3-4307-bfa1-7e8b6bd6123b: Tumblr
bc4d2192-71e3-41d1-b9e9-966d7a4873fe: Twitter
85c94d53-ec27-4b2d-bae4-691aa5436d81: Viber
c6af8a3f-f359-49c8-bc85-4c8f6e92a2ed: Vimeo
e0cc3491-582b-43cf-9e91-f224c2e58215: Vine
2e74497d-8e3f-4388-9ed5-5d41c5636d50: Website
5a067810-503f-4b85-b072-c64a0a045af2: Whatsapp
10a5df9f-9204-4d08-a6df-2792d5cd9b14: Window
d2473bc9-63b6-42d4-93b6-afe1f4d08a2b: X
52064bb4-4eac-42ad-ae46-1da51abe1c17: Yahoo
6d409825-d369-431f-b9e8-99ee6431dc2a: Youtube
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