Integration APIs
POSTクリエイター報酬の請求
Last updated April 23, 2026
ウォレットが対象とするすべてのGenesisボンディングカーブとRaydium CPMMバケットの蓄積したクリエイター報酬を、1回の呼び出しで請求します。エンドポイントは、ウォレット(または指定されたpayer)が署名して送信する必要があるbase64エンコードされたSolanaトランザクションのリストを返します。
SDKラッパーが利用可能
ほとんどのインテグレーターは、Genesis JavaScript SDKのclaimCreatorRewardsを使用するべきです — トランザクションのデシリアライズ、エラー解析を処理し、署名のためにUmi アイデンティティに直接プラグインします。SDKに依存できない場合のみ、このエンドポイントを直接呼び出してください。
Summary
POST /v1/creator-rewards/claim は、1回の呼び出しでウォレットのすべてのボンディングカーブとRaydium CPMMバケットから蓄積したクリエイター報酬を請求するために必要なSolanaトランザクションを返します。
- 集約 — 1回のリクエストで対象となるすべてのバケットを請求します。バケットごとに1つのトランザクションが返されます
- 署名 — レスポンスはウォレット(または任意の
payer)が署名して送信する必要があるbase64エンコードされたSolanaトランザクションです - エラー — 蓄積がない場合はHTTP
400"No rewards available to claim"を返します。呼び出し元は空の配列ではなくエラーで分岐する必要があります - SDK ラッパー —
claimCreatorRewardsはデシリアライズ、型付きエラー、Umi 署名を処理します
エンドポイント
POST /v1/creator-rewards/claim
| 環境 | ベースURL |
|---|---|
| Devnet & Mainnet | https://api.metaplex.com |
リクエストボディ
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
wallet | string | はい | 請求するクリエイター手数料ウォレットのbase58エンコードされた公開鍵。これはバケットでcreatorFeeWalletとして設定されたウォレット — オーバーライドが設定されていない場合はローンチウォレットです。 |
network | string | いいえ | 'solana-mainnet'(デフォルト)または'solana-devnet'。ベースURLのクラスタと一致する必要があります。 |
payer | string | いいえ | 返されたトランザクションのトランザクション手数料とレントを負担するbase58エンコードされた公開鍵。省略時はデフォルトでwalletになります。 |
payerを設定するタイミング
クリエイター手数料ウォレットがSOLを保持していない場合(例:エージェントPDAやコールドウォレット)に、payerを別のウォレットに設定します。payerは返されたトランザクションに署名する必要があるため、通常はクリエイターの代わりに請求を提出するウォレットです。クリエイター手数料の受取人は引き続き請求されたSOLを受け取ります — payerは手数料とレントのみを負担します。
リクエスト例
1import { claimCreatorRewards } from '@metaplex-foundation/genesis'
2import { base58 } from '@metaplex-foundation/umi/serializers'
3import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
4import { keypairIdentity } from '@metaplex-foundation/umi'
5
6const umi = createUmi('https://api.mainnet-beta.solana.com')
7const keypair = umi.eddsa.createKeypairFromSecretKey(mySecretKeyBytes)
8umi.use(keypairIdentity(keypair))
9
10const result = await claimCreatorRewards(umi, {}, {
11 wallet: umi.identity.publicKey,
12 network: 'solana-mainnet',
13 // payer is optional — defaults to `wallet` on the server.
14 // Set it to have a different wallet cover rent and transaction fees.
15 // payer: umi.identity.publicKey,
16})
17
18for (const tx of result.transactions) {
19 const signed = await umi.identity.signTransaction(tx)
20 const signature = await umi.rpc.sendTransaction(signed, {
21 preflightCommitment: 'confirmed',
22 })
23 await umi.rpc.confirmTransaction(signature, {
24 strategy: { type: 'blockhash', ...result.blockhash },
25 commitment: 'confirmed',
26 })
27 console.log('Claimed:', base58.deserialize(signature)[0])
28}
29
30// Claimed: 5uGGYEMmjP2HpyFCvLPNpVDSQEBtUE3LR6ZQFqhJxQSh5FbKacSyN8nQmAJowuFs6BTCdwzoFyyJz8Y2hQx8kPxo
31// Claimed: 3TAroVovEap1ZEAJYq3WiDZoMK3GU3soCdrhvZJNg6b9EANqvWrVcDGNffm7mD8wvtpR7ynWQBcbrmz8AK6nrhfy
1# Claim creator rewards. Response contains base64-encoded transactions
2# the wallet (or payer) must sign and send.
3curl -X POST https://api.metaplex.com/v1/creator-rewards/claim \
4 -H "Content-Type: application/json" \
5 -d '{
6 "wallet": "CREATOR_FEE_WALLET_ADDRESS_HERE",
7 "network": "solana-mainnet"
8 }'
9
10# Add "payer" when the creator fee wallet does not hold SOL (e.g. an agent PDA):
11# "payer": "PAYER_WALLET_ADDRESS_HERE"
成功レスポンス
{
"data": {
"transactions": ["<base64 transaction>", "<base64 transaction>"],
"blockhash": {
"blockhash": "ERKYmtrmNSKaw3VpnFYAfK3jvWGnd15Nf9kJxZqJ7JHx",
"lastValidBlockHeight": 445407640
}
}
}
| フィールド | 型 | 説明 |
|---|---|---|
data.transactions | string[] | base64エンコードされたSolanaトランザクション。それぞれをデシリアライズし、payer(およびクリエイター手数料ウォレットが別の署名者である場合はそれ)が署名して、送信する必要があります。 |
data.blockhash.blockhash | string | トランザクションが構築された最近のブロックハッシュ。confirmTransactionでこれを使用してください — 新たに取得したブロックハッシュに置き換えないでください。 |
data.blockhash.lastValidBlockHeight | number | ブロックハッシュが期限切れになる以降のスロット高さ。 |
APIは請求されるバケットごとに1つのトランザクションを返します — 多くの場合2つ(ボンディングカーブとRaydium)。順次送信してください。順序は重要ではありません。
エラーレスポンス
エラーはHTTPステータス400で次の形式で返されます:
{ "error": { "message": "No rewards available to claim" } }
既知のエラーメッセージ
| メッセージ | HTTP | 原因 |
|---|---|---|
No rewards available to claim | 400 | ウォレットにはどのバケットにも未請求の蓄積クリエイター報酬がありません。これは空のtransactions配列の代わりに返されるため、呼び出し元はこれを例外的でない結果として処理する必要があります。 |
✖ Invalid wallet address | 400 | walletが有効なbase58 Solana公開鍵ではありません。 |
報酬なしは空配列ではなく400
ウォレットに請求するものがないとき、エンドポイントはHTTP 400とメッセージNo rewards available to claimを返します — transactions: []を含む200は返されません。呼び出し元はエラーをキャッチする(またはresponse.statusとbody.error.messageを確認する)必要があり、これを失敗ではなく「やることなし」のケースとして処理する必要があります。SDKはこれを型付きのGenesisApiErrorとして表面化します。エラー処理を参照してください。
注意事項
- エンドポイントはバケットレベルで冪等です — 成功した請求の直後に再度呼び出すと、新しい手数料が蓄積されるまで
No rewards available to claimが返されます。 - 返されたトランザクションは
data.blockhashのブロックハッシュを使用します。確認に~60〜90秒以上かかると、ブロックハッシュは期限切れになり、新しい一連のトランザクションを取得するために呼び出しを繰り返す必要があります。 - クリエイター報酬はすべてのスワップ(ボンディングカーブ)とLP取引活動(Raydium CPMM)から蓄積されます — このエンドポイントは両方を集約します。基礎となる蓄積メカニクスとバケットごとのフェッチヘルパーについては、Genesis ボンディングカーブのクリエイター手数料を参照してください。
- クリエイター手数料ウォレットはバケット作成時に
creatorFeeWalletを介して設定され、カーブがライブになった後は変更できません。
推奨:SDKを使用
このエンドポイントを直接呼び出す代わりに、@metaplex-foundation/genesisのclaimCreatorRewardsを使用してください:
1import { claimCreatorRewards } from '@metaplex-foundation/genesis'
2import { base58 } from '@metaplex-foundation/umi/serializers'
3import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
4import { keypairIdentity } from '@metaplex-foundation/umi'
5
6const umi = createUmi('https://api.mainnet-beta.solana.com')
7const keypair = umi.eddsa.createKeypairFromSecretKey(mySecretKeyBytes)
8umi.use(keypairIdentity(keypair))
9
10const result = await claimCreatorRewards(umi, {}, {
11 wallet: umi.identity.publicKey,
12 network: 'solana-mainnet',
13 // payer is optional — defaults to `wallet` on the server.
14 // Set it to have a different wallet cover rent and transaction fees.
15 // payer: umi.identity.publicKey,
16})
17
18for (const tx of result.transactions) {
19 const signed = await umi.identity.signTransaction(tx)
20 const signature = await umi.rpc.sendTransaction(signed, {
21 preflightCommitment: 'confirmed',
22 })
23 await umi.rpc.confirmTransaction(signature, {
24 strategy: { type: 'blockhash', ...result.blockhash },
25 commitment: 'confirmed',
26 })
27 console.log('Claimed:', base58.deserialize(signature)[0])
28}
29
30// Claimed: 5uGGYEMmjP2HpyFCvLPNpVDSQEBtUE3LR6ZQFqhJxQSh5FbKacSyN8nQmAJowuFs6BTCdwzoFyyJz8Y2hQx8kPxo
31// Claimed: 3TAroVovEap1ZEAJYq3WiDZoMK3GU3soCdrhvZJNg6b9EANqvWrVcDGNffm7mD8wvtpR7ynWQBcbrmz8AK6nrhfy
完全なSDK表面についてはAPI クライアントページ、エンドツーエンドの請求ガイドについてはクリエイター手数料を参照してください。
