curl --request GET \
--url https://api.scrip.dev/v1/fulfillment-accounts/{id}/products \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.scrip.dev/v1/fulfillment-accounts/{id}/products"
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://api.scrip.dev/v1/fulfillment-accounts/{id}/products', 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://api.scrip.dev/v1/fulfillment-accounts/{id}/products",
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://api.scrip.dev/v1/fulfillment-accounts/{id}/products"
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://api.scrip.dev/v1/fulfillment-accounts/{id}/products")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scrip.dev/v1/fulfillment-accounts/{id}/products")
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[
{
"category": "GIFT_CARD",
"countries": [
"US",
"CA"
],
"created_at": "2026-09-01T10:30:00Z",
"currencies": [
"USD"
],
"denominations_minor": [
500,
1000,
2500
],
"display": {
"description_html": "<p>Use this gift card online or in store.</p>",
"disclosure_html": "<p>Valid in the United States.</p>",
"image_url": "https://images.example.com/gift-card.png",
"instructions_html": "<p>Present the gift card at checkout.</p>"
},
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Amazon Gift Card",
"provider_data": {},
"provider_product_id": "OKMHM2X2OHYV",
"status": "ACTIVE",
"synced_at": "2026-09-01T10:30:00Z",
"updated_at": "2026-09-01T10:30:00Z",
"value_max_minor": 100000,
"value_min_minor": 100
}
]{
"code": "bad_request",
"details": {
"expected": "uuid",
"field": "asset_id",
"fields": [
{
"expected": "<unknown>",
"field": "amount",
"message": "This field is required",
"reason": "required",
"received": "-10.00"
}
],
"reason": "invalid",
"received": "not-a-uuid"
},
"message": "Invalid request parameters"
}{
"code": "unauthorized",
"details": {
"expected": "uuid",
"field": "asset_id",
"fields": [
{
"expected": "<unknown>",
"field": "amount",
"message": "This field is required",
"reason": "required",
"received": "-10.00"
}
],
"reason": "invalid",
"received": "not-a-uuid"
},
"message": "Missing or invalid credentials"
}{
"code": "forbidden",
"details": {
"expected": "uuid",
"field": "asset_id",
"fields": [
{
"expected": "<unknown>",
"field": "amount",
"message": "This field is required",
"reason": "required",
"received": "-10.00"
}
],
"reason": "invalid",
"received": "not-a-uuid"
},
"message": "Insufficient permissions for this action"
}{
"code": "not_found",
"details": {
"expected": "uuid",
"field": "asset_id",
"fields": [
{
"expected": "<unknown>",
"field": "amount",
"message": "This field is required",
"reason": "required",
"received": "-10.00"
}
],
"reason": "invalid",
"received": "not-a-uuid"
},
"message": "Resource not found"
}{
"code": "unprocessable",
"details": {
"expected": "uuid",
"field": "asset_id",
"fields": [
{
"expected": "<unknown>",
"field": "amount",
"message": "This field is required",
"reason": "required",
"received": "-10.00"
}
],
"reason": "invalid",
"received": "not-a-uuid"
},
"message": "Business rule violation"
}{
"code": "internal_error",
"message": "An internal error occurred"
}List products
List the fulfillment account’s products.
curl --request GET \
--url https://api.scrip.dev/v1/fulfillment-accounts/{id}/products \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.scrip.dev/v1/fulfillment-accounts/{id}/products"
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://api.scrip.dev/v1/fulfillment-accounts/{id}/products', 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://api.scrip.dev/v1/fulfillment-accounts/{id}/products",
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://api.scrip.dev/v1/fulfillment-accounts/{id}/products"
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://api.scrip.dev/v1/fulfillment-accounts/{id}/products")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scrip.dev/v1/fulfillment-accounts/{id}/products")
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[
{
"category": "GIFT_CARD",
"countries": [
"US",
"CA"
],
"created_at": "2026-09-01T10:30:00Z",
"currencies": [
"USD"
],
"denominations_minor": [
500,
1000,
2500
],
"display": {
"description_html": "<p>Use this gift card online or in store.</p>",
"disclosure_html": "<p>Valid in the United States.</p>",
"image_url": "https://images.example.com/gift-card.png",
"instructions_html": "<p>Present the gift card at checkout.</p>"
},
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Amazon Gift Card",
"provider_data": {},
"provider_product_id": "OKMHM2X2OHYV",
"status": "ACTIVE",
"synced_at": "2026-09-01T10:30:00Z",
"updated_at": "2026-09-01T10:30:00Z",
"value_max_minor": 100000,
"value_min_minor": 100
}
]{
"code": "bad_request",
"details": {
"expected": "uuid",
"field": "asset_id",
"fields": [
{
"expected": "<unknown>",
"field": "amount",
"message": "This field is required",
"reason": "required",
"received": "-10.00"
}
],
"reason": "invalid",
"received": "not-a-uuid"
},
"message": "Invalid request parameters"
}{
"code": "unauthorized",
"details": {
"expected": "uuid",
"field": "asset_id",
"fields": [
{
"expected": "<unknown>",
"field": "amount",
"message": "This field is required",
"reason": "required",
"received": "-10.00"
}
],
"reason": "invalid",
"received": "not-a-uuid"
},
"message": "Missing or invalid credentials"
}{
"code": "forbidden",
"details": {
"expected": "uuid",
"field": "asset_id",
"fields": [
{
"expected": "<unknown>",
"field": "amount",
"message": "This field is required",
"reason": "required",
"received": "-10.00"
}
],
"reason": "invalid",
"received": "not-a-uuid"
},
"message": "Insufficient permissions for this action"
}{
"code": "not_found",
"details": {
"expected": "uuid",
"field": "asset_id",
"fields": [
{
"expected": "<unknown>",
"field": "amount",
"message": "This field is required",
"reason": "required",
"received": "-10.00"
}
],
"reason": "invalid",
"received": "not-a-uuid"
},
"message": "Resource not found"
}{
"code": "unprocessable",
"details": {
"expected": "uuid",
"field": "asset_id",
"fields": [
{
"expected": "<unknown>",
"field": "amount",
"message": "This field is required",
"reason": "required",
"received": "-10.00"
}
],
"reason": "invalid",
"received": "not-a-uuid"
},
"message": "Business rule violation"
}{
"code": "internal_error",
"message": "An internal error occurred"
}REMOVED are excluded by default.
Each product has its own supported countries, currencies, and card values. It can offer a list of values in denominations_minor, an inclusive value_min_minor to value_max_minor range, or both. Use its Scrip id in product settings; provider_product_id identifies the product at the vendor.
To show participants the cards you have chosen, list the program’s rewards. That response includes the supported values and display content needed for redemption.
Authorizations
API key passed in the X-API-Key header.
Path Parameters
Fulfillment account ID
Query Parameters
Filter by normalized category
GIFT_CARD, PREPAID_CARD, CHARITY Filter by ISO 3166-1 alpha-2 country code (case-insensitive)
Filter by ISO 4217 currency code (case-insensitive)
Filter by status (default ACTIVE)
ACTIVE, REMOVED Page size (default 50, max 200)
x >= 1Cursor from a previous page
Response
Synced products
Product category
GIFT_CARD, PREPAID_CARD, CHARITY "GIFT_CARD"
ISO 3166-1 alpha-2 countries the product is orderable in
["US", "CA"]
When the product was first synced (RFC 3339)
"2026-09-01T10:30:00Z"
ISO 4217 currencies the product supports
["USD"]
Supported fixed card values in minor units, in addition to any range (empty when only a range is supported)
[500, 1000, 2500]
Optional content for displaying this product
Show child attributes
Show child attributes
Scrip's ID for the synced product (used in product settings)
"550e8400-e29b-41d4-a716-446655440000"
Product display name
"Amazon Gift Card"
Vendor-specific pass-through data, namespaced by provider name
The provider's own SKU identifier
"OKMHM2X2OHYV"
Whether the product is still listed by the fulfillment account
ACTIVE, REMOVED "ACTIVE"
When the product was last confirmed present in the vendor catalog (RFC 3339)
"2026-09-01T10:30:00Z"
When the product was last modified (RFC 3339)
"2026-09-01T10:30:00Z"
Maximum of the supported card-value range, inclusive, in minor units (null when only fixed values are supported)
100000
Minimum of the supported card-value range, inclusive, in minor units (null when only fixed values are supported)
100