Create price
curl --request POST \
--url https://api.reclack.com/v1/products/{productId}/prices \
--header 'Api-Key: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": "290.00",
"cadence": "yearly",
"networks": [
"base",
"ethereum"
],
"network": "base",
"interval_seconds": 123,
"metadata": {}
}
'import requests
url = "https://api.reclack.com/v1/products/{productId}/prices"
payload = {
"amount": "290.00",
"cadence": "yearly",
"networks": ["base", "ethereum"],
"network": "base",
"interval_seconds": 123,
"metadata": {}
}
headers = {
"Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: '290.00',
cadence: 'yearly',
networks: ['base', 'ethereum'],
network: 'base',
interval_seconds: 123,
metadata: {}
})
};
fetch('https://api.reclack.com/v1/products/{productId}/prices', 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.reclack.com/v1/products/{productId}/prices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => '290.00',
'cadence' => 'yearly',
'networks' => [
'base',
'ethereum'
],
'network' => 'base',
'interval_seconds' => 123,
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Api-Key: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.reclack.com/v1/products/{productId}/prices"
payload := strings.NewReader("{\n \"amount\": \"290.00\",\n \"cadence\": \"yearly\",\n \"networks\": [\n \"base\",\n \"ethereum\"\n ],\n \"network\": \"base\",\n \"interval_seconds\": 123,\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.reclack.com/v1/products/{productId}/prices")
.header("Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"290.00\",\n \"cadence\": \"yearly\",\n \"networks\": [\n \"base\",\n \"ethereum\"\n ],\n \"network\": \"base\",\n \"interval_seconds\": 123,\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reclack.com/v1/products/{productId}/prices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": \"290.00\",\n \"cadence\": \"yearly\",\n \"networks\": [\n \"base\",\n \"ethereum\"\n ],\n \"network\": \"base\",\n \"interval_seconds\": 123,\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "price_7Fh2PqX9",
"product_id": "prod_2Pb8xk9",
"amount": "29.00",
"amount_atomic": "29000000",
"currency": "USDC",
"cadence": "monthly",
"interval_seconds": 2592000,
"network": "base",
"chain_id": 8453,
"token_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"token_decimals": 6,
"active": true,
"metadata": {},
"created_at": "2026-10-18T22:07:41Z",
"updated_at": "2026-10-18T22:07:41Z"
}
}{
"error": {
"type": "invalid_request_error",
"code": "price_not_found",
"message": "No price was found for that id"
}
}{
"error": {
"type": "invalid_request_error",
"code": "price_not_found",
"message": "No price was found for that id"
}
}{
"error": {
"type": "invalid_request_error",
"code": "price_not_found",
"message": "No price was found for that id"
}
}Prices
Create Price
Add a price to a product.
POST
/
v1
/
products
/
{productId}
/
prices
Create price
curl --request POST \
--url https://api.reclack.com/v1/products/{productId}/prices \
--header 'Api-Key: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": "290.00",
"cadence": "yearly",
"networks": [
"base",
"ethereum"
],
"network": "base",
"interval_seconds": 123,
"metadata": {}
}
'import requests
url = "https://api.reclack.com/v1/products/{productId}/prices"
payload = {
"amount": "290.00",
"cadence": "yearly",
"networks": ["base", "ethereum"],
"network": "base",
"interval_seconds": 123,
"metadata": {}
}
headers = {
"Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: '290.00',
cadence: 'yearly',
networks: ['base', 'ethereum'],
network: 'base',
interval_seconds: 123,
metadata: {}
})
};
fetch('https://api.reclack.com/v1/products/{productId}/prices', 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.reclack.com/v1/products/{productId}/prices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => '290.00',
'cadence' => 'yearly',
'networks' => [
'base',
'ethereum'
],
'network' => 'base',
'interval_seconds' => 123,
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Api-Key: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.reclack.com/v1/products/{productId}/prices"
payload := strings.NewReader("{\n \"amount\": \"290.00\",\n \"cadence\": \"yearly\",\n \"networks\": [\n \"base\",\n \"ethereum\"\n ],\n \"network\": \"base\",\n \"interval_seconds\": 123,\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.reclack.com/v1/products/{productId}/prices")
.header("Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"290.00\",\n \"cadence\": \"yearly\",\n \"networks\": [\n \"base\",\n \"ethereum\"\n ],\n \"network\": \"base\",\n \"interval_seconds\": 123,\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reclack.com/v1/products/{productId}/prices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": \"290.00\",\n \"cadence\": \"yearly\",\n \"networks\": [\n \"base\",\n \"ethereum\"\n ],\n \"network\": \"base\",\n \"interval_seconds\": 123,\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "price_7Fh2PqX9",
"product_id": "prod_2Pb8xk9",
"amount": "29.00",
"amount_atomic": "29000000",
"currency": "USDC",
"cadence": "monthly",
"interval_seconds": 2592000,
"network": "base",
"chain_id": 8453,
"token_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"token_decimals": 6,
"active": true,
"metadata": {},
"created_at": "2026-10-18T22:07:41Z",
"updated_at": "2026-10-18T22:07:41Z"
}
}{
"error": {
"type": "invalid_request_error",
"code": "price_not_found",
"message": "No price was found for that id"
}
}{
"error": {
"type": "invalid_request_error",
"code": "price_not_found",
"message": "No price was found for that id"
}
}{
"error": {
"type": "invalid_request_error",
"code": "price_not_found",
"message": "No price was found for that id"
}
}Overview
Add a price to a product. A product can carry as many prices as you need, which is how you offer monthly and yearly, or the same plan on different networks.Authorizations
Your Reclack API key. The prefix decides the environment: rk_sandbox_ for test chains, rk_live_ for production.
Path Parameters
The product the price belongs to.
Body
application/json
Decimal string.
Example:
"290.00"
Available options:
once, daily, weekly, monthly, yearly Example:
"yearly"
Networks this price may settle on.
Example:
["base", "ethereum"]
A single network, when there is only one.
Example:
"base"
A custom interval, when the cadences do not fit.
Response
Created
Show child attributes
Show child attributes

