Skip to main content
PUT
/
v1-alpha1
/
minting
/
collections
/
{collectionId}
/
royalties
Set Royalties
curl --request PUT \
  --url https://staging.crossmint.com/api/v1-alpha1/minting/collections/{collectionId}/royalties \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: <api-key>' \
  --data '
{
  "recipients": [
    {
      "address": "0x71C...",
      "basisPoints": 100
    }
  ]
}
'
import requests

url = "https://staging.crossmint.com/api/v1-alpha1/minting/collections/{collectionId}/royalties"

payload = { "recipients": [
{
"address": "0x71C...",
"basisPoints": 100
}
] }
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'PUT',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({recipients: [{address: '0x71C...', basisPoints: 100}]})
};

fetch('https://staging.crossmint.com/api/v1-alpha1/minting/collections/{collectionId}/royalties', 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://staging.crossmint.com/api/v1-alpha1/minting/collections/{collectionId}/royalties",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'recipients' => [
[
'address' => '0x71C...',
'basisPoints' => 100
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)

func main() {

url := "https://staging.crossmint.com/api/v1-alpha1/minting/collections/{collectionId}/royalties"

payload := strings.NewReader("{\n \"recipients\": [\n {\n \"address\": \"0x71C...\",\n \"basisPoints\": 100\n }\n ]\n}")

req, _ := http.NewRequest("PUT", url, payload)

req.Header.Add("X-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.put("https://staging.crossmint.com/api/v1-alpha1/minting/collections/{collectionId}/royalties")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"recipients\": [\n {\n \"address\": \"0x71C...\",\n \"basisPoints\": 100\n }\n ]\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://staging.crossmint.com/api/v1-alpha1/minting/collections/{collectionId}/royalties")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"recipients\": [\n {\n \"address\": \"0x71C...\",\n \"basisPoints\": 100\n }\n ]\n}"

response = http.request(request)
puts response.read_body
{
  "error": true,
  "message": "Invalid arguments or empty parameter <missing parameter>."
}
{
"error": true,
"message": "Malformed API key. / API key provided doesn't have required scopes."
}
{
"error": true,
"message": "Not found"
}
{
"error": true,
"message": "Collection <id> is not yet deployed. Please try again in a moment."
}
{
"error": true,
"message": "Please try again in a few minutes. If the issue still persists, contact Crossmint support."
}
This is an alpha API and subject to change.

Authorizations

X-API-KEY
string
header
required

Obtained in the Crossmint developer console

Path Parameters

collectionId
string
required

This is the identifier for the collection related to the request. Every project has default collections: default-solana and default-polygon.

The create-collection API will result in collections with UUID formatted collectionId. Example: 9c82ef99-617f-497d-9abb-fd355291681b

The create-collection-idempotent API allows you to specify an arbitrary identifier during the initial request. Example: your-custom-identifier

Body

application/json
recipients
object[]

List of royalty recipients. Note: EVM collections only support a single recipient. Use a contract splitter as recipient in order to send payments to multiple addresses.

Response

No-content success response indicating that the request is being processed.