List the products you can offer, at your prices
curl --request GET \
--url https://api.clemta.com/v1/products \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.clemta.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.clemta.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.clemta.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.clemta.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.clemta.com/v1/products")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.clemta.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_body{
"object": "list",
"items": [
{
"object": "product",
"key": "formation_llc",
"display_name": "Company Formation (LLC)",
"unit_amount": 14900,
"currency": "usd",
"interval": "one_time",
"trial_periods": 123,
"billing": "advance",
"includes": [
"<string>"
],
"description": "<string>",
"quote": true,
"on_complete": "<string>",
"repeat": "<string>",
"conflicts_with": [
"<string>"
],
"depends_on": [
"<string>"
],
"defer_first_charge": "first_anniversary",
"pass_through_fees": "annual_state_filing",
"required_for": [
"formation"
],
"options": [
{
"key": "llc_members",
"label": "LLC membership",
"values": [
{
"value": "multi_member",
"label": "Multi-member LLC",
"available_when": {},
"unit_amount": 24900
}
],
"fixed": true,
"required": true
}
],
"price_rules": [
{
"key": "de_filing",
"match": {
"state": "DE"
},
"unit_amount": 31500,
"label": "Delaware filing"
}
],
"fulfillment": "workflow",
"available_when": {
"entity_type": "llc"
}
}
]
}{
"type": "https://docs.clemta.com/partner/errors#resource_already_exists",
"title": "<string>",
"status": 349,
"code": "api_key_invalid",
"detail": "<string>",
"request_id": "<string>",
"errors": [
{
"reason": "<string>",
"location": "<string>",
"validation_type": "<string>",
"how_to_fix": "<string>"
}
]
}{
"type": "https://docs.clemta.com/partner/errors#resource_already_exists",
"title": "<string>",
"status": 349,
"code": "api_key_invalid",
"detail": "<string>",
"request_id": "<string>",
"errors": [
{
"reason": "<string>",
"location": "<string>",
"validation_type": "<string>",
"how_to_fix": "<string>"
}
]
}Products and pricing
List the products you can offer, at your prices
Your catalog with your wholesale price on each line - your override where you have one, the default otherwise. These keys are what you pass as product_key when you attach a service order.
GET
/
products
List the products you can offer, at your prices
curl --request GET \
--url https://api.clemta.com/v1/products \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.clemta.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.clemta.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.clemta.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.clemta.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.clemta.com/v1/products")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.clemta.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_body{
"object": "list",
"items": [
{
"object": "product",
"key": "formation_llc",
"display_name": "Company Formation (LLC)",
"unit_amount": 14900,
"currency": "usd",
"interval": "one_time",
"trial_periods": 123,
"billing": "advance",
"includes": [
"<string>"
],
"description": "<string>",
"quote": true,
"on_complete": "<string>",
"repeat": "<string>",
"conflicts_with": [
"<string>"
],
"depends_on": [
"<string>"
],
"defer_first_charge": "first_anniversary",
"pass_through_fees": "annual_state_filing",
"required_for": [
"formation"
],
"options": [
{
"key": "llc_members",
"label": "LLC membership",
"values": [
{
"value": "multi_member",
"label": "Multi-member LLC",
"available_when": {},
"unit_amount": 24900
}
],
"fixed": true,
"required": true
}
],
"price_rules": [
{
"key": "de_filing",
"match": {
"state": "DE"
},
"unit_amount": 31500,
"label": "Delaware filing"
}
],
"fulfillment": "workflow",
"available_when": {
"entity_type": "llc"
}
}
]
}{
"type": "https://docs.clemta.com/partner/errors#resource_already_exists",
"title": "<string>",
"status": 349,
"code": "api_key_invalid",
"detail": "<string>",
"request_id": "<string>",
"errors": [
{
"reason": "<string>",
"location": "<string>",
"validation_type": "<string>",
"how_to_fix": "<string>"
}
]
}{
"type": "https://docs.clemta.com/partner/errors#resource_already_exists",
"title": "<string>",
"status": 349,
"code": "api_key_invalid",
"detail": "<string>",
"request_id": "<string>",
"errors": [
{
"reason": "<string>",
"location": "<string>",
"validation_type": "<string>",
"how_to_fix": "<string>"
}
]
}Authorizations
Your API key, e.g. Authorization: Bearer clmt_test_. Live keys use the clmt_live_ prefix.
Headers
Date-based API version to run this request against.
Example:
"2026-08-13"
⌘I