curl --request GET \
--url https://playground.runa.io/v2/product/{product_code} \
--header 'X-Api-Key: <api-key>'import requests
url = "https://playground.runa.io/v2/product/{product_code}"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://playground.runa.io/v2/product/{product_code}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://playground.runa.io/v2/product/{product_code}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Api-Key: <api-key>"
],
]);
$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"
"io"
)
func main() {
url := "https://playground.runa.io/v2/product/{product_code}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://playground.runa.io/v2/product/{product_code}")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://playground.runa.io/v2/product/{product_code}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"name": "Example Merchant",
"code": "XYZ-US",
"currency": "USD",
"state": "LIVE",
"is_orderable": true,
"payout_type": "gift_card",
"categories": [
"food-and-drink",
"entertainment"
],
"countries_redeemable_in": [
"US"
],
"customer_service": {
"phone_number": "+1234567890",
"website_url": "https://merchant.example.com/customer-service"
},
"discount_multiplier": "0.05",
"availability": "realtime",
"gift_card": {
"assets": {
"card_image_url": "https://gift.runa.io/static/product_assets/XYZ-US/XYZ-US-card.png?v=1690000000",
"icon_image_url": "https://gift.runa.io/static/product_assets/XYZ-US/XYZ-US-icon.png?v=1690000000",
"primary_color": "#000000"
},
"balance_check_url": "https://merchant.example.com/balance-check",
"content_resources": {
"description_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/description.md",
"disclaimer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/disclaimer_markdown.md",
"refund_policy_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/refund_policy_markdown.md",
"reissuance_policy_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/reissuance_policy_markdown.md",
"terms_buyer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/terms_buyer.md",
"terms_consumer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/terms_consumer.md",
"redemption_instructions_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/redeem_markdown.md",
"locale": "en_US"
},
"expiry": {
"date_policy": "Expires 2 years from issue date",
"in_months": 12,
"type": "from-issue-date"
},
"redeemable_at": "all",
"website_url": "https://merchant.example.com",
"barcode_format": "code-128",
"e_code_usage_type": "url-only",
"denominations": {
"type": "fixed",
"minimum_value": "10.00",
"maximum_value": "100.00",
"available_list": [
"10.00",
"20.00",
"50.00",
"100.00"
]
}
},
"subscription": {
"assets": {
"card_image_url": "https://gift.runa.io/static/product_assets/XYZ-US/XYZ-US-card.png?v=1690000000",
"icon_image_url": "https://gift.runa.io/static/product_assets/XYZ-US/XYZ-US-icon.png?v=1690000000",
"primary_color": "#000000"
},
"balance_check_url": "https://merchant.example.com/balance-check",
"content_resources": {
"description_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/description.md",
"disclaimer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/disclaimer_markdown.md",
"refund_policy_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/refund_policy_markdown.md",
"reissuance_policy_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/reissuance_policy_markdown.md",
"terms_buyer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/terms_buyer.md",
"terms_consumer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/terms_consumer.md",
"redemption_instructions_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/redeem_markdown.md",
"locale": "en_US"
},
"expiry": {
"date_policy": "Expires 2 years from issue date",
"in_months": 12,
"type": "from-issue-date"
},
"redeemable_at": "all",
"website_url": "https://merchant.example.com",
"barcode_format": "code-128",
"e_code_usage_type": "url-only",
"subscription_plans": [
{
"length_unit": "MONTHS",
"length": 12,
"name": "3 month subscription",
"price": "10.00",
"subscription_plan_code": "XYZ-US-SUB-1"
}
]
},
"payment": {
"assets": {
"icon_image_url": "https://gift.runa.io/static/product_assets/XYZ-US/XYZ-US-icon.png?v=1690000000",
"primary_color": "#000000"
},
"denominations": {
"minimum_value": "10.00",
"maximum_value": "100.00"
},
"content_resources": {
"description_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/description.md",
"disclaimer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/disclaimer_markdown.md",
"refund_policy_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/refund_policy_markdown.md",
"reissuance_policy_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/reissuance_policy_markdown.md",
"terms_buyer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/terms_buyer.md",
"terms_consumer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/terms_consumer.md",
"redemption_instructions_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/redeem_markdown.md",
"locale": "en_US"
}
}
}{
"type": "not_found",
"message": "The requested resource was not found",
"help": "Please check the resource ID and try again."
}{
"type": "not_found",
"message": "The requested resource was not found",
"help": "Please check the resource ID and try again."
}{
"type": "not_found",
"message": "The requested resource was not found",
"help": "Please check the resource ID and try again."
}{
"type": "not_found",
"message": "The requested resource was not found",
"help": "Please check the resource ID and try again."
}{
"type": "not_found",
"message": "The requested resource was not found",
"help": "Please check the resource ID and try again."
}Get product details
Retrieve a single product’s details
Required scope: read:product
curl --request GET \
--url https://playground.runa.io/v2/product/{product_code} \
--header 'X-Api-Key: <api-key>'import requests
url = "https://playground.runa.io/v2/product/{product_code}"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://playground.runa.io/v2/product/{product_code}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://playground.runa.io/v2/product/{product_code}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Api-Key: <api-key>"
],
]);
$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"
"io"
)
func main() {
url := "https://playground.runa.io/v2/product/{product_code}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://playground.runa.io/v2/product/{product_code}")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://playground.runa.io/v2/product/{product_code}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"name": "Example Merchant",
"code": "XYZ-US",
"currency": "USD",
"state": "LIVE",
"is_orderable": true,
"payout_type": "gift_card",
"categories": [
"food-and-drink",
"entertainment"
],
"countries_redeemable_in": [
"US"
],
"customer_service": {
"phone_number": "+1234567890",
"website_url": "https://merchant.example.com/customer-service"
},
"discount_multiplier": "0.05",
"availability": "realtime",
"gift_card": {
"assets": {
"card_image_url": "https://gift.runa.io/static/product_assets/XYZ-US/XYZ-US-card.png?v=1690000000",
"icon_image_url": "https://gift.runa.io/static/product_assets/XYZ-US/XYZ-US-icon.png?v=1690000000",
"primary_color": "#000000"
},
"balance_check_url": "https://merchant.example.com/balance-check",
"content_resources": {
"description_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/description.md",
"disclaimer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/disclaimer_markdown.md",
"refund_policy_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/refund_policy_markdown.md",
"reissuance_policy_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/reissuance_policy_markdown.md",
"terms_buyer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/terms_buyer.md",
"terms_consumer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/terms_consumer.md",
"redemption_instructions_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/redeem_markdown.md",
"locale": "en_US"
},
"expiry": {
"date_policy": "Expires 2 years from issue date",
"in_months": 12,
"type": "from-issue-date"
},
"redeemable_at": "all",
"website_url": "https://merchant.example.com",
"barcode_format": "code-128",
"e_code_usage_type": "url-only",
"denominations": {
"type": "fixed",
"minimum_value": "10.00",
"maximum_value": "100.00",
"available_list": [
"10.00",
"20.00",
"50.00",
"100.00"
]
}
},
"subscription": {
"assets": {
"card_image_url": "https://gift.runa.io/static/product_assets/XYZ-US/XYZ-US-card.png?v=1690000000",
"icon_image_url": "https://gift.runa.io/static/product_assets/XYZ-US/XYZ-US-icon.png?v=1690000000",
"primary_color": "#000000"
},
"balance_check_url": "https://merchant.example.com/balance-check",
"content_resources": {
"description_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/description.md",
"disclaimer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/disclaimer_markdown.md",
"refund_policy_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/refund_policy_markdown.md",
"reissuance_policy_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/reissuance_policy_markdown.md",
"terms_buyer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/terms_buyer.md",
"terms_consumer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/terms_consumer.md",
"redemption_instructions_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/redeem_markdown.md",
"locale": "en_US"
},
"expiry": {
"date_policy": "Expires 2 years from issue date",
"in_months": 12,
"type": "from-issue-date"
},
"redeemable_at": "all",
"website_url": "https://merchant.example.com",
"barcode_format": "code-128",
"e_code_usage_type": "url-only",
"subscription_plans": [
{
"length_unit": "MONTHS",
"length": 12,
"name": "3 month subscription",
"price": "10.00",
"subscription_plan_code": "XYZ-US-SUB-1"
}
]
},
"payment": {
"assets": {
"icon_image_url": "https://gift.runa.io/static/product_assets/XYZ-US/XYZ-US-icon.png?v=1690000000",
"primary_color": "#000000"
},
"denominations": {
"minimum_value": "10.00",
"maximum_value": "100.00"
},
"content_resources": {
"description_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/description.md",
"disclaimer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/disclaimer_markdown.md",
"refund_policy_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/refund_policy_markdown.md",
"reissuance_policy_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/reissuance_policy_markdown.md",
"terms_buyer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/terms_buyer.md",
"terms_consumer_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/terms_consumer.md",
"redemption_instructions_markdown_url": "https://d2abcdef.cloudfront.net/resources/XYZ-US/redeem_markdown.md",
"locale": "en_US"
}
}
}{
"type": "not_found",
"message": "The requested resource was not found",
"help": "Please check the resource ID and try again."
}{
"type": "not_found",
"message": "The requested resource was not found",
"help": "Please check the resource ID and try again."
}{
"type": "not_found",
"message": "The requested resource was not found",
"help": "Please check the resource ID and try again."
}{
"type": "not_found",
"message": "The requested resource was not found",
"help": "Please check the resource ID and try again."
}{
"type": "not_found",
"message": "The requested resource was not found",
"help": "Please check the resource ID and try again."
}XYZ-US.
This endpoint returns different payout types:
gift_card: A gift card is a payout that can be redeemed for a specific value.subscription: A subscription is a payout that can be ordered for a specific duration.payment: A payment is a payout that can be ordered for a specific value.
payout_type field to determine which object to use to extract details for the product. The different payout types have different fields, so you should use the appropriate object to extract the details you need.
This endpoint supports returning product content in different formats. See the content parameter for more details.
Need help with the product catalog?
Authorizations
Your API key. See the API key page on details of how to generate and store your keys.
Headers
The dated version of the API, if not specified a default is used. See API versioning for more information. The dated version of the Runa API. Send it on every request: a client that omits it silently follows whatever the server default happens to be.
2024-02-05 Query Parameters
Response
OK
Product details
The currency of the product, represented by an ISO 4217 currency code. See currencies for a list of supported currencies.
^[A-Z]{3}$"USD"
Indicates whether or not you are able to order the product. You should use this detail to determine whether or not to display the product to your end users.
We recommend that you only display products to customers when this field is true - we will reject any orders placed for products where this is false. You can filter by is_orderable to only return products that can be ordered in the list endpoint.
The type of payout - this field will tell you the key of the additional object details that correspond to each payout type. The types currently supported are gift_card, subscription, or payment. Your implementation should account for additional payout types being added in the future.
gift_card, subscription, payment List of the categories that the product belongs to. You can fetch the list of categories using the GET /product/categories endpoint.
["food-and-drink", "entertainment"]
Was this page helpful?