List Products
curl --request GET \
--url https://api.beachdepository.com/v1/products \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.beachdepository.com/v1/products"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.beachdepository.com/v1/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.beachdepository.com/v1/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 => [
"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.beachdepository.com/v1/products"
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.beachdepository.com/v1/products")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.beachdepository.com/v1/products")
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_bodyProducts
List Products
List and search the product catalog
GET
/
products
List Products
curl --request GET \
--url https://api.beachdepository.com/v1/products \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.beachdepository.com/v1/products"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.beachdepository.com/v1/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.beachdepository.com/v1/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 => [
"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.beachdepository.com/v1/products"
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.beachdepository.com/v1/products")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.beachdepository.com/v1/products")
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_bodyReturns a paginated list of catalog products. Use this to look up the
Every product carries an
productId values referenced by inbound shipment lines, inventory items, and other resources. The catalog is global — the same products are visible to every organization. There is no create or update endpoint. Beach adds SKUs. Search here, then pass the id on create.
Permission: inventory:read
Query parameters
number
default:"1"
1-indexed page number.
number
default:"25"
Number of results per page (max 100).
string
Search products by title or SKU.
string
Filter by product type. One of
precious_metal, numismatic, miscellaneous.Response
{
"data": [
{
"id": "jh7prod123",
"title": "1 oz Gold Bar - PAMP Suisse",
"sku": "PAMP-1OZ-GOLD",
"productType": "precious_metal",
"subcategory": "Gold Bars",
"isSerialized": true,
"images": [
{
"url": "https://files.beachdepository.com/products/pamp-1oz-gold-front.jpg",
"label": "primary"
},
{
"url": "https://files.beachdepository.com/products/pamp-1oz-gold-back.jpg",
"label": "image-2"
}
],
"createdAt": "2025-04-01T14:00:00Z"
}
],
"pagination": {
"page": 1,
"hasMore": false
}
}
images array, empty when the product has no
photography yet. The first entry is the primary image. Images that cannot be
resolved to a URL are omitted, so every entry returned is fetchable.