List Sample Requests
curl --request GET \
--url https://api.growi.io/api/public/v1/sample_requests \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.growi.io/api/public/v1/sample_requests"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.growi.io/api/public/v1/sample_requests', 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.growi.io/api/public/v1/sample_requests",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.growi.io/api/public/v1/sample_requests"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.growi.io/api/public/v1/sample_requests")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growi.io/api/public/v1/sample_requests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": 123,
"status": "pending",
"campaign_id": 123,
"campaign_name": "<string>",
"campaign_affiliate_id": 123,
"source": "<string>",
"creator": {
"user_id": 123,
"name": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"phone": "<string>"
},
"product": {
"id": 123,
"title": "<string>",
"sku": "<string>",
"url": "<string>",
"image_url": "<string>",
"shopify_id": "<string>",
"tik_tok_id": "<string>",
"amazon_product_id": "<string>"
},
"variant": {
"id": 123,
"title": "<string>",
"display_name": "<string>",
"sku": "<string>",
"external_id": "<string>",
"price": 123
},
"quantity": 123,
"shipping_address": {
"first_name": "<string>",
"last_name": "<string>",
"address_line_1": "<string>",
"address_line_2": "<string>",
"city": "<string>",
"state": "<string>",
"postal_code": "<string>",
"country": "<string>",
"phone": "<string>"
},
"order_id": "<string>",
"order_name": "<string>",
"tracking_url": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"meta": {
"row_count": 123,
"page_count": 123,
"current_page": 123,
"per_page": 123
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}List sample requests
Lists free sample requests that you fulfill yourself (stores without Shopify), newest first, across your organization’s and child brands’ campaigns.
GET
/
sample_requests
List Sample Requests
curl --request GET \
--url https://api.growi.io/api/public/v1/sample_requests \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.growi.io/api/public/v1/sample_requests"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.growi.io/api/public/v1/sample_requests', 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.growi.io/api/public/v1/sample_requests",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.growi.io/api/public/v1/sample_requests"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.growi.io/api/public/v1/sample_requests")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.growi.io/api/public/v1/sample_requests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": 123,
"status": "pending",
"campaign_id": 123,
"campaign_name": "<string>",
"campaign_affiliate_id": 123,
"source": "<string>",
"creator": {
"user_id": 123,
"name": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"phone": "<string>"
},
"product": {
"id": 123,
"title": "<string>",
"sku": "<string>",
"url": "<string>",
"image_url": "<string>",
"shopify_id": "<string>",
"tik_tok_id": "<string>",
"amazon_product_id": "<string>"
},
"variant": {
"id": 123,
"title": "<string>",
"display_name": "<string>",
"sku": "<string>",
"external_id": "<string>",
"price": 123
},
"quantity": 123,
"shipping_address": {
"first_name": "<string>",
"last_name": "<string>",
"address_line_1": "<string>",
"address_line_2": "<string>",
"city": "<string>",
"state": "<string>",
"postal_code": "<string>",
"country": "<string>",
"phone": "<string>"
},
"order_id": "<string>",
"order_name": "<string>",
"tracking_url": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"meta": {
"row_count": 123,
"page_count": 123,
"current_page": 123,
"per_page": 123
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Lists free sample requests that you fulfill yourself, newest first. These are requests from creators on campaigns whose store isn’t on Shopify. See Free samples for custom stores for the full flow.
Requests on your child brands’ campaigns are included.
422: invalid filter
Query parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
status | String | Comma-separated: pending, approved, shipped, delivered, rejected, cancelled | No |
campaign_id | Integer | Only requests on this campaign | No |
updated_since | String | ISO-8601 timestamp. Only requests updated at or after this time, for incremental syncs | No |
page | Integer | Page number (default 1) | No |
per_page | Integer | 1 to 100 (default 25) | No |
Request example
curl "https://api.growi.io/api/public/v1/sample_requests?status=approved" \
-H "Authorization: Bearer YOUR_PUBLIC_API_KEY"
Response example
{
"data": [
{
"id": 812345,
"status": "approved",
"campaign_id": 51812,
"campaign_name": "Summer Creators",
"campaign_affiliate_id": 4512345,
"source": "creator_request",
"creator": {
"user_id": 45678,
"name": "Jamie Rivera",
"first_name": "Jamie",
"last_name": "Rivera",
"email": "jamie@example.com",
"phone": "+15555550100"
},
"product": {
"id": 501234,
"title": "Pleated Air Filter 20x25x1 (4-Pack)",
"sku": "AF-20251",
"url": null,
"image_url": "https://cdn.example.com/20x25x1.jpg",
"shopify_id": null,
"tik_tok_id": null,
"amazon_product_id": null
},
"variant": {
"id": 2801234,
"title": "MERV 8",
"display_name": "Pleated Air Filter 20x25x1 (4-Pack) - MERV 8",
"sku": "AF-20251-M8",
"external_id": null,
"price": 109
},
"quantity": 1,
"shipping_address": {
"first_name": "Jamie",
"last_name": "Rivera",
"address_line_1": "100 Main St",
"address_line_2": "Apt 4",
"city": "Miami",
"state": "FL",
"postal_code": "33101",
"country": "UNITED STATES",
"phone": "+15555550100"
},
"order_id": null,
"order_name": null,
"tracking_url": null,
"created_at": "2026-10-21T18:04:09Z",
"updated_at": "2026-10-21T18:04:11Z"
}
],
"meta": { "row_count": 1, "page_count": 1, "current_page": 1, "per_page": 25 }
}
For creators who joined through the Growi marketplace,
email, phone, last_name and shipping_address are null until the request is approved.Error responses
401: missing or invalid API key{ "error": "Not Authenticated" }
{ "error": "updated_since must be an ISO-8601 timestamp" }
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Comma-separated statuses: pending, approved, shipped, delivered, rejected, cancelled
ISO-8601 timestamp. Only requests updated at or after this time
1 to 100