diff --git a/CLAUDE.md b/CLAUDE.md
index f0751c77..37b5c9d4 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -63,6 +63,31 @@ Documentation follows a consistent pattern:
- **Guides section** - Tutorials and how-tos
- **References section** - API documentation (often external links)
+### Metaplex API Reference (`/api`)
+
+The pages under `src/pages/{locale}/api/` document the public REST API served
+at `api.metaplex.com/v1`. That API is implemented in the **genesis-app repo**
+(a sibling repo — this site only documents it):
+
+- The machine-readable contract is the OpenAPI 3.1 spec served at
+ `https://api.metaplex.com/v1/openapi.yaml`, whose source of truth is
+ `app/api/v1/openapi.yaml/spec.yaml` in genesis-app. **Do not add a copy of
+ the spec to this repo** — link to the canonical URL.
+- When endpoints change in genesis-app, the pages to update here are: the
+ matching endpoint page in `src/pages/en/api/`, the endpoint tables in
+ `src/pages/{en,ja,ko,zh}/api/index.md`, and the nav in
+ `src/components/products/api/index.js`. genesis-app's contributor docs
+ instruct API authors to file a ticket for this update (they may not have
+ this repo cloned), so incoming docs tickets should reference the
+ genesis-app PR with the route change.
+- The two SDK chain-method pages (`fetch-bucket-state`, `fetch-deposit-state`)
+ intentionally live under `smart-contracts/genesis/`, not `/api` — they are
+ SDK calls, not REST endpoints.
+- `/api/*` URLs work because `src/middleware.js` rewrites root paths to
+ `/en/*` for everything except `/api/og` (the OG-image Next API route). If
+ you add another real API route under `src/pages/api/`, you must extend that
+ skip list.
+
### Page System
Pages use a custom `usePage` hook that processes:
diff --git a/public/llms.txt b/public/llms.txt
index e6bd4bbc..fbef847f 100644
--- a/public/llms.txt
+++ b/public/llms.txt
@@ -45,6 +45,7 @@
- **New to Metaplex?** Start here: https://metaplex.com/docs/
- **Launching a token?** Use Genesis: https://metaplex.com/docs/smart-contracts/genesis
+- **Calling the public REST API?** Reference: https://metaplex.com/docs/api — machine-readable OpenAPI spec: https://api.metaplex.com/v1/openapi.json (also /v1/openapi.yaml; RFC 9727 catalog at https://api.metaplex.com/.well-known/api-catalog)
- **Creating NFTs/Assets?** Use Core: https://metaplex.com/docs/smart-contracts/core
- **Launching an NFT collection?** Use Core Candy Machine: https://metaplex.com/docs/smart-contracts/core-candy-machine
- **Need JavaScript SDK?** Start with UMI: https://metaplex.com/docs/dev-tools/umi
@@ -61,32 +62,43 @@
---
+## Metaplex API (REST)
+
+- [Metaplex API](https://metaplex.com/docs/api): The Metaplex public REST API at api.metaplex.com — Genesis launch data, launch creation, the agent registry, and agent wallet transactions. No authentication required.
+- [Claim Creator Rewards](https://metaplex.com/docs/api/claim-creator-rewards): Claim accrued creator rewards for a wallet across all Genesis bonding-curve and Raydium buckets in a single API call. Returns ready-to-sign Solana transactions.
+- [Create Launch](https://metaplex.com/docs/api/create-launch): Build on-chain transactions for a new Genesis token launch. Returns unsigned transactions ready for signing and sending.
+- [Fund Agent](https://metaplex.com/docs/api/fund-agent): Build a SOL transfer transaction that funds a registered agent's wallet, with an on-chain memo.
+- [Get Agent](https://metaplex.com/docs/api/get-agent): Fetch a single registered agent by Core asset address, including its EIP-8004 registration data, created tokens, and primary agent token.
+- [Get Agent Card](https://metaplex.com/docs/api/get-agent-card): Fetch the hosted A2A AgentCard for a registered agent. Standards-compliant AgentCard JSON with ETag caching.
+- [Get Launch](https://metaplex.com/docs/api/get-launch): Get launch data by genesis address. Returns launch info, token metadata, and social links.
+- [Get Launches by Token](https://metaplex.com/docs/api/get-launches-by-token): Get all launches associated with a token mint address. Returns launch info, token metadata, and social links.
+- [Get Spotlight](https://metaplex.com/docs/api/get-spotlight): Get featured spotlight launches from Genesis. Returns curated launches highlighted by the platform.
+- [List Agents](https://metaplex.com/docs/api/list-agents): Browse and search registered AI agents. Returns paginated agent records with metadata, filters, and sorting.
+- [List Launches](https://metaplex.com/docs/api/list-launches): Get active and upcoming Genesis launch listings. Returns a list of launches with metadata.
+- [Mint Agent](https://metaplex.com/docs/api/mint-agent): Build a partially signed transaction that mints an agent Core asset and registers its on-chain identity.
+- [Register Launch](https://metaplex.com/docs/api/register): Register a Genesis launch after on-chain transactions are confirmed. Validates the on-chain state and creates the launch listing.
+- [Verify Twitter](https://metaplex.com/docs/api/verify-twitter): Exchange a Twitter OAuth access token for a verification token that proves ownership of a Twitter account when registering a launch.
+- [Withdraw from Agent](https://metaplex.com/docs/api/withdraw-agent): Build a transaction that withdraws SOL from an agent's wallet back to its owner. Owner-only.
+
## Genesis (Token Launch)
- [API Client](https://metaplex.com/docs/smart-contracts/genesis/sdk/api-client): Use the Genesis API client to create and register token launches on Solana. Three integration modes from simple to full control.
- [Bonding Curve](https://metaplex.com/docs/smart-contracts/genesis/bonding-curve): Overview of the Genesis Bonding Curve — a constant product AMM that sells out its token supply and graduates into a Raydium CPMM pool.
- [Bonding Curve — Advanced Internals](https://metaplex.com/docs/smart-contracts/genesis/bonding-curve-internals): Deep reference for the Genesis Bonding Curve — swap price formulas, reverse calculation, reserve exhaustion clamping, BondingCurveBucketV2 account structure, and extensions.
- [Bonding Curve — Indexing & Events](https://metaplex.com/docs/smart-contracts/genesis/bonding-curve-indexing): How to index the Genesis Bonding Curve lifecycle — GPA discovery, decoding BondingCurveSwapEvent, tracking price from events, and account discriminators.
+- [Bonding Curve — Protocol Parameters](https://metaplex.com/docs/smart-contracts/genesis/bonding-curve-parameters): Concrete protocol parameters for the Genesis Bonding Curve — token supply defaults, virtual reserves, fee schedule, and graduation target.
- [Bonding Curve — Theory of Operation](https://metaplex.com/docs/smart-contracts/genesis/bonding-curve-theory): How the Genesis Bonding Curve works — constant product pricing, virtual reserves, fee structure, first buy mechanism, and lifecycle phases.
- [Bonding Curve Swap Integration](https://metaplex.com/docs/smart-contracts/genesis/bonding-curve-swaps): How to read bonding curve state, get swap quotes, execute buy and sell transactions, handle slippage, and claim creator fees using the Genesis SDK.
-- [Claim Creator Rewards](https://metaplex.com/docs/smart-contracts/genesis/integration-apis/claim-creator-rewards): Claim accrued creator rewards for a wallet across all Genesis bonding-curve and Raydium buckets in a single API call. Returns ready-to-sign Solana transactions.
-- [Create Launch](https://metaplex.com/docs/smart-contracts/genesis/integration-apis/create-launch): Build on-chain transactions for a new Genesis token launch. Returns unsigned transactions ready for signing and sending.
- [Creator Fees on the Genesis Bonding Curve](https://metaplex.com/docs/smart-contracts/genesis/creator-fees): How to configure a creator fee on a Genesis bonding curve launch and claim accrued fees via the Metaplex API, the Genesis SDK, or the low-level on-chain instructions — including the two-step collect + claim flow for post-graduation Raydium fees.
- [Fetch Bucket State](https://metaplex.com/docs/smart-contracts/genesis/integration-apis/fetch-bucket-state): Fetch real-time bucket state from the blockchain using the Genesis JavaScript SDK. Includes deposit totals, counts, and time conditions.
- [Fetch Deposit State](https://metaplex.com/docs/smart-contracts/genesis/integration-apis/fetch-deposit-state): Fetch user deposit state from the blockchain using the Genesis JavaScript SDK. Check deposit amounts and claim status.
- [Genesis - Solana Token Launchpad & Launch Platform](https://metaplex.com/docs/smart-contracts/genesis): Genesis is an on-chain Solana token launchpad for fair launches, presales, and auctions. Create and distribute SPL tokens with transparent, automated token generation events.
-- [Get Launch](https://metaplex.com/docs/smart-contracts/genesis/integration-apis/get-launch): Get launch data by genesis address. Returns launch info, token metadata, and social links.
-- [Get Launches by Token](https://metaplex.com/docs/smart-contracts/genesis/integration-apis/get-launches-by-token): Get all launches associated with a token mint address. Returns launch info, token metadata, and social links.
-- [Get Spotlight](https://metaplex.com/docs/smart-contracts/genesis/integration-apis/get-spotlight): Get featured spotlight launches from Genesis. Returns curated launches highlighted by the platform.
- [Getting Started](https://metaplex.com/docs/smart-contracts/genesis/getting-started): Learn how to launch an SPL token on Solana step by step. Plan your presale, fair launch, or token sale using the Genesis token launchpad.
-- [Integration APIs](https://metaplex.com/docs/smart-contracts/genesis/integration-apis): Access Genesis launch data through HTTP REST endpoints and on-chain SDK methods. Public API with no authentication required.
- [JavaScript SDK](https://metaplex.com/docs/smart-contracts/genesis/sdk/javascript): API reference for the Genesis JavaScript SDK. Function signatures, parameters, and types for token launches on Solana.
- [Launch Pool](https://metaplex.com/docs/smart-contracts/genesis/launch-pool): Fair launch token distribution on Solana. Users deposit SOL and receive SPL tokens proportionally — an on-chain crowdsale with organic price discovery on the Genesis token launchpad.
- [Launching a Bonding Curve via the Metaplex API](https://metaplex.com/docs/smart-contracts/genesis/bonding-curve-launch): How to create, sign, send, and register a bonding curve token launch using the Genesis SDK and the Metaplex API — including creator fees, first buy, agent launches, and error handling.
-- [List Launches](https://metaplex.com/docs/smart-contracts/genesis/integration-apis/list-launches): Get active and upcoming Genesis launch listings. Returns a list of launches with metadata.
- [Locked LP Tokens](https://metaplex.com/docs/smart-contracts/genesis/locked-lp-tokens): When a Genesis bonding curve graduates, LP tokens from the Raydium CPMM pool are program-locked in a Genesis bucket with vesting set to never. Learn how to verify the lock onchain.
- [Presale](https://metaplex.com/docs/smart-contracts/genesis/presale): Run a fixed-price token presale on Solana. SPL token sale where users deposit SOL and receive tokens at a predetermined rate. On-chain token sale with the Genesis token launchpad.
-- [Register Launch](https://metaplex.com/docs/smart-contracts/genesis/integration-apis/register): Register a Genesis launch after on-chain transactions are confirmed. Validates the on-chain state and creates the launch listing.
- [Uniform Price Auction](https://metaplex.com/docs/smart-contracts/genesis/uniform-price-auction): Token auction on Solana with uniform clearing price. Competitive bidding for SPL token launches — an on-chain token sale mechanism for institutional and large-scale fundraising.
## Core (NFT Standard)
diff --git a/scripts/generate-llms-txt.mjs b/scripts/generate-llms-txt.mjs
index fe881d67..10d02101 100644
--- a/scripts/generate-llms-txt.mjs
+++ b/scripts/generate-llms-txt.mjs
@@ -106,6 +106,7 @@ function filePathToUrlPath(filePath) {
*/
function categorizePages(pages) {
const categories = {
+ 'Metaplex API (REST)': [],
'Genesis (Token Launch)': [],
'Core (NFT Standard)': [],
'Candy Machine': [],
@@ -122,7 +123,9 @@ function categorizePages(pages) {
for (const page of pages) {
const urlPath = page.urlPath
- if (urlPath.startsWith('/smart-contracts/genesis')) {
+ if (urlPath === '/api' || urlPath.startsWith('/api/')) {
+ categories['Metaplex API (REST)'].push(page)
+ } else if (urlPath.startsWith('/smart-contracts/genesis')) {
categories['Genesis (Token Launch)'].push(page)
} else if (urlPath.startsWith('/smart-contracts/core/') || urlPath === '/smart-contracts/core') {
if (!urlPath.includes('candy-machine')) {
@@ -204,6 +207,7 @@ function generateLlmsTxt(categories) {
'',
'- **New to Metaplex?** Start here: https://metaplex.com/docs/',
'- **Launching a token?** Use Genesis: https://metaplex.com/docs/smart-contracts/genesis',
+ '- **Calling the public REST API?** Reference: https://metaplex.com/docs/api — machine-readable OpenAPI spec: https://api.metaplex.com/v1/openapi.json (also /v1/openapi.yaml; RFC 9727 catalog at https://api.metaplex.com/.well-known/api-catalog)',
'- **Creating NFTs/Assets?** Use Core: https://metaplex.com/docs/smart-contracts/core',
'- **Launching an NFT collection?** Use Core Candy Machine: https://metaplex.com/docs/smart-contracts/core-candy-machine',
'- **Need JavaScript SDK?** Start with UMI: https://metaplex.com/docs/dev-tools/umi',
diff --git a/src/components/MobileNavigation.jsx b/src/components/MobileNavigation.jsx
index d4214274..9a293c2f 100644
--- a/src/components/MobileNavigation.jsx
+++ b/src/components/MobileNavigation.jsx
@@ -9,6 +9,7 @@ import { getLocalizedHref } from '@/config/languages'
import { useLocale, useTranslations } from '@/contexts/LocaleContext'
import {
BookOpenIcon,
+ CodeBracketIcon,
ComputerDesktopIcon,
CpuChipIcon,
DocumentTextIcon,
@@ -108,6 +109,12 @@ export function MobileNavigation({ page }) {
>
{t('home', 'Home')}
+
+ {t('api', 'API')}
+
{
*/}
+
+
+
+ {t('api', 'API')}
+
+
+
{productCategories.map((item, index) => {
// Map categories to their index page paths
const categoryPaths = {
diff --git a/src/components/products/agents/index.js b/src/components/products/agents/index.js
index bdd45d8f..3ffe7b4b 100644
--- a/src/components/products/agents/index.js
+++ b/src/components/products/agents/index.js
@@ -70,6 +70,15 @@ export const agents = {
},
],
},
+ {
+ title: 'API Reference',
+ links: [
+ {
+ title: 'Metaplex API Reference',
+ href: '/api',
+ },
+ ],
+ },
],
},
],
@@ -91,6 +100,11 @@ export const agents = {
ko: '시작하기',
zh: '快速入门',
},
+ 'API Reference': {
+ ja: 'APIリファレンス',
+ ko: 'API 레퍼런스',
+ zh: 'API 参考',
+ },
},
linkKeys: {
'Agent Onboarding': {
@@ -143,6 +157,11 @@ export const agents = {
ko: '에이전트 실행',
zh: '运行 Agent',
},
+ 'Metaplex API Reference': {
+ ja: 'Metaplex APIリファレンス',
+ ko: 'Metaplex API 레퍼런스',
+ zh: 'Metaplex API 参考',
+ },
},
}),
}
diff --git a/src/components/products/api/index.js b/src/components/products/api/index.js
new file mode 100644
index 00000000..1c143c74
--- /dev/null
+++ b/src/components/products/api/index.js
@@ -0,0 +1,216 @@
+import { documentationSection } from '@/shared/sections';
+import { GlobeAltIcon } from '@heroicons/react/24/outline';
+import { buildProductTranslations } from '@/config/navigation-translations';
+
+export const api = {
+ name: 'Metaplex API',
+ headline: 'Public REST API',
+ description:
+ 'The public REST API at api.metaplex.com — Genesis launch data, launch creation, and the agent registry.',
+ navigationMenuCatergory: 'Dev Tools',
+ path: 'api',
+ icon: ,
+ className: 'accent-green',
+ sections: [
+ {
+ ...documentationSection('api'),
+ isFallbackSection: false,
+ isPageFromSection: ({ pathname }) => {
+ return pathname === '/api' || pathname.startsWith('/api/');
+ },
+ navigation: [
+ {
+ title: 'Introduction',
+ links: [
+ {
+ title: 'Overview',
+ href: '/api',
+ },
+ ],
+ },
+ {
+ title: 'Launches',
+ links: [
+ {
+ title: 'Get Launch',
+ href: '/api/get-launch',
+ method: 'get',
+ },
+ {
+ title: 'Get Launches by Token',
+ href: '/api/get-launches-by-token',
+ method: 'get',
+ },
+ {
+ title: 'List Launches',
+ href: '/api/list-launches',
+ method: 'get',
+ },
+ {
+ title: 'Get Spotlight',
+ href: '/api/get-spotlight',
+ method: 'get',
+ },
+ {
+ title: 'Create Launch',
+ href: '/api/create-launch',
+ method: 'post',
+ },
+ {
+ title: 'Register Launch',
+ href: '/api/register',
+ method: 'post',
+ },
+ {
+ title: 'Verify Twitter',
+ href: '/api/verify-twitter',
+ method: 'post',
+ },
+ {
+ title: 'Claim Creator Rewards',
+ href: '/api/claim-creator-rewards',
+ method: 'post',
+ },
+ ],
+ },
+ {
+ title: 'Agents',
+ links: [
+ {
+ title: 'List Agents',
+ href: '/api/list-agents',
+ method: 'get',
+ },
+ {
+ title: 'Get Agent',
+ href: '/api/get-agent',
+ method: 'get',
+ },
+ {
+ title: 'Get Agent Card',
+ href: '/api/get-agent-card',
+ method: 'get',
+ },
+ {
+ title: 'Mint Agent',
+ href: '/api/mint-agent',
+ method: 'post',
+ },
+ {
+ title: 'Fund Agent',
+ href: '/api/fund-agent',
+ method: 'post',
+ },
+ {
+ title: 'Withdraw from Agent',
+ href: '/api/withdraw-agent',
+ method: 'post',
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ localizedNavigation: buildProductTranslations({
+ headlineTranslations: {
+ ja: '公開REST API',
+ ko: '공개 REST API',
+ zh: '公共 REST API',
+ },
+ descriptionTranslations: {
+ ja: 'api.metaplex.com の公開REST API — Genesisローンチデータ、ローンチ作成、エージェントレジストリ。',
+ ko: 'api.metaplex.com의 공개 REST API — Genesis 런치 데이터, 런치 생성, 에이전트 레지스트리.',
+ zh: 'api.metaplex.com 的公共 REST API — Genesis 发行数据、发行创建和 Agent 注册表。',
+ },
+ sectionKeys: {
+ 'Introduction': 'sections.introduction',
+ 'Launches': {
+ ja: 'ローンチ',
+ ko: '런치',
+ zh: '发行',
+ },
+ 'Agents': {
+ ja: 'エージェント',
+ ko: '에이전트',
+ zh: 'Agent',
+ },
+ },
+ linkKeys: {
+ 'Overview': {
+ ja: '概要',
+ ko: '개요',
+ zh: '概览',
+ },
+ 'Get Launch': {
+ ja: 'ローンチ取得',
+ ko: '런치 조회',
+ zh: '获取发行',
+ },
+ 'Get Launches by Token': {
+ ja: 'トークンによるローンチ取得',
+ ko: '토큰별 런치 조회',
+ zh: '按代币获取发行',
+ },
+ 'List Launches': {
+ ja: 'ローンチ一覧',
+ ko: '런치 목록',
+ zh: '发行列表',
+ },
+ 'Get Spotlight': {
+ ja: 'スポットライト取得',
+ ko: '스포트라이트 조회',
+ zh: '获取精选',
+ },
+ 'Create Launch': {
+ ja: 'ローンチ作成',
+ ko: '런치 생성',
+ zh: '创建发行',
+ },
+ 'Register Launch': {
+ ja: 'ローンチ登録',
+ ko: '런치 등록',
+ zh: '注册发行',
+ },
+ 'Verify Twitter': {
+ ja: 'Twitter認証',
+ ko: 'Twitter 인증',
+ zh: '验证 Twitter',
+ },
+ 'Claim Creator Rewards': {
+ ja: 'クリエイター報酬の請求',
+ ko: '창작자 보상 청구',
+ zh: '认领创作者奖励',
+ },
+ 'List Agents': {
+ ja: 'エージェント一覧',
+ ko: '에이전트 목록',
+ zh: '列出 Agent',
+ },
+ 'Get Agent': {
+ ja: 'エージェントの取得',
+ ko: '에이전트 조회',
+ zh: '获取 Agent',
+ },
+ 'Get Agent Card': {
+ ja: 'エージェントカードの取得',
+ ko: '에이전트 카드 조회',
+ zh: '获取 Agent 卡片',
+ },
+ 'Mint Agent': {
+ ja: 'エージェントのミント',
+ ko: '에이전트 민팅',
+ zh: '铸造 Agent',
+ },
+ 'Fund Agent': {
+ ja: 'エージェントへの入金',
+ ko: '에이전트 자금 입금',
+ zh: '为 Agent 注资',
+ },
+ 'Withdraw from Agent': {
+ ja: 'エージェントからの出金',
+ ko: '에이전트 자금 출금',
+ zh: '从 Agent 提款',
+ },
+ },
+ }),
+};
diff --git a/src/components/products/genesis/index.js b/src/components/products/genesis/index.js
index a7256519..7b2b7e48 100644
--- a/src/components/products/genesis/index.js
+++ b/src/components/products/genesis/index.js
@@ -126,6 +126,10 @@ export const genesis = {
title: 'Theory of Operation',
href: '/smart-contracts/genesis/bonding-curve-theory',
},
+ {
+ title: 'Protocol Parameters',
+ href: '/smart-contracts/genesis/bonding-curve-parameters',
+ },
{
title: 'Advanced Internals',
href: '/smart-contracts/genesis/bonding-curve-internals',
@@ -170,43 +174,8 @@ export const genesis = {
title: 'Integration APIs',
links: [
{
- title: 'Overview',
- href: '/smart-contracts/genesis/integration-apis',
- },
- {
- title: 'Get Launch',
- href: '/smart-contracts/genesis/integration-apis/get-launch',
- method: 'get',
- },
- {
- title: 'Get Launches by Token',
- href: '/smart-contracts/genesis/integration-apis/get-launches-by-token',
- method: 'get',
- },
- {
- title: 'List Launches',
- href: '/smart-contracts/genesis/integration-apis/list-launches',
- method: 'get',
- },
- {
- title: 'Get Spotlight',
- href: '/smart-contracts/genesis/integration-apis/get-spotlight',
- method: 'get',
- },
- {
- title: 'Create Launch',
- href: '/smart-contracts/genesis/integration-apis/create-launch',
- method: 'post',
- },
- {
- title: 'Register Launch',
- href: '/smart-contracts/genesis/integration-apis/register',
- method: 'post',
- },
- {
- title: 'Claim Creator Rewards',
- href: '/smart-contracts/genesis/integration-apis/claim-creator-rewards',
- method: 'post',
+ title: 'Metaplex API Reference',
+ href: '/api',
},
{
title: 'Fetch Bucket State',
@@ -254,6 +223,7 @@ export const genesis = {
'JavaScript SDK': 'JavaScript SDK',
'API Client': 'API Client',
'Theory of Operation': 'Theory of Operation',
+ 'Protocol Parameters': 'Protocol Parameters',
'Advanced Internals': 'Advanced Internals',
'Swap Integration': 'Swap Integration',
'Indexing & Events': 'Indexing & Events',
@@ -263,13 +233,7 @@ export const genesis = {
'Launch Pool': 'Launch Pool',
'Presale': 'Presale',
'Uniform Price Auction': 'Uniform Price Auction',
- 'Get Launch': 'Get Launch',
- 'Get Launches by Token': 'Get Launches by Token',
- 'List Launches': 'List Launches',
- 'Get Spotlight': 'Get Spotlight',
- 'Create Launch': 'Create Launch',
- 'Register Launch': 'Register Launch',
- 'Claim Creator Rewards': 'Claim Creator Rewards',
+ 'Metaplex API Reference': 'Metaplex API Reference',
'Fetch Bucket State': 'Fetch Bucket State',
'Fetch Deposit State': 'Fetch Deposit State',
'Locked LP Tokens': 'Locked LP Tokens',
@@ -292,6 +256,7 @@ export const genesis = {
'JavaScript SDK': 'JavaScript SDK',
'API Client': 'APIクライアント',
'Theory of Operation': '動作の理論',
+ 'Protocol Parameters': 'プロトコルパラメーター',
'Advanced Internals': '高度な内部構造',
'Swap Integration': 'スワップインテグレーション',
'Indexing & Events': 'インデックスとイベント',
@@ -301,13 +266,7 @@ export const genesis = {
'Launch Pool': 'ローンチプール',
'Presale': 'プレセール',
'Uniform Price Auction': 'ユニフォームプライスオークション',
- 'Get Launch': 'ローンチ取得',
- 'Get Launches by Token': 'トークンによるローンチ取得',
- 'List Launches': 'ローンチ一覧',
- 'Get Spotlight': 'スポットライト取得',
- 'Create Launch': 'ローンチ作成',
- 'Register Launch': 'ローンチ登録',
- 'Claim Creator Rewards': 'クリエイター報酬の請求',
+ 'Metaplex API Reference': 'Metaplex APIリファレンス',
'Fetch Bucket State': 'バケット状態の取得',
'Fetch Deposit State': 'デポジット状態の取得',
'Locked LP Tokens': 'ロックされたLPトークン',
@@ -330,6 +289,7 @@ export const genesis = {
'JavaScript SDK': 'JavaScript SDK',
'API Client': 'API 클라이언트',
'Theory of Operation': '동작 원리',
+ 'Protocol Parameters': '프로토콜 파라미터',
'Advanced Internals': '고급 내부 구조',
'Swap Integration': '스왑 통합',
'Indexing & Events': '인덱싱 및 이벤트',
@@ -339,13 +299,7 @@ export const genesis = {
'Launch Pool': '런치 풀',
'Presale': '프리세일',
'Uniform Price Auction': '균일가 경매',
- 'Get Launch': '런치 조회',
- 'Get Launches by Token': '토큰별 런치 조회',
- 'List Launches': '런치 목록',
- 'Get Spotlight': '스포트라이트 조회',
- 'Create Launch': '런치 생성',
- 'Register Launch': '런치 등록',
- 'Claim Creator Rewards': '창작자 보상 청구',
+ 'Metaplex API Reference': 'Metaplex API 레퍼런스',
'Fetch Bucket State': '버킷 상태 조회',
'Fetch Deposit State': '예치 상태 조회',
'Locked LP Tokens': '잠긴 LP 토큰',
@@ -368,6 +322,7 @@ export const genesis = {
'JavaScript SDK': 'JavaScript SDK',
'API Client': 'API客户端',
'Theory of Operation': '操作原理',
+ 'Protocol Parameters': '协议参数',
'Advanced Internals': '高级内部结构',
'Swap Integration': '交换集成',
'Indexing & Events': '索引与事件',
@@ -377,13 +332,7 @@ export const genesis = {
'Launch Pool': '发行池',
'Presale': '预售',
'Uniform Price Auction': '统一价格拍卖',
- 'Get Launch': '获取发行',
- 'Get Launches by Token': '按代币获取发行',
- 'List Launches': '发行列表',
- 'Get Spotlight': '获取精选',
- 'Create Launch': '创建发行',
- 'Register Launch': '注册发行',
- 'Claim Creator Rewards': '认领创作者奖励',
+ 'Metaplex API Reference': 'Metaplex API 参考',
'Fetch Bucket State': '获取桶状态',
'Fetch Deposit State': '获取存款状态',
'Locked LP Tokens': '锁定的LP代币',
diff --git a/src/components/products/index.js b/src/components/products/index.js
index 10cad732..2376632b 100644
--- a/src/components/products/index.js
+++ b/src/components/products/index.js
@@ -1,5 +1,6 @@
import { agents } from './agents';
import { amman } from './amman';
+import { api } from './api';
import { auctionHouse } from './auctionHouse';
import { beet } from './beet';
import { bubblegum } from './bubblegum';
@@ -66,6 +67,7 @@ export const products = [
gumdrop,
tokenEntangler,
das,
+ api,
umi,
cli,
shank,
diff --git a/src/locales/en.json b/src/locales/en.json
index b3d69a78..58bc884f 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -59,6 +59,7 @@
},
"header": {
"mpl": "MPL",
+ "api": "API",
"devTools": "Dev Tools",
"guides": "Guides",
"tokens": "Tokens",
diff --git a/src/locales/ja.json b/src/locales/ja.json
index 7b7e903a..9ac15a38 100644
--- a/src/locales/ja.json
+++ b/src/locales/ja.json
@@ -59,6 +59,7 @@
},
"header": {
"mpl": "MPL",
+ "api": "API",
"devTools": "開発ツール",
"guides": "ガイド",
"home": "ホーム",
diff --git a/src/locales/ko.json b/src/locales/ko.json
index b2743894..4e2fcb4f 100644
--- a/src/locales/ko.json
+++ b/src/locales/ko.json
@@ -59,6 +59,7 @@
},
"header": {
"mpl": "MPL",
+ "api": "API",
"devTools": "개발 도구",
"guides": "가이드",
"home": "홈",
diff --git a/src/locales/zh.json b/src/locales/zh.json
index 57afb52e..b1c2cea9 100644
--- a/src/locales/zh.json
+++ b/src/locales/zh.json
@@ -60,6 +60,7 @@
},
"header": {
"mpl": "MPL",
+ "api": "API",
"devTools": "开发工具",
"guides": "指南",
"aura": "Aura",
diff --git a/src/middleware.js b/src/middleware.js
index 336201f2..dcf48783 100644
--- a/src/middleware.js
+++ b/src/middleware.js
@@ -48,8 +48,8 @@ const standaloneRedirects = {
'/ko/smart-contracts/genesis/priced-sale': '/ko/smart-contracts/genesis/presale',
'/zh/smart-contracts/genesis/priced-sale': '/zh/smart-contracts/genesis/presale',
// Genesis aggregation/api pages consolidated into integration-apis
- '/smart-contracts/genesis/aggregation': '/smart-contracts/genesis/integration-apis',
- '/smart-contracts/genesis/api': '/smart-contracts/genesis/integration-apis',
+ '/smart-contracts/genesis/aggregation': '/api',
+ '/smart-contracts/genesis/api': '/api',
// Agents: run-agent renamed to read-agent-data
'/agents/run-agent': '/agents/read-agent-data',
'/ja/agents/run-agent': '/ja/agents/read-agent-data',
@@ -65,12 +65,12 @@ const standaloneRedirects = {
'/dev-tools/skill/installation': '/agents/skill/installation',
'/dev-tools/skill/how-it-works': '/agents/skill/how-it-works',
'/dev-tools/skill/programs-and-operations': '/agents/skill/programs-and-operations',
- '/ja/smart-contracts/genesis/aggregation': '/ja/smart-contracts/genesis/integration-apis',
- '/ja/smart-contracts/genesis/api': '/ja/smart-contracts/genesis/integration-apis',
- '/ko/smart-contracts/genesis/aggregation': '/ko/smart-contracts/genesis/integration-apis',
- '/ko/smart-contracts/genesis/api': '/ko/smart-contracts/genesis/integration-apis',
- '/zh/smart-contracts/genesis/aggregation': '/zh/smart-contracts/genesis/integration-apis',
- '/zh/smart-contracts/genesis/api': '/zh/smart-contracts/genesis/integration-apis',
+ '/ja/smart-contracts/genesis/aggregation': '/ja/api',
+ '/ja/smart-contracts/genesis/api': '/ja/api',
+ '/ko/smart-contracts/genesis/aggregation': '/ko/api',
+ '/ko/smart-contracts/genesis/api': '/ko/api',
+ '/zh/smart-contracts/genesis/aggregation': '/zh/api',
+ '/zh/smart-contracts/genesis/api': '/zh/api',
}
// Legacy documentation migration: programs moved under /smart-contracts,
@@ -89,6 +89,32 @@ const legacyDocMigrations = {
'/mobile-sdks': '/dev-tools/mobile-sdks',
}
+// Genesis Integration APIs REST pages moved to the top-level /api section.
+// The two SDK chain-method pages (fetch-bucket-state, fetch-deposit-state)
+// stayed under Genesis, so only these slugs redirect. Locale-aware.
+const integrationApisMovedSlugs = [
+ 'get-launch',
+ 'get-launches-by-token',
+ 'list-launches',
+ 'get-spotlight',
+ 'create-launch',
+ 'register',
+ 'claim-creator-rewards',
+ 'verify-twitter',
+]
+
+function integrationApisRedirect(pathname) {
+ const match = pathname.match(
+ /^\/(?:(ja|ko|zh)\/)?smart-contracts\/genesis\/integration-apis(?:\/([^/]+))?$/
+ )
+ if (!match) return null
+ const localePrefix = match[1] ? `/${match[1]}` : ''
+ const slug = match[2]
+ if (!slug) return `${localePrefix}/api`
+ if (integrationApisMovedSlugs.includes(slug)) return `${localePrefix}/api/${slug}`
+ return null
+}
+
function legacyDocRedirect(pathname) {
const match = pathname.match(/^\/(?:(ja|ko|zh)\/)?legacy-documentation(\/.*)?$/)
if (!match) return null
@@ -304,6 +330,12 @@ export function middleware(request) {
return redirectTo(request, legacyDocDestination)
}
+ // Genesis Integration APIs pages moved to /api (locale-aware)
+ const integrationApisDestination = integrationApisRedirect(pathname)
+ if (integrationApisDestination) {
+ return redirectTo(request, integrationApisDestination)
+ }
+
// Handle legacy redirects FIRST (specific sub-path redirects)
// This ensures old bookmarked URLs like /bubblegum/getting-started
// redirect directly to the final destination /smart-contracts/bubblegum/sdk
@@ -376,12 +408,15 @@ export function middleware(request) {
}
// Rewrite root paths to /en/* for English content
- // Skip paths that start with /ja, /ko, /zh, /en, /_next, /api, or contain a file extension
+ // Skip paths that start with /ja, /ko, /zh, /en, /_next, or contain a file
+ // extension. /api/og (the OG-image Next API route) must keep its literal
+ // path; every other /api/* path is documentation content under
+ // src/pages/{locale}/api and needs the /en rewrite like any docs page.
if (!pathname.startsWith('/ja') &&
!pathname.startsWith('/ko') &&
!pathname.startsWith('/zh') &&
!pathname.startsWith('/_next') &&
- !pathname.startsWith('/api') &&
+ !pathname.startsWith('/api/og') &&
!pathname.includes('.')) {
const url = request.nextUrl.clone()
url.pathname = `/en${pathname === '/' ? '' : pathname}`
diff --git a/src/pages/en/smart-contracts/genesis/integration-apis/claim-creator-rewards.md b/src/pages/en/api/claim-creator-rewards.md
similarity index 98%
rename from src/pages/en/smart-contracts/genesis/integration-apis/claim-creator-rewards.md
rename to src/pages/en/api/claim-creator-rewards.md
index f4b3f342..bb45e974 100644
--- a/src/pages/en/smart-contracts/genesis/integration-apis/claim-creator-rewards.md
+++ b/src/pages/en/api/claim-creator-rewards.md
@@ -1,6 +1,6 @@
---
title: Claim Creator Rewards
-metaTitle: Genesis - Claim Creator Rewards | REST API | Metaplex
+metaTitle: Metaplex API - Claim Creator Rewards | REST API | Metaplex
description: Claim accrued creator rewards for a wallet across all Genesis bonding-curve and Raydium buckets in a single API call. Returns ready-to-sign Solana transactions.
method: POST
created: '04-23-2026'
diff --git a/src/pages/en/smart-contracts/genesis/integration-apis/create-launch.md b/src/pages/en/api/create-launch.md
similarity index 96%
rename from src/pages/en/smart-contracts/genesis/integration-apis/create-launch.md
rename to src/pages/en/api/create-launch.md
index 0466f71c..ffa821c6 100644
--- a/src/pages/en/smart-contracts/genesis/integration-apis/create-launch.md
+++ b/src/pages/en/api/create-launch.md
@@ -1,6 +1,6 @@
---
title: Create Launch
-metaTitle: Genesis - Create Launch | REST API | Metaplex
+metaTitle: Metaplex API - Create Launch | REST API | Metaplex
description: Build on-chain transactions for a new Genesis token launch. Returns unsigned transactions ready for signing and sending.
method: POST
created: '02-19-2026'
@@ -19,14 +19,14 @@ programmingLanguage:
- TypeScript
---
-Build the on-chain transactions for a new Genesis token launch. Returns unsigned transactions that must be signed and sent before calling [Register Launch](/smart-contracts/genesis/integration-apis/register). {% .lead %}
+Build the on-chain transactions for a new Genesis token launch. Returns unsigned transactions that must be signed and sent before calling [Register Launch](/api/register). {% .lead %}
{% callout type="warning" title="Use the SDK instead" %}
Most integrators should use [`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client) from the SDK, which handles creating transactions, signing, sending, and registering the launch in a single call. This endpoint is only needed if you require direct HTTP access without the SDK.
{% /callout %}
{% callout type="note" %}
-We recommend using the Create API to build launches programmatically, as [metaplex.com](https://www.metaplex.com) does not yet support the full feature set of the Genesis program. Mainnet launches created through the API will appear on metaplex.com once [registered](/smart-contracts/genesis/integration-apis/register).
+We recommend using the Create API to build launches programmatically, as [metaplex.com](https://www.metaplex.com) does not yet support the full feature set of the Genesis program. Mainnet launches created through the API will appear on metaplex.com once [registered](/api/register).
{% /callout %}
## Endpoint
diff --git a/src/pages/en/api/fund-agent.md b/src/pages/en/api/fund-agent.md
new file mode 100644
index 00000000..0c1daeab
--- /dev/null
+++ b/src/pages/en/api/fund-agent.md
@@ -0,0 +1,99 @@
+---
+title: Fund Agent
+metaTitle: Metaplex API - Fund Agent Wallet | REST API | Metaplex
+description: Build a SOL transfer transaction that funds a registered agent's wallet, with an on-chain memo.
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - fund agent
+ - agent wallet
+ - SOL transfer
+about:
+ - API endpoint
+ - Agent finance
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+Build a transaction that transfers SOL from a sender wallet to an agent's signer PDA wallet, tagged with an on-chain memo. Anyone can fund any agent. {% .lead %}
+
+## Summary
+
+- Transfers SOL to the agent's wallet PDA (resolved server-side from the agent address)
+- Attaches a required memo instruction, signed by the sender, for attribution
+- Returns an unsigned transaction for the sender to sign and submit
+
+## Quick Reference
+
+| Item | Value |
+|------|-------|
+| **Method** | `POST` |
+| **Path** | `/agents/{address}/fund` |
+| **Auth** | None |
+| **Response** | Serialized transaction |
+
+## Endpoint
+
+```
+POST /agents/{address}/fund
+```
+
+## Path Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-------------|
+| `address` | `string` | Yes | The agent's Core asset mint address (base58). |
+
+## Request Body
+
+| Field | Type | Required | Description |
+|-------|------|----------|-------------|
+| `sender` | `string` | Yes | Wallet sending the SOL (base58). Signs the transaction. |
+| `amount` | `number` | Yes | Amount in SOL. Must be positive. |
+| `memo` | `string` | Yes | Memo recorded on-chain, 1–256 characters. |
+| `network` | `string` | No | `solana-mainnet` (default) or `solana-devnet`. |
+
+## Example Request
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN/fund" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "sender": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "amount": 0.5,
+ "memo": "Operating budget for July"
+ }'
+```
+
+## Response
+
+```json
+{
+ "success": true,
+ "tx": "",
+ "blockhash": {
+ "blockhash": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
+ "lastValidBlockHeight": 123456789
+ }
+}
+```
+
+The sender deserializes, signs, and submits the transaction — see [Signing and Submitting](/api/mint-agent#signing-and-submitting).
+
+## Errors
+
+| Status | Body | Meaning |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "Invalid input data" }` | Body failed validation (bad pubkey, non-positive amount, missing memo). |
+| `404` | `{ "success": false, "error": "Agent not found" }` | No agent registered at this address on the given network. |
+| `500` | `{ "success": false, "error": "Failed to prepare fund transaction" }` | Server error. |
+
+## Notes
+
+- The destination is the agent's **wallet PDA**, not the Core asset address — the API resolves it for you.
+- To move funds back out, the agent owner uses [Withdraw](/api/withdraw-agent).
+- For the concepts behind agent wallets, see [Agent Finance](/agents/agent-finance).
diff --git a/src/pages/en/api/get-agent-card.md b/src/pages/en/api/get-agent-card.md
new file mode 100644
index 00000000..5cd6e62a
--- /dev/null
+++ b/src/pages/en/api/get-agent-card.md
@@ -0,0 +1,109 @@
+---
+title: Get Agent Card
+metaTitle: Metaplex API - Get A2A AgentCard | REST API | Metaplex
+description: Fetch the hosted A2A AgentCard for a registered agent. Standards-compliant AgentCard JSON with ETag caching.
+method: GET
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - A2A
+ - AgentCard
+ - agent discovery
+about:
+ - API endpoint
+ - A2A protocol
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+Fetch the hosted A2A AgentCard for a registered agent. Returns raw AgentCard JSON (A2A spec §4.4) so A2A clients can consume it directly. {% .lead %}
+
+## Summary
+
+Metaplex hosts an A2A AgentCard for agents registered through the app. EIP-8004 consumers discover this endpoint through the agent's `services[]` entry.
+
+- Returns the AgentCard exactly as stored — no response envelope
+- Supports conditional requests via `ETag` / `If-None-Match` (`304 Not Modified`)
+- Returns `404` when the agent has no hosted card
+
+## Quick Reference
+
+| Item | Value |
+|------|-------|
+| **Method** | `GET` |
+| **Path** | `/agents/{address}/agent-card.json` |
+| **Auth** | None |
+| **Response** | A2A AgentCard JSON |
+| **Caching** | `max-age=60, stale-while-revalidate=600`, ETag |
+
+## Endpoint
+
+```
+GET /agents/{address}/agent-card.json
+```
+
+## Path Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-------------|
+| `address` | `string` | Yes | The agent's Core asset mint address (base58). |
+
+## Query Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-------------|
+| `network` | `string` | No | Network to query. Default: `solana-mainnet`. Use `solana-devnet` for devnet. |
+
+## Example Request
+
+```bash
+curl "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN/agent-card.json"
+```
+
+## Response
+
+An [A2A AgentCard](https://a2a-protocol.org/latest/specification/#44-agentcard) object:
+
+```json
+{
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "url": "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json",
+ "version": "1.0.0",
+ "capabilities": { "streaming": false },
+ "skills": [
+ {
+ "id": "trade",
+ "name": "Trade tokens",
+ "description": "Executes token swaps on Solana.",
+ "tags": ["solana", "trading"]
+ }
+ ],
+ "defaultInputModes": ["text/plain"],
+ "defaultOutputModes": ["text/plain"]
+}
+```
+
+## Conditional Requests
+
+The response includes an `ETag` header. Send it back as `If-None-Match` to receive `304 Not Modified` when the card is unchanged:
+
+```bash
+curl -H 'If-None-Match: "m3k9x1"' \
+ "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json"
+```
+
+## Errors
+
+| Status | Meaning |
+|--------|---------|
+| `304` | Card unchanged since the ETag you supplied. |
+| `404` | Agent not found, or the agent has no hosted AgentCard. |
+
+## Notes
+
+- This endpoint intentionally has **no** `success` envelope — the body is the AgentCard itself, per the A2A discovery convention.
+- Cards are either authored by the agent creator at mint time or synthesized from the agent's registration metadata.
diff --git a/src/pages/en/api/get-agent.md b/src/pages/en/api/get-agent.md
new file mode 100644
index 00000000..14ae95fb
--- /dev/null
+++ b/src/pages/en/api/get-agent.md
@@ -0,0 +1,183 @@
+---
+title: Get Agent
+metaTitle: Metaplex API - Get Agent | REST API | Metaplex
+description: Fetch a single registered agent by Core asset address, including its EIP-8004 registration data, created tokens, and primary agent token.
+method: GET
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - agent detail
+ - EIP-8004
+ - agent registry
+about:
+ - API endpoint
+ - Agent data
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+ - Rust
+---
+
+Fetch a single registered agent by its Core asset address. Returns the agent's identity, EIP-8004 registration metadata, the tokens it has created, and its primary agent token. {% .lead %}
+
+## Summary
+
+Retrieve full details for one agent, combining on-chain identity with indexed metadata.
+
+- Agent identity: name, description, image, owner, authority, and signer PDA wallet
+- EIP-8004 registration JSON fields merged into the response
+- `tokens` — every token the agent has launched, as `BaseToken` objects
+- `agentTokenInfo` — the agent's primary token, resolved from launches or on-chain metadata
+
+## Quick Reference
+
+| Item | Value |
+|------|-------|
+| **Method** | `GET` |
+| **Path** | `/agents/{address}` |
+| **Auth** | None |
+| **Response** | Agent detail object |
+| **Pagination** | None |
+
+## Endpoint
+
+```
+GET /agents/{address}
+```
+
+## Path Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-------------|
+| `address` | `string` | Yes | The agent's Core asset mint address (base58). |
+
+## Query Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-------------|
+| `network` | `string` | No | Network to query. Default: `solana-mainnet`. Use `solana-devnet` for devnet. |
+
+## Example Request
+
+```bash
+curl "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+```
+
+## Response
+
+```json
+{
+ "success": true,
+ "address": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN",
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "image": "https://example.com/agent.png",
+ "walletAddress": "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
+ "owner": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "authority": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "agentMetadataUri": "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json",
+ "agentToken": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "a2aCard": { "…": "A2A AgentCard (spec §4.4), when hosted" },
+ "verifiedAt": null,
+ "tokens": [
+ {
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "name": "Agent Token",
+ "symbol": "AGT",
+ "image": "https://example.com/token.png",
+ "description": "The agent's primary token."
+ }
+ ],
+ "agentTokenInfo": {
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "name": "Agent Token",
+ "symbol": "AGT",
+ "image": "https://example.com/token.png",
+ "description": "The agent's primary token."
+ }
+}
+```
+
+## Response Type
+
+### TypeScript
+
+```ts
+interface AgentResponse {
+ success: true;
+ /** Core asset address (the NFT representing this agent) */
+ address: string;
+ name: string;
+ description: string;
+ image?: string;
+ /** The agent's signer PDA wallet (derived from the Core asset) */
+ walletAddress: string;
+ /** Owner of the Core asset */
+ owner: string;
+ /** Update authority of the Core asset */
+ authority?: string;
+ agentMetadataUri?: string;
+ /** Primary token mint from on-chain agent identity */
+ agentToken?: string;
+ /** Hosted A2A AgentCard (spec §4.4) — only when hosted by Metaplex */
+ a2aCard?: Record | null;
+ /** When an admin verified this agent */
+ verifiedAt?: string | null;
+ /** Tokens the agent has launched */
+ tokens: BaseToken[];
+ /** The agent's primary token, when set */
+ agentTokenInfo?: BaseToken;
+ // …plus any additional EIP-8004 registration fields
+}
+
+interface BaseToken {
+ address: string;
+ name: string;
+ symbol: string;
+ image: string;
+ description: string;
+}
+```
+
+## Usage Examples
+
+### TypeScript
+
+```ts
+const response = await fetch(
+ "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+);
+const agent: AgentResponse = await response.json();
+if (agent.success) {
+ console.log(agent.name, agent.walletAddress);
+ console.log(`${agent.tokens.length} tokens launched`);
+}
+```
+
+### Rust
+
+```rust
+let agent = reqwest::get(
+ "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+)
+.await?
+.json::()
+.await?;
+
+println!("{} — wallet {}", agent["name"], agent["walletAddress"]);
+```
+
+## Errors
+
+| Status | Body | Meaning |
+|--------|------|---------|
+| `404` | `{ "success": false, "error": "Agent not found" }` | No agent registered at this address on the given network. |
+| `500` | `{ "success": false, "error": "Failed to fetch agent" }` | Server error. |
+
+## Notes
+
+- The response merges on-chain agent identity with the agent's EIP-8004 registration JSON, so additional metadata fields may appear alongside the documented ones.
+- `agentTokenInfo` falls back to on-chain token metadata when the agent token is not among the agent's own launches.
+- Responses are cached; allow a short delay for recent on-chain changes to appear.
diff --git a/src/pages/en/smart-contracts/genesis/integration-apis/get-launch.md b/src/pages/en/api/get-launch.md
similarity index 93%
rename from src/pages/en/smart-contracts/genesis/integration-apis/get-launch.md
rename to src/pages/en/api/get-launch.md
index 3ce5a33d..0e2f7222 100644
--- a/src/pages/en/smart-contracts/genesis/integration-apis/get-launch.md
+++ b/src/pages/en/api/get-launch.md
@@ -1,6 +1,6 @@
---
title: Get Launch
-metaTitle: Genesis - Get Launch | REST API | Metaplex
+metaTitle: Metaplex API - Get Launch | REST API | Metaplex
description: Get launch data by genesis address. Returns launch info, token metadata, and social links.
method: GET
created: '01-15-2025'
@@ -102,7 +102,7 @@ curl https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaS
## Response Type
-See [Shared Types](/smart-contracts/genesis/integration-apis#shared-types) for `Launch`, `BaseToken`, and `Socials` definitions.
+See [Shared Types](/api#shared-types) for `Launch`, `BaseToken`, and `Socials` definitions.
### TypeScript
@@ -162,6 +162,6 @@ println!("{}", response.data.base_token.name); // "My Token"
## Notes
-- Finding genesis pubkeys requires indexing or `getProgramAccounts`. If you only have a token mint, use the [Get Launches by Token](/smart-contracts/genesis/integration-apis/get-launches-by-token) endpoint instead.
+- Finding genesis pubkeys requires indexing or `getProgramAccounts`. If you only have a token mint, use the [Get Launches by Token](/api/get-launches-by-token) endpoint instead.
- Returns `404` if the genesis address is not found or does not have a valid launch.
- The `mechanic` field indicates the allocation mechanism (e.g., `launchpoolV2`, `presaleV2`). The `type` field indicates the underlying launch mechanism (`launchpool` or `presale`).
diff --git a/src/pages/en/smart-contracts/genesis/integration-apis/get-launches-by-token.md b/src/pages/en/api/get-launches-by-token.md
similarity index 95%
rename from src/pages/en/smart-contracts/genesis/integration-apis/get-launches-by-token.md
rename to src/pages/en/api/get-launches-by-token.md
index e48bb403..166b6887 100644
--- a/src/pages/en/smart-contracts/genesis/integration-apis/get-launches-by-token.md
+++ b/src/pages/en/api/get-launches-by-token.md
@@ -1,6 +1,6 @@
---
title: Get Launches by Token
-metaTitle: Genesis - Get Launches by Token | REST API | Metaplex
+metaTitle: Metaplex API - Get Launches by Token | REST API | Metaplex
description: Get all launches associated with a token mint address. Returns launch info, token metadata, and social links.
method: GET
created: '01-15-2025'
@@ -104,7 +104,7 @@ curl https://api.metaplex.com/v1/tokens/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyT
## Response Type
-See [Shared Types](/smart-contracts/genesis/integration-apis#shared-types) for `Launch`, `BaseToken`, and `Socials` definitions.
+See [Shared Types](/api#shared-types) for `Launch`, `BaseToken`, and `Socials` definitions.
### TypeScript
diff --git a/src/pages/en/smart-contracts/genesis/integration-apis/get-spotlight.md b/src/pages/en/api/get-spotlight.md
similarity index 95%
rename from src/pages/en/smart-contracts/genesis/integration-apis/get-spotlight.md
rename to src/pages/en/api/get-spotlight.md
index f8890754..49e88e1f 100644
--- a/src/pages/en/smart-contracts/genesis/integration-apis/get-spotlight.md
+++ b/src/pages/en/api/get-spotlight.md
@@ -1,6 +1,6 @@
---
title: Get Spotlight
-metaTitle: Genesis - Get Spotlight | REST API | Metaplex
+metaTitle: Metaplex API - Get Spotlight | REST API | Metaplex
description: Get featured spotlight launches from Genesis. Returns curated launches highlighted by the platform.
method: GET
created: '01-15-2025'
@@ -99,7 +99,7 @@ curl "https://api.metaplex.com/v1/launches?spotlight=true"
## Response Type
-See [Shared Types](/smart-contracts/genesis/integration-apis#shared-types) for `Launch`, `BaseToken`, and `Socials` definitions.
+See [Shared Types](/api#shared-types) for `Launch`, `BaseToken`, and `Socials` definitions.
### TypeScript
diff --git a/src/pages/en/api/index.md b/src/pages/en/api/index.md
new file mode 100644
index 00000000..2dfc7096
--- /dev/null
+++ b/src/pages/en/api/index.md
@@ -0,0 +1,272 @@
+---
+title: Metaplex API
+metaTitle: Metaplex API - Public REST API Reference | Metaplex
+description: The Metaplex public REST API at api.metaplex.com — Genesis launch data, launch creation, the agent registry, and agent wallet transactions. No authentication required.
+created: '01-15-2025'
+updated: '08-01-2026'
+keywords:
+ - Metaplex API
+ - Genesis API
+ - agent registry API
+ - launch data
+ - token queries
+ - REST API
+about:
+ - API integration
+ - Data aggregation
+ - Launch information
+ - Agent registry
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+ - Rust
+---
+
+The Metaplex API is the public REST API at `api.metaplex.com`. It serves Genesis launch data, builds launch-creation transactions, and exposes the Metaplex Agent Registry — browsing agents, serving A2A AgentCards, and building agent wallet transactions. It is the same API that powers the [metaplex.com](https://www.metaplex.com) launch platform — the endpoints documented here are what the site itself runs on. {% .lead %}
+
+## Summary
+
+The Metaplex API provides public HTTP access to Genesis launch data, launch creation, and the agent registry — no SDK or authentication required.
+
+- Query launches by genesis address, token mint, or browse all active launches
+- Create and register new Genesis launches
+- Browse and search the agent registry; fetch per-agent A2A AgentCards
+- Build agent mint, fund, and withdraw transactions
+- Public REST API at `https://api.metaplex.com/v1` — no authentication required
+- Powers the [metaplex.com](https://www.metaplex.com) launch platform — integrators consume the same endpoints the platform uses
+- Supports Solana mainnet (default) and devnet via `network` query parameter
+- Machine-readable OpenAPI 3.1 specification: [YAML](https://api.metaplex.com/v1/openapi.yaml) (canonical) / [JSON](https://api.metaplex.com/v1/openapi.json), discoverable via the [RFC 9727 API catalog](https://api.metaplex.com/.well-known/api-catalog)
+
+## Base URL
+
+```
+https://api.metaplex.com/v1
+```
+
+## Network Selection
+
+By default, the API returns data from Solana mainnet. To query devnet launches instead, add the `network` query parameter:
+
+```
+?network=solana-devnet
+```
+
+**Example:**
+
+```bash
+# Mainnet (default)
+curl https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN
+
+# Devnet
+curl "https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN?network=solana-devnet"
+```
+
+## Authentication
+
+No authentication is required. The API is public with rate limits.
+
+## Launch Endpoints
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | [`/launches/{genesis_pubkey}`](/api/get-launch) | Get launch data by genesis address |
+| `GET` | [`/tokens/{mint}`](/api/get-launches-by-token) | Get all launches for a token mint |
+| `GET` | [`/launches`](/api/list-launches) | List launches with optional filters |
+| `GET` | [`/launches?spotlight=true`](/api/get-spotlight) | Get featured spotlight launches |
+| `POST` | [`/launches/create`](/api/create-launch) | Build on-chain transactions for a new launch |
+| `POST` | [`/launches/register`](/api/register) | Register a confirmed launch for listing |
+| `POST` | [`/twitter/verify`](/api/verify-twitter) | Verify Twitter account ownership for launch registration |
+| `POST` | [`/creator-rewards/claim`](/api/claim-creator-rewards) | Build a creator rewards claim transaction |
+
+{% callout type="note" %}
+The `POST` endpoints (`/launches/create` and `/launches/register`) are used together to create new token launches. For most use cases, the [SDK API Client](/smart-contracts/genesis/sdk/api-client) provides a simpler interface that wraps both endpoints. Real-time on-chain launch state can be read directly with the SDK chain methods [`fetchBucketState`](/smart-contracts/genesis/integration-apis/fetch-bucket-state) and [`fetchDepositState`](/smart-contracts/genesis/integration-apis/fetch-deposit-state).
+{% /callout %}
+
+## Agent Endpoints
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | [`/agents`](/api/list-agents) | List and search registered agents (paginated) |
+| `GET` | [`/agents/{address}`](/api/get-agent) | Get a single agent with tokens and metadata |
+| `GET` | [`/agents/{address}/agent-card.json`](/api/get-agent-card) | Get the hosted A2A AgentCard |
+| `POST` | [`/agents/mint`](/api/mint-agent) | Build an agent mint + registration transaction |
+| `POST` | [`/agents/{address}/fund`](/api/fund-agent) | Build a SOL transfer to the agent's wallet |
+| `POST` | [`/agents/{address}/withdraw`](/api/withdraw-agent) | Build a withdrawal from the agent's wallet (owner only) |
+
+For minting agents with a guided walkthrough, see [Mint an Agent](/agents/mint-agent).
+
+## Transaction-Building Endpoints
+
+`POST` endpoints that build transactions never hold user keys and never submit transactions. Each returns one or more base64-serialized transactions plus the blockhash they were built against; your application deserializes them, has the user's wallet sign, and submits to the network.
+
+## Error Codes
+
+| Code | Description |
+| --- | --- |
+| `400` | Bad request - invalid parameters |
+| `403` | Not authorized for the operation (e.g. withdrawing from an agent you don't own) |
+| `404` | Launch, token, or agent not found |
+| `429` | Rate limit exceeded |
+| `500` | Internal server error |
+
+## Response Envelopes
+
+Two envelope conventions are in use, reflecting the API's evolution:
+
+**Launch read endpoints** (`/launches*`, `/tokens/*`, `/creator-rewards/claim`) wrap results in `data` and errors in `error.message`:
+
+```json
+{ "data": { "…": "…" } }
+```
+
+```json
+{ "error": { "message": "Launch not found" } }
+```
+
+**Agent endpoints, launch write endpoints, and `/twitter/verify`** use a `success` discriminator:
+
+```json
+{ "success": true, "…": "…" }
+```
+
+```json
+{ "success": false, "error": "Agent not found" }
+```
+
+The exception is [`/agents/{address}/agent-card.json`](/api/get-agent-card), which returns raw AgentCard JSON with no envelope so A2A clients can consume it directly. Each endpoint page documents its exact shape, as does the [OpenAPI specification](https://api.metaplex.com/v1/openapi.json).
+
+## Machine-Readable Specification
+
+The full API contract is published as an OpenAPI 3.1 document, generated directly from the API's request validators (so it cannot drift from the implementation):
+
+| Format | URL |
+|--------|-----|
+| YAML (canonical) | `https://api.metaplex.com/v1/openapi.yaml` |
+| JSON | `https://api.metaplex.com/v1/openapi.json` |
+| Current-version aliases | `https://api.metaplex.com/openapi.json` / `openapi.yaml` |
+| RFC 9727 API catalog | `https://api.metaplex.com/.well-known/api-catalog` |
+
+Import the spec into Postman, Swagger UI, code generators, or agent frameworks to get typed clients and callable tools for every endpoint.
+
+## Notes
+
+- The API is rate limited. If you receive a `429` response, reduce your request frequency.
+- All date fields (`startTime`, `endTime`, `graduatedAt`, `lastActivityAt`) are returned as ISO 8601 strings.
+- The default network is `solana-mainnet`. Devnet data is available via `?network=solana-devnet`.
+- For `POST` endpoints, the [SDK API Client](/smart-contracts/genesis/sdk/api-client) is recommended as it wraps both `/launches/create` and `/launches/register`.
+
+## Shared Types
+
+### TypeScript
+
+```ts
+interface Launch {
+ launchPage: string;
+ mechanic: string;
+ genesisAddress: string;
+ spotlight: boolean;
+ startTime: string;
+ endTime: string;
+ status: 'upcoming' | 'live' | 'graduated' | 'ended';
+ heroUrl: string | null;
+ graduatedAt: string | null;
+ lastActivityAt: string;
+ type: 'launchpool' | 'presale';
+}
+
+interface BaseToken {
+ address: string;
+ name: string;
+ symbol: string;
+ image: string;
+ description: string;
+}
+
+interface Socials {
+ x?: string;
+ telegram?: string;
+ discord?: string;
+}
+
+interface ErrorResponse {
+ error: {
+ message: string;
+ };
+}
+```
+
+### Rust
+
+```rust
+use serde::{Deserialize, Serialize};
+
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Launch {
+ pub launch_page: String,
+ pub mechanic: String,
+ pub genesis_address: String,
+ pub spotlight: bool,
+ pub start_time: String,
+ pub end_time: String,
+ pub status: String,
+ pub hero_url: Option,
+ pub graduated_at: Option,
+ pub last_activity_at: String,
+ #[serde(rename = "type")]
+ pub launch_type: String,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct BaseToken {
+ pub address: String,
+ pub name: String,
+ pub symbol: String,
+ pub image: String,
+ pub description: String,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct Socials {
+ pub x: Option,
+ pub telegram: Option,
+ pub discord: Option,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct ApiError {
+ pub message: String,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct ErrorResponse {
+ pub error: ApiError,
+}
+```
+
+{% callout type="note" %}
+Add these dependencies to your `Cargo.toml`:
+```toml
+[dependencies]
+reqwest = { version = "0.12", features = ["json"] }
+tokio = { version = "1", features = ["full"] }
+serde = { version = "1", features = ["derive"] }
+```
+{% /callout %}
+
+## Glossary
+
+| Term | Definition |
+|------|------------|
+| **Genesis Address** | A PDA (Program Derived Address) that uniquely identifies a specific launch campaign |
+| **Base Token** | The token being launched, identified by its mint address |
+| **Launch Page** | The URL where users can participate in a launch |
+| **Mechanic** | The allocation mechanism used for the launch (e.g., `launchpoolV2`, `presaleV2`, `auction`) |
+| **Launch Type** | The underlying mechanism of the launch: `launchpool` or `presale` |
+| **Spotlight** | A platform-curated flag indicating a featured launch |
+| **Status** | The current state of a launch: `upcoming`, `live`, `graduated`, or `ended` |
+| **Socials** | Social media links (X/Twitter, Telegram, Discord) associated with a token |
+| **LaunchData** | The response wrapper containing `launch`, `baseToken`, `website`, and `socials` |
+| **TokenData** | The response wrapper for token queries, containing a `launches` array plus `baseToken`, `website`, and `socials` |
diff --git a/src/pages/en/api/list-agents.md b/src/pages/en/api/list-agents.md
new file mode 100644
index 00000000..27e30238
--- /dev/null
+++ b/src/pages/en/api/list-agents.md
@@ -0,0 +1,188 @@
+---
+title: List Agents
+metaTitle: Metaplex API - List Agents | REST API | Metaplex
+description: Browse and search registered AI agents. Returns paginated agent records with metadata, filters, and sorting.
+method: GET
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - agent registry
+ - agent search
+ - agent listings
+about:
+ - API endpoint
+ - Agent listings
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+ - Rust
+---
+
+Browse and search the agent registry. Returns paginated agent records from the indexed database, sorted by latest registration by default. {% .lead %}
+
+## Summary
+
+List registered agents with optional full-text search, filters, and sorting. Results are always paginated.
+
+- Search by name with `query`
+- Filter by `activeOnly`, `hasAgentToken`, `hasServices`, and `spotlight`
+- Sort by `latest` (default) or `oldest` registration
+- Defaults to page 1 with 24 results per page (max `pageSize` is 100)
+
+## Quick Reference
+
+| Item | Value |
+|------|-------|
+| **Method** | `GET` |
+| **Path** | `/agents` |
+| **Auth** | None |
+| **Response** | Paginated `AgentRecord[]` |
+| **Pagination** | `page` / `pageSize` |
+
+## Endpoint
+
+```
+GET /agents
+```
+
+## Query Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-------------|
+| `network` | `string` | No | Network to query. Default: `solana-mainnet`. Use `solana-devnet` for devnet. |
+| `page` | `number` | No | Page number, starting at `1`. Default: `1`. |
+| `pageSize` | `number` | No | Results per page, `1`–`100`. Default: `24`. |
+| `query` | `string` | No | Free-text search over agent names. |
+| `sort` | `string` | No | `latest` (default) or `oldest` — by registration time. |
+| `activeOnly` | `boolean` | No | Only agents whose EIP-8004 metadata marks them active. |
+| `hasAgentToken` | `boolean` | No | Only agents with a primary agent token set. |
+| `hasServices` | `boolean` | No | Only agents advertising service endpoints. |
+| `spotlight` | `boolean` | No | Only agents spotlighted on the discover page. |
+
+## Example Request
+
+```bash
+curl "https://api.metaplex.com/v1/agents?pageSize=10&sort=latest&activeOnly=true"
+```
+
+## Response
+
+```json
+{
+ "success": true,
+ "data": {
+ "agents": [
+ {
+ "mintAddress": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN",
+ "network": "solana-mainnet",
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "image": "https://example.com/agent.png",
+ "walletAddress": "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
+ "authority": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "agentToken": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "agentMetadataUri": "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json",
+ "metadata": { "…": "EIP-8004 registration JSON" },
+ "a2aCard": { "…": "A2A AgentCard (spec §4.4)" },
+ "isActive": true,
+ "registrationSignature": "5J8…",
+ "indexedAt": "2026-07-01T12:00:00.000Z",
+ "spotlightedAt": null,
+ "verifiedAt": null,
+ "createdAt": "2026-07-01T11:59:58.000Z",
+ "updatedAt": "2026-07-15T09:30:00.000Z"
+ }
+ ],
+ "total": 132,
+ "page": 1,
+ "pageSize": 10,
+ "totalPages": 14
+ }
+}
+```
+
+## Response Type
+
+### TypeScript
+
+```ts
+interface PaginatedAgentsResponse {
+ success: true;
+ data: {
+ agents: AgentRecord[];
+ total: number;
+ page: number;
+ pageSize: number;
+ totalPages: number;
+ };
+}
+
+interface AgentRecord {
+ /** Core asset mint address (the NFT representing this agent) */
+ mintAddress: string;
+ network: string;
+ name: string;
+ description: string;
+ image: string | null;
+ /** The agent's signer PDA wallet, derived from the Core asset */
+ walletAddress: string;
+ /** Update authority of the Core asset */
+ authority: string | null;
+ /** Primary token mint, set via the setAgentToken instruction */
+ agentToken: string | null;
+ agentMetadataUri: string | null;
+ /** EIP-8004 agent registration JSON */
+ metadata: Record | null;
+ /** Hosted A2A AgentCard (spec §4.4) */
+ a2aCard: Record | null;
+ isActive: boolean;
+ registrationSignature: string | null;
+ indexedAt: string | null;
+ spotlightedAt: string | null;
+ verifiedAt: string | null;
+ createdAt: string;
+ updatedAt: string;
+}
+```
+
+## Usage Examples
+
+### TypeScript
+
+```ts
+const response = await fetch(
+ "https://api.metaplex.com/v1/agents?pageSize=10&activeOnly=true"
+);
+const result: PaginatedAgentsResponse = await response.json();
+if (result.success) {
+ const { agents, total, totalPages } = result.data;
+ console.log(`${agents.length} of ${total} agents (${totalPages} pages)`);
+}
+```
+
+### Rust
+
+```rust
+let response = reqwest::get(
+ "https://api.metaplex.com/v1/agents?pageSize=10&activeOnly=true"
+)
+.await?
+.json::()
+.await?;
+
+if response["success"].as_bool() == Some(true) {
+ if let Some(agents) = response["data"]["agents"].as_array() {
+ println!("{} agents on this page", agents.len());
+ }
+} else {
+ eprintln!("API error: {}", response["error"]);
+}
+```
+
+## Notes
+
+- Results come from the indexed database, not a live on-chain scan; newly minted agents appear once their registration transaction has been indexed.
+- Boolean filters accept `true`/`false` string values.
+- The response uses the `success` envelope — see the [Agent API overview](/api) for details.
diff --git a/src/pages/en/smart-contracts/genesis/integration-apis/list-launches.md b/src/pages/en/api/list-launches.md
similarity index 95%
rename from src/pages/en/smart-contracts/genesis/integration-apis/list-launches.md
rename to src/pages/en/api/list-launches.md
index 9acde617..8f32ce2b 100644
--- a/src/pages/en/smart-contracts/genesis/integration-apis/list-launches.md
+++ b/src/pages/en/api/list-launches.md
@@ -1,6 +1,6 @@
---
title: List Launches
-metaTitle: Genesis - List Launches | REST API | Metaplex
+metaTitle: Metaplex API - List Launches | REST API | Metaplex
description: Get active and upcoming Genesis launch listings. Returns a list of launches with metadata.
method: GET
created: '01-15-2025'
@@ -102,7 +102,7 @@ Results are sorted by `lastActivityAt` in descending order.
## Response Type
-See [Shared Types](/smart-contracts/genesis/integration-apis#shared-types) for `Launch`, `BaseToken`, and `Socials` definitions.
+See [Shared Types](/api#shared-types) for `Launch`, `BaseToken`, and `Socials` definitions.
### TypeScript
diff --git a/src/pages/en/api/mint-agent.md b/src/pages/en/api/mint-agent.md
new file mode 100644
index 00000000..89bd5d33
--- /dev/null
+++ b/src/pages/en/api/mint-agent.md
@@ -0,0 +1,127 @@
+---
+title: Mint Agent
+metaTitle: Metaplex API - Mint Agent | REST API | Metaplex
+description: Build a partially signed transaction that mints an agent Core asset and registers its on-chain identity.
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - mint agent
+ - agent registration
+ - EIP-8004
+about:
+ - API endpoint
+ - Agent minting
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+Build a transaction that mints an MPL Core asset for your agent and registers its identity with the Agent Registry in one step. The API stores the agent metadata off-chain and returns a partially signed transaction for the wallet to co-sign as payer. {% .lead %}
+
+## Summary
+
+This is the endpoint behind the [Mint an Agent](/agents/mint-agent) guide.
+
+- Creates the Core asset and calls `registerIdentity` in a single transaction
+- The asset keypair is generated server-side and pre-signed, so the response includes the final `assetAddress`
+- Stores the EIP-8004 metadata and a hosted [A2A AgentCard](/api/get-agent-card) (yours, or synthesized from the metadata)
+- The caller's wallet signs as payer and submits the transaction
+
+## Quick Reference
+
+| Item | Value |
+|------|-------|
+| **Method** | `POST` |
+| **Path** | `/agents/mint` |
+| **Auth** | None |
+| **Response** | Serialized transaction + `assetAddress` |
+
+## Endpoint
+
+```
+POST /agents/mint
+```
+
+## Request Body
+
+| Field | Type | Required | Description |
+|-------|------|----------|-------------|
+| `wallet` | `string` | Yes | Wallet that will pay for and own the agent (base58). |
+| `network` | `string` | Yes | `solana-mainnet` or `solana-devnet`. |
+| `name` | `string` | Yes | Agent name for the Core asset. |
+| `uri` | `string` | Yes | URI of the asset's off-chain JSON metadata. |
+| `agentMetadata` | `object` | Yes | EIP-8004 agent registration JSON (name, description, image, services, registrations, active, …). |
+| `collectionAddress` | `string` | No | Core collection to mint the agent into. |
+| `a2aCard` | `object` | No | Pre-built A2A AgentCard. When omitted, one is synthesized from `agentMetadata`. |
+
+## Example Request
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/agents/mint" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "wallet": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "network": "solana-devnet",
+ "name": "Example Agent",
+ "uri": "https://example.com/agent-metadata.json",
+ "agentMetadata": {
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "active": true,
+ "services": [],
+ "registrations": []
+ }
+ }'
+```
+
+## Response
+
+```json
+{
+ "success": true,
+ "tx": "",
+ "blockhash": {
+ "blockhash": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
+ "lastValidBlockHeight": 123456789
+ },
+ "assetAddress": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+}
+```
+
+## Signing and Submitting
+
+The returned transaction is already signed by the asset keypair; your wallet co-signs as payer and submits:
+
+```ts
+import { base64 } from "@metaplex-foundation/umi/serializers";
+
+const res = await fetch("https://api.metaplex.com/v1/agents/mint", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify(input),
+});
+const result = await res.json();
+if (!result.success) throw new Error(result.error);
+
+const tx = umi.transactions.deserialize(base64.serialize(result.tx));
+const signed = await umi.identity.signTransaction(tx);
+await umi.rpc.sendTransaction(signed);
+```
+
+## Errors
+
+| Status | Body | Meaning |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "Invalid input data", "details": [...] }` | Request body failed validation; `details` lists the issues. |
+| `400` | `{ "success": false, "error": "" }` | Build failure (e.g. collection not found). |
+| `500` | `{ "success": false, "error": "Failed to prepare mint agent" }` | Server error. |
+
+## Notes
+
+- The Metaplex registry entry (`solana:101:metaplex`) is automatically added to the front of `agentMetadata.registrations`.
+- A hosted A2A service entry is spliced into `services[]` so EIP-8004 consumers can discover the [AgentCard endpoint](/api/get-agent-card); this is a no-op if you already authored one.
+- The agent record is stored when you call this endpoint, but it only appears in [List Agents](/api/list-agents) once the signed transaction has been confirmed and indexed.
+- For a guided walkthrough with the SDK, see [Mint an Agent](/agents/mint-agent).
diff --git a/src/pages/en/smart-contracts/genesis/integration-apis/register.md b/src/pages/en/api/register.md
similarity index 90%
rename from src/pages/en/smart-contracts/genesis/integration-apis/register.md
rename to src/pages/en/api/register.md
index b94d463c..459f9130 100644
--- a/src/pages/en/smart-contracts/genesis/integration-apis/register.md
+++ b/src/pages/en/api/register.md
@@ -1,6 +1,6 @@
---
title: Register Launch
-metaTitle: Genesis - Register Launch | REST API | Metaplex
+metaTitle: Metaplex API - Register Launch | REST API | Metaplex
description: Register a Genesis launch after on-chain transactions are confirmed. Validates the on-chain state and creates the launch listing.
method: POST
created: '01-15-2025'
@@ -19,7 +19,7 @@ programmingLanguage:
- TypeScript
---
-Register a Genesis launch after the on-chain transactions from [Create Launch](/smart-contracts/genesis/integration-apis/create-launch) have been confirmed. The endpoint validates the on-chain state, creates the launch listing, and returns a launch page URL. {% .lead %}
+Register a Genesis launch after the on-chain transactions from [Create Launch](/api/create-launch) have been confirmed. The endpoint validates the on-chain state, creates the launch listing, and returns a launch page URL. {% .lead %}
{% callout type="warning" title="Use the SDK instead" %}
Most integrators should use [`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client) from the SDK, which handles creating transactions, signing, sending, and registering the launch in a single call. This endpoint is only needed if you require direct HTTP access without the SDK.
@@ -38,6 +38,7 @@ POST /v1/launches/register
| `genesisAccount` | `string` | Yes | The genesis account public key (from Create Launch response) |
| `network` | `string` | No | `'solana-mainnet'` (default) or `'solana-devnet'` |
| `launch` | `object` | Yes | The same launch configuration used in Create Launch |
+| `twitterVerificationToken` | `string` | No | Token from [Verify Twitter](/api/verify-twitter). When supplied, the launch's Twitter link is marked verified if the token's username matches `launch.externalLinks.twitter`. |
The `launch` object must match what was sent to the Create Launch endpoint so the API can verify the on-chain state matches the expected configuration. The top-level `network` field determines which Solana cluster to verify against; the `network` inside `launch` should match.
diff --git a/src/pages/en/api/verify-twitter.md b/src/pages/en/api/verify-twitter.md
new file mode 100644
index 00000000..9a7e638d
--- /dev/null
+++ b/src/pages/en/api/verify-twitter.md
@@ -0,0 +1,82 @@
+---
+title: Verify Twitter
+metaTitle: Metaplex API - Verify Twitter | REST API | Metaplex
+description: Exchange a Twitter OAuth access token for a verification token that proves ownership of a Twitter account when registering a launch.
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Genesis API
+ - Twitter verification
+ - social verification
+ - launch registration
+about:
+ - API endpoint
+ - Social verification
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+Exchange a Twitter (X) OAuth access token for a short-lived verification token that proves ownership of a Twitter account. Pass the token to [Register Launch](/api/register) to have the launch's Twitter link marked as verified. {% .lead %}
+
+## Summary
+
+- Verifies a user-supplied Twitter OAuth 2.0 access token against the X API
+- Returns the account's username and a signed verification token
+- The token is consumed by `POST /launches/register` via its optional `twitterVerificationToken` field
+
+## Quick Reference
+
+| Item | Value |
+|------|-------|
+| **Method** | `POST` |
+| **Path** | `/twitter/verify` |
+| **Auth** | None (the Twitter access token is the credential) |
+| **Response** | Username + verification token |
+
+## Endpoint
+
+```
+POST /twitter/verify
+```
+
+## Request Body
+
+| Field | Type | Required | Description |
+|-------|------|----------|-------------|
+| `accessToken` | `string` | Yes | A Twitter OAuth 2.0 user access token obtained by your application (must be authorized for `users.read`). |
+
+## Example Request
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/twitter/verify" \
+ -H "Content-Type: application/json" \
+ -d '{ "accessToken": "" }'
+```
+
+## Response
+
+```json
+{
+ "success": true,
+ "username": "mytoken",
+ "token": ""
+}
+```
+
+Pass `token` as `twitterVerificationToken` when calling [Register Launch](/api/register). The API compares the token's username against the handle in `launch.externalLinks.twitter` and marks the link verified on match.
+
+## Errors
+
+| Status | Body | Meaning |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "accessToken is required" }` | Missing or empty `accessToken`. |
+| `401` | `{ "success": false, "error": "Could not verify Twitter account" }` | The X API rejected the access token. |
+| `502` | `{ "success": false, "error": "Could not retrieve Twitter username" }` | The X API responded without a username. |
+
+## Notes
+
+- Obtaining the OAuth access token (the user consent flow) is your application's responsibility; this endpoint only validates it and issues the verification token.
+- Verification is optional — launches register successfully without it, their Twitter link is simply left unverified.
diff --git a/src/pages/en/api/withdraw-agent.md b/src/pages/en/api/withdraw-agent.md
new file mode 100644
index 00000000..11c340cb
--- /dev/null
+++ b/src/pages/en/api/withdraw-agent.md
@@ -0,0 +1,98 @@
+---
+title: Withdraw from Agent
+metaTitle: Metaplex API - Withdraw from Agent Wallet | REST API | Metaplex
+description: Build a transaction that withdraws SOL from an agent's wallet back to its owner. Owner-only.
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - withdraw
+ - agent wallet
+ - execute
+about:
+ - API endpoint
+ - Agent finance
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+Build a transaction that transfers SOL from an agent's signer PDA wallet back to the agent's owner. Only the current owner of the agent's Core asset can withdraw. {% .lead %}
+
+## Summary
+
+- Wraps a SOL transfer in an `execute` instruction so the agent's wallet PDA can sign
+- Ownership is verified server-side against the Core asset before the transaction is built
+- Returns an unsigned transaction for the owner to sign and submit
+
+## Quick Reference
+
+| Item | Value |
+|------|-------|
+| **Method** | `POST` |
+| **Path** | `/agents/{address}/withdraw` |
+| **Auth** | None (ownership enforced on-chain and at build time) |
+| **Response** | Serialized transaction |
+
+## Endpoint
+
+```
+POST /agents/{address}/withdraw
+```
+
+## Path Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-------------|
+| `address` | `string` | Yes | The agent's Core asset mint address (base58). |
+
+## Request Body
+
+| Field | Type | Required | Description |
+|-------|------|----------|-------------|
+| `sender` | `string` | Yes | The agent owner's wallet (base58). Receives the SOL and signs the transaction. |
+| `amount` | `number` | Yes | Amount in SOL. Must be positive. |
+| `network` | `string` | No | `solana-mainnet` (default) or `solana-devnet`. |
+
+## Example Request
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN/withdraw" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "sender": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "amount": 0.25
+ }'
+```
+
+## Response
+
+```json
+{
+ "success": true,
+ "tx": "",
+ "blockhash": {
+ "blockhash": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
+ "lastValidBlockHeight": 123456789
+ }
+}
+```
+
+The owner deserializes, signs, and submits the transaction — see [Signing and Submitting](/api/mint-agent#signing-and-submitting).
+
+## Errors
+
+| Status | Body | Meaning |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "Invalid input data" }` | Body or address failed validation. |
+| `403` | `{ "success": false, "error": "Only the agent owner can withdraw funds" }` | `sender` does not own the agent's Core asset. |
+| `404` | `{ "success": false, "error": "Agent not found" }` | No Core asset at this address on the given network. |
+| `500` | `{ "success": false, "error": "Failed to prepare withdraw transaction" }` | Server error. |
+
+## Notes
+
+- The build-time ownership check is a convenience; the `execute` instruction enforces ownership on-chain regardless, so a forged request cannot move funds.
+- The withdrawal destination is always the `sender` (the owner) — funds cannot be redirected to a third party.
+- To add funds, see [Fund Agent](/api/fund-agent).
diff --git a/src/pages/en/smart-contracts/genesis/bonding-curve-parameters.md b/src/pages/en/smart-contracts/genesis/bonding-curve-parameters.md
new file mode 100644
index 00000000..b4406f3d
--- /dev/null
+++ b/src/pages/en/smart-contracts/genesis/bonding-curve-parameters.md
@@ -0,0 +1,177 @@
+---
+title: Bonding Curve — Protocol Parameters
+metaTitle: Genesis Bonding Curve Protocol Parameters | Metaplex
+description: Concrete protocol parameters for the Genesis Bonding Curve — token supply defaults, virtual reserves, fee schedule, and graduation target.
+created: '08-03-2026'
+updated: '08-05-2026'
+keywords:
+ - bonding curve
+ - protocol parameters
+ - virtual reserves
+ - fee schedule
+ - graduation
+ - genesis
+ - Metaplex
+ - token supply
+ - program ID
+about:
+ - Bonding Curve
+ - Genesis
+ - Protocol Parameters
+proficiencyLevel: Intermediate
+faqs:
+ - q: What is the starting price of a Genesis Bonding Curve token?
+ a: Starting price (in tokens per SOL) = (virtualTokens / 10^decimals) / (virtualSol / 10^9). virtualTokens is denominated in raw units and virtualSol in lamports, so both must be converted before quoting a tokens-per-SOL price. With the protocol defaults, this gives a fixed starting price regardless of when the curve opens.
+ - q: How much SOL is raised by the time the curve graduates?
+ a: The real lamports accumulated at graduation equal (k / virtualTokens) − virtualSol, where k = virtualSol × (virtualTokens + baseTokenAllocation); divide by 10^9 to express the result in SOL. In practice this equals the graduation target SOL listed in the Protocol Parameters table.
+ - q: Can creators change the virtual reserves or token supply?
+ a: No. Virtual reserves, token supply, and decimals are set by protocol defaults and cannot be overridden per-launch via the API.
+ - q: Is the creator fee included in the 0.50% protocol fee?
+ a: No. The creator fee is separate and additive. Both are calculated independently on the gross SOL amount of each swap and do not compound. Maximum total fee per swap is protocol fee + creator fee.
+ - q: Do the bonding curve fees apply after graduation?
+ a: No. After graduation, trading moves to the Raydium CPMM pool. The post-bond trading fee schedule applies instead — 0.40% protocol fee, 0.60% creator revenue, 0.21% LP fees, and 0.04% Raydium fee.
+---
+
+Concrete protocol parameters for the Genesis Bonding Curve — the fixed numbers that define every launch created via the Metaplex API. {% .lead %}
+
+## Summary
+
+All Genesis Bonding Curve launches share the same protocol-level parameters. These values are set by the Metaplex API and cannot be overridden per-launch.
+
+- **Fixed supply and decimals** — every curve starts with 1,000,000,000 tokens at 6 decimal places
+- **Immutable virtual reserves** — `virtualSol` and `virtualTokens` are set at curve creation and define the full price trajectory from first trade to graduation
+- **Two-tier fee structure** — 0.50% protocol fee plus an optional creator fee on every swap; separate fee schedule applies after graduation to the Raydium CPMM pool
+- **Automatic graduation** — fires when `baseTokenBalance` reaches zero; no manual trigger required
+
+For the AMM pricing model that uses these parameters, see [Theory of Operation](/smart-contracts/genesis/bonding-curve-theory). For the raw swap formulas, see [Advanced Internals](/smart-contracts/genesis/bonding-curve-internals).
+
+## Protocol Parameters
+
+Every Genesis Bonding Curve launch is created with the following fixed protocol values.
+
+| Parameter | Value | Notes |
+|-----------|-------|-------|
+| **Program ID** | `GNS1S5J5AspKXgpjz6SvKL66kPaKWAhaGRhCqPRxii2B` | Solana mainnet |
+| **Token supply** | 1,000,000,000 | Raw units before decimals |
+| **Decimals** | 6 | SPL token decimal places |
+| **Token supply (with decimals)** | 1,000,000,000,000,000 | `supply × 10^decimals` |
+| **`virtualSol`** | [TBD] lamports | Virtual SOL reserve — sets starting price |
+| **`virtualTokens`** | [TBD] raw units | Virtual token reserve — paired with `virtualSol` |
+| **Graduation target** | [TBD] SOL | Real SOL accumulated at full sell-out |
+| **`baseTokenAllocation`** | 1,000,000,000,000,000 | All tokens allocated to the curve |
+
+{% callout type="note" %}
+`virtualSol` and `virtualTokens` are immutable after curve creation. Every event emitted by the program includes both values so that off-chain price calculations never require a separate account fetch. See [Indexing & Events](/smart-contracts/genesis/bonding-curve-indexing).
+{% /callout %}
+
+## Fee Schedule
+
+Two distinct fee schedules apply over a token's life: one while the bonding curve is active, and a different one after graduation to Raydium.
+
+### Bonding Curve (Active Phase)
+
+Fees apply to the **SOL side** of every swap. Both fees are calculated independently on the gross SOL amount and do not compound. Net SOL in or out = gross − protocol fee − creator fee.
+
+| Fee | Rate | Recipient |
+|-----|------|-----------|
+| **Protocol fee** | 0.50% | Metaplex fee wallet — transferred on every swap |
+| **Creator fee** | 0.60% (max) | Configured `creatorFeeWallet` — accrued in bucket, claimed via `claimBondingCurveCreatorFeeV2` |
+
+{% callout type="note" %}
+The creator fee is optional. If no `creatorFeeWallet` is configured, no creator fee is charged. When configured, 0.60% is the protocol-defined maximum. The first buy is exempt from both fees when the first buy mechanism is used. See [Creator Fees](/smart-contracts/genesis/creator-fees).
+{% /callout %}
+
+### Post-Graduation (Raydium CPMM Pool)
+
+After the curve graduates, trading moves to the Raydium CPMM pool. A different fee schedule applies:
+
+| Fee | Rate | Recipient |
+|-----|------|-----------|
+| **Protocol fee** | 0.40% | Metaplex |
+| **Creator revenue** | 0.60% | Creator fee wallet — claimed via `claimRaydiumCreatorFeeV2` |
+| **LP fees** | 0.21% | Liquidity providers |
+| **Raydium fee** | 0.04% | Raydium protocol |
+
+## Price and Graduation Calculations
+
+With the protocol defaults, the following values are fully determined at curve creation.
+
+### Starting Price
+
+The starting price is the ratio of the virtual reserves, converted from on-chain units (raw token units and lamports) to human units (tokens and SOL).
+
+```
+startingPrice (tokens per SOL) = (virtualTokens / 10^decimals) / (virtualSol / 10^9)
+```
+
+`virtualTokens` is stored in raw units and `virtualSol` in lamports, so divide by `10^decimals` (10^6 with protocol defaults) and `10^9` respectively before quoting a tokens-per-SOL price. This is the price a buyer sees on the very first swap (before any real SOL enters the pool).
+
+### Market Cap at Graduation
+
+At graduation, `baseTokenBalance = 0` and all real tokens have been sold. The real SOL accumulated equals the graduation target. The fully-diluted market cap at graduation:
+
+```
+graduationLamports = (k / virtualTokens) − virtualSol
+ where k = virtualSol × (virtualTokens + baseTokenAllocation)
+graduationSOL = graduationLamports / 10^9
+
+priceAtGraduation (lamports per raw unit) = k / virtualTokens^2
+fdvAtGraduation (SOL) = totalSupply (raw units) × priceAtGraduation / 10^9
+```
+
+### Constant Product Invariant
+
+The invariant `k` is fixed at curve creation and never changes while the curve is active.
+
+```
+k = virtualSol × (virtualTokens + baseTokenAllocation)
+```
+
+`k` is constant throughout the life of the curve (rounded up on every swap).
+
+## Notes
+
+- Virtual reserves are included in every `BondingCurveSwapEvent` — off-chain price calculation does not require a separate RPC call to fetch the bucket account
+- The protocol fee rate and virtual reserve values are set by Metaplex and cannot be overridden per-launch via the `createAndRegisterLaunch` API
+- Graduation fires automatically on the swap that exhausts `baseTokenBalance` — the same transaction that clears the last token also triggers migration to Raydium
+- Creator fees accrue in `creatorFeeAccrued` (not transferred per-swap); `creatorFeeClaimed` tracks cumulative claims; both reset-relative-to-accrual on each `claimBondingCurveCreatorFeeV2` call
+
+## Quick Reference
+
+| Item | Value |
+|------|-------|
+| Program ID | `GNS1S5J5AspKXgpjz6SvKL66kPaKWAhaGRhCqPRxii2B` |
+| Default supply | `1,000,000,000` (1B tokens, 6 decimals) |
+| `baseTokenAllocation` | `1,000,000,000,000,000` |
+| Protocol swap fee | `0.50%` |
+| Creator fee (max) | `0.60%` |
+| Post-grad protocol fee | `0.40%` |
+| Post-grad LP fees | `0.21%` |
+| Post-grad Raydium fee | `0.04%` |
+| `virtualSol` | `[TBD]` |
+| `virtualTokens` | `[TBD]` |
+| Graduation target | `[TBD] SOL` |
+| JS SDK | `@metaplex-foundation/genesis` |
+| Source | [GitHub](https://github.com/metaplex-foundation/mpl-genesis) |
+
+## FAQ
+
+### What is the starting price of a Genesis Bonding Curve token?
+
+Starting price in tokens per SOL = `(virtualTokens / 10^decimals) / (virtualSol / 10^9)` — `virtualTokens` is in raw units and `virtualSol` in lamports, so both are converted before quoting the price. It is determined entirely by the protocol defaults — creators cannot set a custom starting price.
+
+### How much SOL is raised by the time the curve graduates?
+
+The real SOL accumulated at sell-out equals the graduation target listed in the Protocol Parameters table above. This follows directly from the constant product formula: `graduationLamports = (k / virtualTokens) − virtualSol`, divided by `10^9` to express it in SOL.
+
+### Can creators change the virtual reserves or token supply?
+
+No. `virtualSol`, `virtualTokens`, token supply, and decimals are protocol defaults set by the Metaplex API. There is no API parameter to override them per-launch.
+
+### Is the creator fee included in the 0.50% protocol fee?
+
+No. The protocol fee (0.50%) and the creator fee (up to 0.60%) are independent. Both are calculated on the gross SOL amount of the swap and subtracted separately. They do not compound.
+
+### Do the bonding curve fees apply after graduation?
+
+No. After graduation, the bonding curve account is closed and trading moves to the Raydium CPMM pool. The post-bond trading fee schedule applies — see the [Post-Graduation Fee Schedule](#post-graduation-raydium-cpmm-pool) table above.
diff --git a/src/pages/en/smart-contracts/genesis/creator-fees.md b/src/pages/en/smart-contracts/genesis/creator-fees.md
index e6e06e73..1e0b0a91 100644
--- a/src/pages/en/smart-contracts/genesis/creator-fees.md
+++ b/src/pages/en/smart-contracts/genesis/creator-fees.md
@@ -209,7 +209,7 @@ console.log('Creator fee wallet:', creatorFeeWallet?.toString() ?? 'none configu
| `network` | `SvmNetwork` | No | `'solana-mainnet'` (default) or `'solana-devnet'`. |
| `payer` | `PublicKey \| string` | No | Wallet that covers fees and rent on the returned transactions. Defaults to `wallet`. Use this when the creator fee wallet does not hold SOL — for example, an agent PDA or a cold wallet. |
-The SDK returns deserialized Umi `Transaction`s plus the blockhash they were built against. Always confirm each transaction against the returned blockhash — do not substitute a freshly-fetched one, or confirmation will race. See the full HTTP schema at [Claim Creator Rewards (API)](/smart-contracts/genesis/integration-apis/claim-creator-rewards).
+The SDK returns deserialized Umi `Transaction`s plus the blockhash they were built against. Always confirm each transaction against the returned blockhash — do not substitute a freshly-fetched one, or confirmation will race. See the full HTTP schema at [Claim Creator Rewards (API)](/api/claim-creator-rewards).
### Handling the No-Rewards Case
diff --git a/src/pages/en/smart-contracts/genesis/getting-started.md b/src/pages/en/smart-contracts/genesis/getting-started.md
index 26961eee..3bf81b4e 100644
--- a/src/pages/en/smart-contracts/genesis/getting-started.md
+++ b/src/pages/en/smart-contracts/genesis/getting-started.md
@@ -256,7 +256,7 @@ Yes. Set `quoteMint` to any SPL token. However, wSOL is standard for SOL-denomin
| **Genesis Account** | PDA that coordinates the launch and holds tokens |
| **Inflow Bucket** | Bucket that collects deposits from users |
| **Outflow Bucket** | Bucket that receives funds via end behaviors |
-| **Launch Type** | The underlying mechanism of a launch (`launchpool` or `presale`). Set on-chain retroactively by a backend crank. Queryable via [SDK](/smart-contracts/genesis/sdk/javascript#genesis-account) or [REST API](/smart-contracts/genesis/integration-apis) |
+| **Launch Type** | The underlying mechanism of a launch (`launchpool` or `presale`). Set on-chain retroactively by a backend crank. Queryable via [SDK](/smart-contracts/genesis/sdk/javascript#genesis-account) or [REST API](/api) |
| **Finalize** | Lock configuration and activate the launch |
| **Time Condition** | Unix timestamp controlling bucket phases |
| **End Behavior** | Automated action when deposit period ends |
diff --git a/src/pages/en/smart-contracts/genesis/index.md b/src/pages/en/smart-contracts/genesis/index.md
index 151994b1..3bb6956d 100644
--- a/src/pages/en/smart-contracts/genesis/index.md
+++ b/src/pages/en/smart-contracts/genesis/index.md
@@ -89,7 +89,7 @@ Every Genesis launch has a **type** that represents the underlying mechanism:
| **Launch Pool** (`launchpool`) | Proportional distribution with price discovery via a deposit window | Fair launches, community tokens, crowdsales |
| **Presale** (`presale`) | Fixed-price token sale at a predetermined rate | Token sales, known valuation |
-The launch type is recorded on-chain in the [Genesis Account](#genesis-account) by a backend crank after creation. Traders and aggregators can query the type programmatically via the [JavaScript SDK](/smart-contracts/genesis/sdk/javascript#genesis-account) (`fetchGenesisAccountV2`) or the [Integration APIs](/smart-contracts/genesis/integration-apis) (`type` field in REST responses).
+The launch type is recorded on-chain in the [Genesis Account](#genesis-account) by a backend crank after creation. Traders and aggregators can query the type programmatically via the [JavaScript SDK](/smart-contracts/genesis/sdk/javascript#genesis-account) (`fetchGenesisAccountV2`) or the [Metaplex API](/api) (`type` field in REST responses).
### Genesis Account
diff --git a/src/pages/en/smart-contracts/genesis/integration-apis/index.md b/src/pages/en/smart-contracts/genesis/integration-apis/index.md
deleted file mode 100644
index 617282d5..00000000
--- a/src/pages/en/smart-contracts/genesis/integration-apis/index.md
+++ /dev/null
@@ -1,219 +0,0 @@
----
-title: Integration APIs
-metaTitle: Genesis - Integration APIs | Launch Data | Metaplex
-description: Access Genesis launch data through HTTP REST endpoints and on-chain SDK methods. Public API with no authentication required.
-created: '01-15-2025'
-updated: '02-26-2026'
-keywords:
- - Genesis API
- - integration API
- - launch data
- - token queries
- - on-chain state
-about:
- - API integration
- - Data aggregation
- - Launch information
-proficiencyLevel: Intermediate
-programmingLanguage:
- - JavaScript
- - TypeScript
- - Rust
----
-
-The Genesis Integration APIs allow aggregators and applications to query launch data from Genesis token launches. Access metadata through REST endpoints or fetch real-time on-chain state with the SDK. {% .lead %}
-
-## Summary
-
-The Genesis Integration APIs provide read-only access to launch data for Genesis token launches on Solana.
-
-- Query launches by genesis address, token mint, or browse all active launches
-- Public REST API at `https://api.metaplex.com/v1` — no authentication required
-- Returns launch metadata, token info, website, and social links
-- Supports Solana mainnet (default) and devnet via `network` query parameter
-
-## Base URL
-
-```
-https://api.metaplex.com/v1
-```
-
-## Network Selection
-
-By default, the API returns data from Solana mainnet. To query devnet launches instead, add the `network` query parameter:
-
-```
-?network=solana-devnet
-```
-
-**Example:**
-
-```bash
-# Mainnet (default)
-curl https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN
-
-# Devnet
-curl "https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN?network=solana-devnet"
-```
-
-## Authentication
-
-No authentication is required. The API is public with rate limits.
-
-## Available Endpoints
-
-| Method | Endpoint | Description |
-|--------|----------|-------------|
-| `GET` | [`/launches/{genesis_pubkey}`](/smart-contracts/genesis/integration-apis/get-launch) | Get launch data by genesis address |
-| `GET` | [`/tokens/{mint}`](/smart-contracts/genesis/integration-apis/get-launches-by-token) | Get all launches for a token mint |
-| `GET` | [`/launches`](/smart-contracts/genesis/integration-apis/list-launches) | List launches with optional filters |
-| `GET` | [`/launches?spotlight=true`](/smart-contracts/genesis/integration-apis/get-spotlight) | Get featured spotlight launches |
-| `POST` | [`/launches/create`](/smart-contracts/genesis/integration-apis/create-launch) | Build on-chain transactions for a new launch |
-| `POST` | [`/launches/register`](/smart-contracts/genesis/integration-apis/register) | Register a confirmed launch for listing |
-| `CHAIN` | [`fetchBucketState`](/smart-contracts/genesis/integration-apis/fetch-bucket-state) | Fetch bucket state from on-chain |
-| `CHAIN` | [`fetchDepositState`](/smart-contracts/genesis/integration-apis/fetch-deposit-state) | Fetch deposit state from on-chain |
-
-{% callout type="note" %}
-The `POST` endpoints (`/launches/create` and `/launches/register`) are used together to create new token launches. For most use cases, the [SDK API Client](/smart-contracts/genesis/sdk/api-client) provides a simpler interface that wraps both endpoints.
-{% /callout %}
-
-## Error Codes
-
-| Code | Description |
-| --- | --- |
-| `400` | Bad request - invalid parameters |
-| `404` | Launch or token not found |
-| `429` | Rate limit exceeded |
-| `500` | Internal server error |
-
-Error response format:
-
-```json
-{
- "error": {
- "message": "Launch not found"
- }
-}
-```
-
-## Notes
-
-- The API is rate limited. If you receive a `429` response, reduce your request frequency.
-- All date fields (`startTime`, `endTime`, `graduatedAt`, `lastActivityAt`) are returned as ISO 8601 strings.
-- The default network is `solana-mainnet`. Devnet data is available via `?network=solana-devnet`.
-- For `POST` endpoints, the [SDK API Client](/smart-contracts/genesis/sdk/api-client) is recommended as it wraps both `/launches/create` and `/launches/register`.
-
-## Shared Types
-
-### TypeScript
-
-```ts
-interface Launch {
- launchPage: string;
- mechanic: string;
- genesisAddress: string;
- spotlight: boolean;
- startTime: string;
- endTime: string;
- status: 'upcoming' | 'live' | 'graduated' | 'ended';
- heroUrl: string | null;
- graduatedAt: string | null;
- lastActivityAt: string;
- type: 'launchpool' | 'presale';
-}
-
-interface BaseToken {
- address: string;
- name: string;
- symbol: string;
- image: string;
- description: string;
-}
-
-interface Socials {
- x?: string;
- telegram?: string;
- discord?: string;
-}
-
-interface ErrorResponse {
- error: {
- message: string;
- };
-}
-```
-
-### Rust
-
-```rust
-use serde::{Deserialize, Serialize};
-
-#[derive(Debug, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct Launch {
- pub launch_page: String,
- pub mechanic: String,
- pub genesis_address: String,
- pub spotlight: bool,
- pub start_time: String,
- pub end_time: String,
- pub status: String,
- pub hero_url: Option,
- pub graduated_at: Option,
- pub last_activity_at: String,
- #[serde(rename = "type")]
- pub launch_type: String,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct BaseToken {
- pub address: String,
- pub name: String,
- pub symbol: String,
- pub image: String,
- pub description: String,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct Socials {
- pub x: Option,
- pub telegram: Option,
- pub discord: Option,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct ApiError {
- pub message: String,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct ErrorResponse {
- pub error: ApiError,
-}
-```
-
-{% callout type="note" %}
-Add these dependencies to your `Cargo.toml`:
-```toml
-[dependencies]
-reqwest = { version = "0.12", features = ["json"] }
-tokio = { version = "1", features = ["full"] }
-serde = { version = "1", features = ["derive"] }
-```
-{% /callout %}
-
-## Glossary
-
-| Term | Definition |
-|------|------------|
-| **Genesis Address** | A PDA (Program Derived Address) that uniquely identifies a specific launch campaign |
-| **Base Token** | The token being launched, identified by its mint address |
-| **Launch Page** | The URL where users can participate in a launch |
-| **Mechanic** | The allocation mechanism used for the launch (e.g., `launchpoolV2`, `presaleV2`, `auction`) |
-| **Launch Type** | The underlying mechanism of the launch: `launchpool` or `presale` |
-| **Spotlight** | A platform-curated flag indicating a featured launch |
-| **Status** | The current state of a launch: `upcoming`, `live`, `graduated`, or `ended` |
-| **Socials** | Social media links (X/Twitter, Telegram, Discord) associated with a token |
-| **LaunchData** | The response wrapper containing `launch`, `baseToken`, `website`, and `socials` |
-| **TokenData** | The response wrapper for token queries, containing a `launches` array plus `baseToken`, `website`, and `socials` |
diff --git a/src/pages/en/smart-contracts/genesis/launch-pool.md b/src/pages/en/smart-contracts/genesis/launch-pool.md
index 0e75bfba..a4db9a6b 100644
--- a/src/pages/en/smart-contracts/genesis/launch-pool.md
+++ b/src/pages/en/smart-contracts/genesis/launch-pool.md
@@ -467,4 +467,4 @@ Launch Pool discovers price organically based on deposits with proportional dist
- [Presale](/smart-contracts/genesis/presale) - Fixed-price token sale
- [Uniform Price Auction](/smart-contracts/genesis/uniform-price-auction) - Bid-based token offering
- [Launch a Token](/tokens/launch-token) - End-to-end token launch guide
-- [Integration APIs](/smart-contracts/genesis/integration-apis) - Query launch and token sale data via API
+- [Metaplex API](/api) - Query launch and token sale data via API
diff --git a/src/pages/en/smart-contracts/genesis/sdk/javascript.md b/src/pages/en/smart-contracts/genesis/sdk/javascript.md
index f0bf32b7..c6ae94fb 100644
--- a/src/pages/en/smart-contracts/genesis/sdk/javascript.md
+++ b/src/pages/en/smart-contracts/genesis/sdk/javascript.md
@@ -393,7 +393,7 @@ enum LaunchType {
}
```
-The [Integration APIs](/smart-contracts/genesis/integration-apis) return this as a string (`'launchpool'`), while the on-chain SDK uses the numeric enum above.
+The [Metaplex API](/api) returns this as a string (`'launchpool'`), while the on-chain SDK uses the numeric enum above.
### GenesisAccountV2
@@ -476,7 +476,7 @@ Yes. The SDK works in both Node.js and browser environments. For browsers, use a
`fetch` throws an error if the account doesn't exist. `safeFetch` returns `null` instead, useful for checking if an account exists.
### How do I retrieve the launch type for a token?
-Fetch the `GenesisAccountV2` account using `fetchGenesisAccountV2FromSeeds()` with the token's mint address. The `launchType` field returns `0` (Uninitialized) or `3` (LaunchPoolV1). To query all launches of a given type, use the [GPA builder](#gpa-builder--query-by-launch-type). Alternatively, the [Integration APIs](/smart-contracts/genesis/integration-apis) return the launch type as a string in REST responses.
+Fetch the `GenesisAccountV2` account using `fetchGenesisAccountV2FromSeeds()` with the token's mint address. The `launchType` field returns `0` (Uninitialized) or `3` (LaunchPoolV1). To query all launches of a given type, use the [GPA builder](#gpa-builder-query-by-launch-type). Alternatively, the [Metaplex API](/api) returns the launch type as a string in REST responses.
### How do I handle transaction errors?
Wrap `sendAndConfirm` calls in try/catch blocks. Check error messages for specific failure reasons.
diff --git a/src/pages/en/tokens/launch-token.md b/src/pages/en/tokens/launch-token.md
index 894f5d44..565343d9 100644
--- a/src/pages/en/tokens/launch-token.md
+++ b/src/pages/en/tokens/launch-token.md
@@ -436,4 +436,4 @@ main().catch(console.error);
- [Genesis Overview](/smart-contracts/genesis) - Learn more about the Solana token launchpad
- [Launch Pool](/smart-contracts/genesis/launch-pool) - Detailed fair launch documentation
- [Presale](/smart-contracts/genesis/presale) - Run a token presale at a fixed price
-- [Integration APIs](/smart-contracts/genesis/integration-apis) - Query launch and token sale data via API
+- [Metaplex API](/api) - Query launch and token sale data via API
diff --git a/src/pages/ja/smart-contracts/genesis/integration-apis/claim-creator-rewards.md b/src/pages/ja/api/claim-creator-rewards.md
similarity index 84%
rename from src/pages/ja/smart-contracts/genesis/integration-apis/claim-creator-rewards.md
rename to src/pages/ja/api/claim-creator-rewards.md
index 0c29bf68..2cbea46e 100644
--- a/src/pages/ja/smart-contracts/genesis/integration-apis/claim-creator-rewards.md
+++ b/src/pages/ja/api/claim-creator-rewards.md
@@ -1,6 +1,6 @@
---
title: クリエイター報酬の請求
-metaTitle: Genesis - クリエイター報酬の請求 | REST API | Metaplex
+metaTitle: Metaplex API - クリエイター報酬の請求 | REST API | Metaplex
description: 1回のAPI呼び出しでウォレットのすべてのGenesisボンディングカーブとRaydiumバケットからクリエイター報酬を請求します。署名準備済みのSolanaトランザクションを返します。
method: POST
created: '04-23-2026'
@@ -27,7 +27,7 @@ programmingLanguage:
ウォレットが対象とするすべてのGenesisボンディングカーブとRaydium CPMMバケットの蓄積したクリエイター報酬を、1回の呼び出しで請求します。エンドポイントは、ウォレット(または指定された`payer`)が署名して送信する必要があるbase64エンコードされたSolanaトランザクションのリストを返します。{% .lead %}
{% callout type="note" title="SDKラッパーが利用可能" %}
-ほとんどのインテグレーターは、Genesis JavaScript SDKの[`claimCreatorRewards`](/smart-contracts/genesis/sdk/api-client#claim-creator-rewards)を使用するべきです — トランザクションのデシリアライズ、エラー解析を処理し、署名のために[Umi アイデンティティ](/dev-tools/umi/getting-started#connecting-a-wallet)に直接プラグインします。SDKに依存できない場合のみ、このエンドポイントを直接呼び出してください。
+ほとんどのインテグレーターは、Genesis JavaScript SDKの[`claimCreatorRewards`](/ja/smart-contracts/genesis/sdk/api-client#claim-creator-rewards)を使用するべきです — トランザクションのデシリアライズ、エラー解析を処理し、署名のために[Umi アイデンティティ](/ja/dev-tools/umi/getting-started#connecting-a-wallet)に直接プラグインします。SDKに依存できない場合のみ、このエンドポイントを直接呼び出してください。
{% /callout %}
## Summary
@@ -37,7 +37,7 @@ programmingLanguage:
- **集約** — 1回のリクエストで対象となるすべてのバケットを請求します。バケットごとに1つのトランザクションが返されます
- **署名** — レスポンスはウォレット(または任意の `payer`)が署名して送信する必要があるbase64エンコードされたSolanaトランザクションです
- **エラー** — 蓄積がない場合はHTTP `400` `"No rewards available to claim"` を返します。呼び出し元は空の配列ではなくエラーで分岐する必要があります
-- **SDK ラッパー** — [`claimCreatorRewards`](/smart-contracts/genesis/sdk/api-client#claim-creator-rewards) はデシリアライズ、型付きエラー、Umi 署名を処理します
+- **SDK ラッパー** — [`claimCreatorRewards`](/ja/smart-contracts/genesis/sdk/api-client#claim-creator-rewards) はデシリアライズ、型付きエラー、Umi 署名を処理します
## エンドポイント
@@ -105,20 +105,20 @@ APIは請求されるバケットごとに1つのトランザクションを返
| `✖ Invalid wallet address` | `400` | `wallet`が有効なbase58 Solana公開鍵ではありません。 |
{% callout type="warning" title="報酬なしは空配列ではなく400" %}
-ウォレットに請求するものがないとき、エンドポイントはHTTP `400`とメッセージ`No rewards available to claim`を返します — `transactions: []`を含む`200`は返**されません**。呼び出し元はエラーをキャッチする(または`response.status`と`body.error.message`を確認する)必要があり、これを失敗ではなく「やることなし」のケースとして処理する必要があります。SDKはこれを型付きの`GenesisApiError`として表面化します。[エラー処理](/smart-contracts/genesis/creator-fees#報酬なしのケースの処理)を参照してください。
+ウォレットに請求するものがないとき、エンドポイントはHTTP `400`とメッセージ`No rewards available to claim`を返します — `transactions: []`を含む`200`は返**されません**。呼び出し元はエラーをキャッチする(または`response.status`と`body.error.message`を確認する)必要があり、これを失敗ではなく「やることなし」のケースとして処理する必要があります。SDKはこれを型付きの`GenesisApiError`として表面化します。[エラー処理](/ja/smart-contracts/genesis/creator-fees#handling-the-no-rewards-case)を参照してください。
{% /callout %}
## 注意事項
- エンドポイントはバケットレベルで冪等です — 成功した請求の直後に再度呼び出すと、新しい手数料が蓄積されるまで`No rewards available to claim`が返されます。
- 返されたトランザクションは`data.blockhash`のブロックハッシュを使用します。確認に~60〜90秒以上かかると、ブロックハッシュは期限切れになり、新しい一連のトランザクションを取得するために呼び出しを繰り返す必要があります。
-- クリエイター報酬はすべてのスワップ(ボンディングカーブ)とLP取引活動(Raydium CPMM)から蓄積されます — このエンドポイントは両方を集約します。基礎となる蓄積メカニクスとバケットごとのフェッチヘルパーについては、[Genesis ボンディングカーブのクリエイター手数料](/smart-contracts/genesis/creator-fees)を参照してください。
+- クリエイター報酬はすべてのスワップ(ボンディングカーブ)とLP取引活動(Raydium CPMM)から蓄積されます — このエンドポイントは両方を集約します。基礎となる蓄積メカニクスとバケットごとのフェッチヘルパーについては、[Genesis ボンディングカーブのクリエイター手数料](/ja/smart-contracts/genesis/creator-fees)を参照してください。
- クリエイター手数料ウォレットはバケット作成時に`creatorFeeWallet`を介して設定され、カーブがライブになった後は変更できません。
## 推奨:SDKを使用
-このエンドポイントを直接呼び出す代わりに、`@metaplex-foundation/genesis`の[`claimCreatorRewards`](/smart-contracts/genesis/sdk/api-client#claim-creator-rewards)を使用してください:
+このエンドポイントを直接呼び出す代わりに、`@metaplex-foundation/genesis`の[`claimCreatorRewards`](/ja/smart-contracts/genesis/sdk/api-client#claim-creator-rewards)を使用してください:
{% code-tabs-imported from="genesis/api_claim_creator_rewards" frameworks="umi" filename="claimCreatorRewards" /%}
-完全なSDK表面については[API クライアント](/smart-contracts/genesis/sdk/api-client)ページ、エンドツーエンドの請求ガイドについては[クリエイター手数料](/smart-contracts/genesis/creator-fees)を参照してください。
+完全なSDK表面については[API クライアント](/ja/smart-contracts/genesis/sdk/api-client)ページ、エンドツーエンドの請求ガイドについては[クリエイター手数料](/ja/smart-contracts/genesis/creator-fees)を参照してください。
diff --git a/src/pages/ja/smart-contracts/genesis/integration-apis/create-launch.md b/src/pages/ja/api/create-launch.md
similarity index 82%
rename from src/pages/ja/smart-contracts/genesis/integration-apis/create-launch.md
rename to src/pages/ja/api/create-launch.md
index 0f614579..b3519892 100644
--- a/src/pages/ja/smart-contracts/genesis/integration-apis/create-launch.md
+++ b/src/pages/ja/api/create-launch.md
@@ -1,6 +1,6 @@
---
title: ローンチ作成
-metaTitle: Genesis - ローンチ作成 | REST API | Metaplex
+metaTitle: Metaplex API - ローンチ作成 | REST API | Metaplex
description: 新しい Genesis トークンローンチのためのオンチェーントランザクションを構築します。署名・送信可能な未署名トランザクションを返します。
method: POST
created: '02-19-2026'
@@ -19,14 +19,14 @@ programmingLanguage:
- TypeScript
---
-新しい Genesis トークンローンチのためのオンチェーントランザクションを構築します。[ローンチ登録](/smart-contracts/genesis/integration-apis/register)を呼び出す前に、署名して送信する必要がある未署名トランザクションを返します。 {% .lead %}
+新しい Genesis トークンローンチのためのオンチェーントランザクションを構築します。[ローンチ登録](/ja/api/register)を呼び出す前に、署名して送信する必要がある未署名トランザクションを返します。 {% .lead %}
{% callout type="warning" title="SDK の使用を推奨" %}
-ほとんどのインテグレーターには、SDK の [`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client) の使用を推奨します。この関数はトランザクションの作成、署名、送信、ローンチの登録を1回の呼び出しで処理します。このエンドポイントは、SDK を使用せずに直接 HTTP アクセスが必要な場合にのみ使用してください。
+ほとんどのインテグレーターには、SDK の [`createAndRegisterLaunch`](/ja/smart-contracts/genesis/sdk/api-client) の使用を推奨します。この関数はトランザクションの作成、署名、送信、ローンチの登録を1回の呼び出しで処理します。このエンドポイントは、SDK を使用せずに直接 HTTP アクセスが必要な場合にのみ使用してください。
{% /callout %}
{% callout type="note" %}
-Genesis プログラムの全機能セットは [metaplex.com](https://www.metaplex.com) ではまだサポートされていないため、Create API(または SDK)を使用してプログラムでローンチを構築することを推奨します。API を通じて作成されたメインネットのローンチは、[登録](/smart-contracts/genesis/integration-apis/register)後に metaplex.com に表示されます。
+Genesis プログラムの全機能セットは [metaplex.com](https://www.metaplex.com) ではまだサポートされていないため、Create API(または SDK)を使用してプログラムでローンチを構築することを推奨します。API を通じて作成されたメインネットのローンチは、[登録](/ja/api/register)後に metaplex.com に表示されます。
{% /callout %}
## エンドポイント
@@ -73,7 +73,7 @@ POST /v1/launches/create
- **`presaleV2`** — 固定価格プレセール
{% callout type="note" %}
-SDK の `buildCreateLaunchPayload` 関数は、簡略化された `CreateLaunchInput` をこの完全なペイロード形式に変換します。詳細は [API クライアント](/smart-contracts/genesis/sdk/api-client)のドキュメントを参照してください。
+SDK の `buildCreateLaunchPayload` 関数は、簡略化された `CreateLaunchInput` をこの完全なペイロード形式に変換します。詳細は [API クライアント](/ja/smart-contracts/genesis/sdk/api-client)のドキュメントを参照してください。
{% /callout %}
## リクエスト例 — Launch Pool タイプ
@@ -150,8 +150,8 @@ curl -X POST https://api.metaplex.com/v1/launches/create \
## 推奨:SDK の使用
-このエンドポイントを直接呼び出す代わりに、[`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client) を使用することを推奨します。この関数はトランザクションの作成、署名、送信、登録のフロー全体を1回の呼び出しで処理します:
+このエンドポイントを直接呼び出す代わりに、[`createAndRegisterLaunch`](/ja/smart-contracts/genesis/sdk/api-client) を使用することを推奨します。この関数はトランザクションの作成、署名、送信、登録のフロー全体を1回の呼び出しで処理します:
{% code-tabs-imported from="genesis/api_easy_mode" frameworks="umi" filename="createAndRegisterLaunch" /%}
-SDK の全ドキュメント(3つの統合モードを含む)については、[API クライアント](/smart-contracts/genesis/sdk/api-client)を参照してください。
+SDK の全ドキュメント(3つの統合モードを含む)については、[API クライアント](/ja/smart-contracts/genesis/sdk/api-client)を参照してください。
diff --git a/src/pages/ja/api/fund-agent.md b/src/pages/ja/api/fund-agent.md
new file mode 100644
index 00000000..1381e2db
--- /dev/null
+++ b/src/pages/ja/api/fund-agent.md
@@ -0,0 +1,99 @@
+---
+title: エージェントへの資金供給
+metaTitle: Metaplex API - エージェントウォレットへの資金供給 | REST API | Metaplex
+description: 登録済みエージェントのウォレットに資金を供給する、オンチェーンメモ付きの SOL 送金トランザクションを構築します。
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - fund agent
+ - agent wallet
+ - SOL transfer
+about:
+ - API endpoint
+ - Agent finance
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+送信者のウォレットからエージェントの署名者 PDA ウォレットへ、オンチェーンメモ付きで SOL を送金するトランザクションを構築します。誰でも任意のエージェントに資金を供給できます。 {% .lead %}
+
+## Summary
+
+- エージェントのウォレット PDA(エージェントアドレスからサーバー側で解決)に SOL を送金します
+- 帰属を示すため、送信者が署名する必須のメモインストラクションを付加します
+- 送信者が署名・送信するための未署名トランザクションを返します
+
+## Quick Reference
+
+| 項目 | 値 |
+|------|-------|
+| **メソッド** | `POST` |
+| **パス** | `/agents/{address}/fund` |
+| **認証** | 不要 |
+| **レスポンス** | シリアライズ済みトランザクション |
+
+## エンドポイント
+
+```
+POST /agents/{address}/fund
+```
+
+## パスパラメータ
+
+| パラメータ | 型 | 必須 | 説明 |
+|-----------|------|----------|-------------|
+| `address` | `string` | はい | エージェントの Core アセットミントアドレス(base58)。 |
+
+## リクエストボディ
+
+| フィールド | 型 | 必須 | 説明 |
+|-------|------|----------|-------------|
+| `sender` | `string` | はい | SOL を送るウォレット(base58)。トランザクションに署名します。 |
+| `amount` | `number` | はい | SOL 単位の金額。正の値である必要があります。 |
+| `memo` | `string` | はい | オンチェーンに記録されるメモ(1〜256文字)。 |
+| `network` | `string` | いいえ | `solana-mainnet`(デフォルト)または `solana-devnet`。 |
+
+## リクエスト例
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN/fund" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "sender": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "amount": 0.5,
+ "memo": "Operating budget for July"
+ }'
+```
+
+## レスポンス
+
+```json
+{
+ "success": true,
+ "tx": "",
+ "blockhash": {
+ "blockhash": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
+ "lastValidBlockHeight": 123456789
+ }
+}
+```
+
+送信者はトランザクションをデシリアライズし、署名して送信します — [署名と送信](/ja/api/mint-agent#signing-and-submitting)をご参照ください。
+
+## エラー
+
+| ステータス | ボディ | 意味 |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "Invalid input data" }` | ボディがバリデーションに失敗(不正な公開鍵、正でない金額、メモの欠落)。 |
+| `404` | `{ "success": false, "error": "Agent not found" }` | 指定されたネットワークのこのアドレスに登録されたエージェントが存在しない。 |
+| `500` | `{ "success": false, "error": "Failed to prepare fund transaction" }` | サーバーエラー。 |
+
+## Notes
+
+- 送金先は Core アセットアドレスではなく、エージェントの**ウォレット PDA** です — API が自動的に解決します。
+- 資金を引き出すには、エージェントのオーナーが [エージェントからの出金](/ja/api/withdraw-agent) を使用します。
+- エージェントウォレットの背後にある概念については、[エージェントファイナンス](/ja/agents/agent-finance)をご参照ください。
diff --git a/src/pages/ja/api/get-agent-card.md b/src/pages/ja/api/get-agent-card.md
new file mode 100644
index 00000000..231b9225
--- /dev/null
+++ b/src/pages/ja/api/get-agent-card.md
@@ -0,0 +1,109 @@
+---
+title: AgentCard の取得
+metaTitle: Metaplex API - A2A AgentCard の取得 | REST API | Metaplex
+description: 登録済みエージェントのホストされた A2A AgentCard を取得します。ETag キャッシュ付きの標準準拠 AgentCard JSON です。
+method: GET
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - A2A
+ - AgentCard
+ - agent discovery
+about:
+ - API endpoint
+ - A2A protocol
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+登録済みエージェントのホストされた A2A AgentCard を取得します。A2A クライアントが直接利用できるよう、生の AgentCard JSON(A2A 仕様 §4.4)を返します。 {% .lead %}
+
+## Summary
+
+Metaplex は、アプリを通じて登録されたエージェント向けに A2A AgentCard をホストしています。EIP-8004 のコンシューマーは、エージェントの `services[]` エントリからこのエンドポイントを発見します。
+
+- 保存されたままの AgentCard を返します — レスポンスエンベロープなし
+- `ETag` / `If-None-Match` による条件付きリクエストをサポート(`304 Not Modified`)
+- エージェントにホストされたカードがない場合は `404` を返します
+
+## Quick Reference
+
+| 項目 | 値 |
+|------|-------|
+| **メソッド** | `GET` |
+| **パス** | `/agents/{address}/agent-card.json` |
+| **認証** | 不要 |
+| **レスポンス** | A2A AgentCard JSON |
+| **キャッシュ** | `max-age=60, stale-while-revalidate=600`、ETag |
+
+## エンドポイント
+
+```
+GET /agents/{address}/agent-card.json
+```
+
+## パスパラメータ
+
+| パラメータ | 型 | 必須 | 説明 |
+|-----------|------|----------|-------------|
+| `address` | `string` | はい | エージェントの Core アセットミントアドレス(base58)。 |
+
+## クエリパラメータ
+
+| パラメータ | 型 | 必須 | 説明 |
+|-----------|------|----------|-------------|
+| `network` | `string` | いいえ | クエリするネットワーク。デフォルト:`solana-mainnet`。devnet の場合は `solana-devnet` を使用。 |
+
+## リクエスト例
+
+```bash
+curl "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN/agent-card.json"
+```
+
+## レスポンス
+
+[A2A AgentCard](https://a2a-protocol.org/latest/specification/#44-agentcard) オブジェクト:
+
+```json
+{
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "url": "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json",
+ "version": "1.0.0",
+ "capabilities": { "streaming": false },
+ "skills": [
+ {
+ "id": "trade",
+ "name": "Trade tokens",
+ "description": "Executes token swaps on Solana.",
+ "tags": ["solana", "trading"]
+ }
+ ],
+ "defaultInputModes": ["text/plain"],
+ "defaultOutputModes": ["text/plain"]
+}
+```
+
+## 条件付きリクエスト
+
+レスポンスには `ETag` ヘッダーが含まれます。これを `If-None-Match` として送り返すと、カードに変更がない場合は `304 Not Modified` が返されます:
+
+```bash
+curl -H 'If-None-Match: "m3k9x1"' \
+ "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json"
+```
+
+## エラー
+
+| ステータス | 意味 |
+|--------|---------|
+| `304` | 指定した ETag 以降、カードに変更なし。 |
+| `404` | エージェントが見つからない、またはエージェントにホストされた AgentCard がない。 |
+
+## Notes
+
+- このエンドポイントは意図的に `success` エンベロープを**持ちません** — A2A のディスカバリー規約に従い、ボディは AgentCard そのものです。
+- カードは、ミント時にエージェント作成者が作成したもの、またはエージェントの登録メタデータから合成されたもののいずれかです。
diff --git a/src/pages/ja/api/get-agent.md b/src/pages/ja/api/get-agent.md
new file mode 100644
index 00000000..e6f42389
--- /dev/null
+++ b/src/pages/ja/api/get-agent.md
@@ -0,0 +1,183 @@
+---
+title: エージェントの取得
+metaTitle: Metaplex API - エージェントの取得 | REST API | Metaplex
+description: Core アセットアドレスで登録済みエージェントを1件取得します。EIP-8004 登録データ、作成したトークン、プライマリエージェントトークンを含みます。
+method: GET
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - agent detail
+ - EIP-8004
+ - agent registry
+about:
+ - API endpoint
+ - Agent data
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+ - Rust
+---
+
+Core アセットアドレスで登録済みエージェントを1件取得します。エージェントのアイデンティティ、EIP-8004 登録メタデータ、作成したトークン、プライマリエージェントトークンを返します。 {% .lead %}
+
+## Summary
+
+オンチェーンのアイデンティティとインデックス済みメタデータを組み合わせて、1つのエージェントの詳細情報をすべて取得します。
+
+- エージェントのアイデンティティ:名前、説明、画像、オーナー、オーソリティ、署名者 PDA ウォレット
+- EIP-8004 登録 JSON のフィールドがレスポンスにマージされます
+- `tokens` — エージェントがローンチしたすべてのトークン(`BaseToken` オブジェクト)
+- `agentTokenInfo` — ローンチまたはオンチェーンメタデータから解決されたエージェントのプライマリトークン
+
+## Quick Reference
+
+| 項目 | 値 |
+|------|-------|
+| **メソッド** | `GET` |
+| **パス** | `/agents/{address}` |
+| **認証** | 不要 |
+| **レスポンス** | エージェント詳細オブジェクト |
+| **ページネーション** | なし |
+
+## エンドポイント
+
+```
+GET /agents/{address}
+```
+
+## パスパラメータ
+
+| パラメータ | 型 | 必須 | 説明 |
+|-----------|------|----------|-------------|
+| `address` | `string` | はい | エージェントの Core アセットミントアドレス(base58)。 |
+
+## クエリパラメータ
+
+| パラメータ | 型 | 必須 | 説明 |
+|-----------|------|----------|-------------|
+| `network` | `string` | いいえ | クエリするネットワーク。デフォルト:`solana-mainnet`。devnet の場合は `solana-devnet` を使用。 |
+
+## リクエスト例
+
+```bash
+curl "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+```
+
+## レスポンス
+
+```json
+{
+ "success": true,
+ "address": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN",
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "image": "https://example.com/agent.png",
+ "walletAddress": "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
+ "owner": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "authority": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "agentMetadataUri": "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json",
+ "agentToken": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "a2aCard": { "…": "A2A AgentCard (spec §4.4), when hosted" },
+ "verifiedAt": null,
+ "tokens": [
+ {
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "name": "Agent Token",
+ "symbol": "AGT",
+ "image": "https://example.com/token.png",
+ "description": "The agent's primary token."
+ }
+ ],
+ "agentTokenInfo": {
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "name": "Agent Token",
+ "symbol": "AGT",
+ "image": "https://example.com/token.png",
+ "description": "The agent's primary token."
+ }
+}
+```
+
+## レスポンス型
+
+### TypeScript
+
+```ts
+interface AgentResponse {
+ success: true;
+ /** Core asset address (the NFT representing this agent) */
+ address: string;
+ name: string;
+ description: string;
+ image?: string;
+ /** The agent's signer PDA wallet (derived from the Core asset) */
+ walletAddress: string;
+ /** Owner of the Core asset */
+ owner: string;
+ /** Update authority of the Core asset */
+ authority?: string;
+ agentMetadataUri?: string;
+ /** Primary token mint from on-chain agent identity */
+ agentToken?: string;
+ /** Hosted A2A AgentCard (spec §4.4) — only when hosted by Metaplex */
+ a2aCard?: Record | null;
+ /** When an admin verified this agent */
+ verifiedAt?: string | null;
+ /** Tokens the agent has launched */
+ tokens: BaseToken[];
+ /** The agent's primary token, when set */
+ agentTokenInfo?: BaseToken;
+ // …plus any additional EIP-8004 registration fields
+}
+
+interface BaseToken {
+ address: string;
+ name: string;
+ symbol: string;
+ image: string;
+ description: string;
+}
+```
+
+## 使用例
+
+### TypeScript
+
+```ts
+const response = await fetch(
+ "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+);
+const agent: AgentResponse = await response.json();
+if (agent.success) {
+ console.log(agent.name, agent.walletAddress);
+ console.log(`${agent.tokens.length} tokens launched`);
+}
+```
+
+### Rust
+
+```rust
+let agent = reqwest::get(
+ "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+)
+.await?
+.json::()
+.await?;
+
+println!("{} — wallet {}", agent["name"], agent["walletAddress"]);
+```
+
+## エラー
+
+| ステータス | ボディ | 意味 |
+|--------|------|---------|
+| `404` | `{ "success": false, "error": "Agent not found" }` | 指定されたネットワークのこのアドレスに登録されたエージェントが存在しない。 |
+| `500` | `{ "success": false, "error": "Failed to fetch agent" }` | サーバーエラー。 |
+
+## Notes
+
+- レスポンスはオンチェーンのエージェントアイデンティティとエージェントの EIP-8004 登録 JSON をマージしているため、文書化されたフィールドに加えて追加のメタデータフィールドが含まれる場合があります。
+- エージェントトークンがエージェント自身のローンチに含まれない場合、`agentTokenInfo` はオンチェーンのトークンメタデータにフォールバックします。
+- レスポンスはキャッシュされます。直近のオンチェーンの変更が反映されるまで、短い遅延を見込んでください。
diff --git a/src/pages/ja/smart-contracts/genesis/integration-apis/get-launch.md b/src/pages/ja/api/get-launch.md
similarity index 93%
rename from src/pages/ja/smart-contracts/genesis/integration-apis/get-launch.md
rename to src/pages/ja/api/get-launch.md
index 1f0f1a91..d1a8b6a2 100644
--- a/src/pages/ja/smart-contracts/genesis/integration-apis/get-launch.md
+++ b/src/pages/ja/api/get-launch.md
@@ -1,6 +1,6 @@
---
-title: Get Launch
-metaTitle: Genesis - Get Launch | REST API | Metaplex
+title: ローンチの取得
+metaTitle: Metaplex API - ローンチの取得 | REST API | Metaplex
description: Genesisアドレスによるローンチデータの取得。ローンチ情報、トークンメタデータ、ソーシャルリンクを返します。
method: GET
created: '01-15-2025'
@@ -97,7 +97,7 @@ curl https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaS
## レスポンス型
-[共有型](/smart-contracts/genesis/integration-apis#shared-types)で `Launch`、`BaseToken`、`Socials` の定義を参照してください。
+[共有型](/ja/api#shared-types)で `Launch`、`BaseToken`、`Socials` の定義を参照してください。
### TypeScript
@@ -157,6 +157,6 @@ println!("{}", response.data.base_token.name); // "My Token"
## Notes
-- Genesis 公開鍵の取得にはインデックス化または `getProgramAccounts` が必要です。トークンミントのみお持ちの場合は、[トークンによるローンチ取得](/smart-contracts/genesis/integration-apis/get-launches-by-token)エンドポイントを使用してください。
+- Genesis 公開鍵の取得にはインデックス化または `getProgramAccounts` が必要です。トークンミントのみお持ちの場合は、[トークンによるローンチ取得](/ja/api/get-launches-by-token)エンドポイントを使用してください。
- Genesis アドレスが見つからない場合や有効なローンチがない場合は `404` を返します。
- `mechanic` フィールドは割り当てメカニズム(例:`launchpoolV2`、`presaleV2`)を示します。`type` フィールドはローンチの基盤メカニズム(`launchpool`、`presale`)を示します。
diff --git a/src/pages/ja/smart-contracts/genesis/integration-apis/get-launches-by-token.md b/src/pages/ja/api/get-launches-by-token.md
similarity index 95%
rename from src/pages/ja/smart-contracts/genesis/integration-apis/get-launches-by-token.md
rename to src/pages/ja/api/get-launches-by-token.md
index 67ec378a..cdb6fad6 100644
--- a/src/pages/ja/smart-contracts/genesis/integration-apis/get-launches-by-token.md
+++ b/src/pages/ja/api/get-launches-by-token.md
@@ -1,6 +1,6 @@
---
-title: Get Launches by Token
-metaTitle: Genesis - Get Launches by Token | REST API | Metaplex
+title: トークン別ローンチの取得
+metaTitle: Metaplex API - トークン別ローンチの取得 | REST API | Metaplex
description: トークンミントアドレスに関連するすべてのローンチを取得します。ローンチ情報、トークンメタデータ、ソーシャルリンクを返します。
method: GET
created: '01-15-2025'
@@ -99,7 +99,7 @@ curl https://api.metaplex.com/v1/tokens/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyT
## レスポンス型
-[共有型](/smart-contracts/genesis/integration-apis#shared-types)で `Launch`、`BaseToken`、`Socials` の定義を参照してください。
+[共有型](/ja/api#shared-types)で `Launch`、`BaseToken`、`Socials` の定義を参照してください。
### TypeScript
diff --git a/src/pages/ja/smart-contracts/genesis/integration-apis/get-spotlight.md b/src/pages/ja/api/get-spotlight.md
similarity index 95%
rename from src/pages/ja/smart-contracts/genesis/integration-apis/get-spotlight.md
rename to src/pages/ja/api/get-spotlight.md
index b5ca5b55..9ae4eaf0 100644
--- a/src/pages/ja/smart-contracts/genesis/integration-apis/get-spotlight.md
+++ b/src/pages/ja/api/get-spotlight.md
@@ -1,6 +1,6 @@
---
-title: Get Spotlight
-metaTitle: Genesis - Get Spotlight | REST API | Metaplex
+title: スポットライトの取得
+metaTitle: Metaplex API - スポットライトローンチの取得 | REST API | Metaplex
description: Genesis の注目スポットライトローンチを取得します。プラットフォームが厳選したローンチを返します。
method: GET
created: '01-15-2025'
@@ -99,7 +99,7 @@ curl "https://api.metaplex.com/v1/launches?spotlight=true"
## レスポンス型
-[共有型](/smart-contracts/genesis/integration-apis#shared-types)で `Launch`、`BaseToken`、`Socials` の定義を参照してください。
+[共有型](/ja/api#shared-types)で `Launch`、`BaseToken`、`Socials` の定義を参照してください。
### TypeScript
diff --git a/src/pages/ja/api/index.md b/src/pages/ja/api/index.md
new file mode 100644
index 00000000..4eecc612
--- /dev/null
+++ b/src/pages/ja/api/index.md
@@ -0,0 +1,272 @@
+---
+title: Metaplex API
+metaTitle: Metaplex API - パブリック REST API リファレンス | Metaplex
+description: api.metaplex.com のMetaplexパブリック REST API — Genesis ローンチデータ、ローンチ作成、エージェントレジストリ、エージェントウォレットトランザクション。認証不要です。
+created: '01-15-2025'
+updated: '08-01-2026'
+keywords:
+ - Metaplex API
+ - Genesis API
+ - agent registry API
+ - launch data
+ - token queries
+ - REST API
+about:
+ - API integration
+ - Data aggregation
+ - Launch information
+ - Agent registry
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+ - Rust
+---
+
+Metaplex API は `api.metaplex.com` のパブリック REST API です。Genesis ローンチデータの提供、ローンチ作成トランザクションの構築に加え、Metaplex Agent Registry — エージェントの閲覧、A2A AgentCard の提供、エージェントウォレットトランザクションの構築 — を公開しています。[metaplex.com](https://www.metaplex.com) のローンチプラットフォームを支えているのも同じ API であり、ここに記載されているエンドポイントはサイト自体が使用しているものです。 {% .lead %}
+
+## Summary
+
+Metaplex API は、Genesis ローンチデータ、ローンチ作成、エージェントレジストリへのパブリックな HTTP アクセスを提供します — SDK も認証も不要です。
+
+- Genesis アドレスまたはトークンミントでローンチをクエリ、あるいはすべてのアクティブなローンチを閲覧
+- 新しい Genesis ローンチの作成と登録
+- エージェントレジストリの閲覧・検索、エージェントごとの A2A AgentCard の取得
+- エージェントのミント、資金供給、引き出しトランザクションの構築
+- `https://api.metaplex.com/v1` のパブリック REST API — 認証不要
+- [metaplex.com](https://www.metaplex.com) のローンチプラットフォームを支える API — インテグレーターはプラットフォームと同じエンドポイントを利用
+- Solana メインネット(デフォルト)およびデブネットを `network` クエリパラメータでサポート
+- 機械可読な OpenAPI 3.1 仕様:[YAML](https://api.metaplex.com/v1/openapi.yaml)(正規版)/ [JSON](https://api.metaplex.com/v1/openapi.json)、[RFC 9727 API カタログ](https://api.metaplex.com/.well-known/api-catalog)から発見可能
+
+## ベース URL
+
+```
+https://api.metaplex.com/v1
+```
+
+## ネットワーク選択
+
+デフォルトでは、API は Solana メインネットのデータを返します。devnet のローンチをクエリするには、`network` クエリパラメータを追加します:
+
+```
+?network=solana-devnet
+```
+
+**例:**
+
+```bash
+# Mainnet (default)
+curl https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN
+
+# Devnet
+curl "https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN?network=solana-devnet"
+```
+
+## 認証
+
+認証は不要です。API はレート制限付きで公開されています。
+
+## ローンチエンドポイント
+
+| メソッド | エンドポイント | 説明 |
+|--------|----------|-------------|
+| `GET` | [`/launches/{genesis_pubkey}`](/ja/api/get-launch) | Genesis アドレスでローンチデータを取得 |
+| `GET` | [`/tokens/{mint}`](/ja/api/get-launches-by-token) | トークンミントに対する全ローンチを取得 |
+| `GET` | [`/launches`](/ja/api/list-launches) | フィルタ付きでローンチ一覧を取得 |
+| `GET` | [`/launches?spotlight=true`](/ja/api/get-spotlight) | 注目のスポットライトローンチを取得 |
+| `POST` | [`/launches/create`](/ja/api/create-launch) | 新しいローンチのオンチェーントランザクションを構築 |
+| `POST` | [`/launches/register`](/ja/api/register) | 確認済みローンチをリスティング用に登録 |
+| `POST` | [`/twitter/verify`](/ja/api/verify-twitter) | ローンチ登録用の Twitter アカウント所有権を検証 |
+| `POST` | [`/creator-rewards/claim`](/ja/api/claim-creator-rewards) | クリエイター報酬請求トランザクションを構築 |
+
+{% callout type="note" %}
+`POST` エンドポイント(`/launches/create` と `/launches/register`)は新しいトークンローンチを作成するために組み合わせて使用します。ほとんどのユースケースでは、[SDK API クライアント](/ja/smart-contracts/genesis/sdk/api-client)が両方のエンドポイントをラップしたシンプルなインターフェースを提供します。リアルタイムのオンチェーンローンチ状態は、SDK チェーンメソッドの [`fetchBucketState`](/ja/smart-contracts/genesis/integration-apis/fetch-bucket-state) と [`fetchDepositState`](/ja/smart-contracts/genesis/integration-apis/fetch-deposit-state) で直接読み取れます。
+{% /callout %}
+
+## エージェントエンドポイント
+
+| メソッド | エンドポイント | 説明 |
+|--------|----------|-------------|
+| `GET` | [`/agents`](/ja/api/list-agents) | 登録済みエージェントの一覧・検索(ページネーション付き) |
+| `GET` | [`/agents/{address}`](/ja/api/get-agent) | 単一エージェントをトークンとメタデータ付きで取得 |
+| `GET` | [`/agents/{address}/agent-card.json`](/ja/api/get-agent-card) | ホストされた A2A AgentCard を取得 |
+| `POST` | [`/agents/mint`](/ja/api/mint-agent) | エージェントのミント+登録トランザクションを構築 |
+| `POST` | [`/agents/{address}/fund`](/ja/api/fund-agent) | エージェントウォレットへの SOL 送金を構築 |
+| `POST` | [`/agents/{address}/withdraw`](/ja/api/withdraw-agent) | エージェントウォレットからの引き出しを構築(オーナーのみ) |
+
+ガイド付きのウォークスルーでエージェントをミントするには、[エージェントのミント](/ja/agents/mint-agent)をご参照ください。
+
+## トランザクション構築エンドポイント
+
+トランザクションを構築する `POST` エンドポイントは、ユーザーの鍵を保持することも、トランザクションを送信することもありません。各エンドポイントは、base64 でシリアライズされた1つ以上のトランザクションと、その構築に使用されたブロックハッシュを返します。アプリケーション側でデシリアライズし、ユーザーのウォレットで署名し、ネットワークに送信してください。
+
+## エラーコード
+
+| コード | 説明 |
+| --- | --- |
+| `400` | 不正なリクエスト - 無効なパラメータ |
+| `403` | 操作の権限がない(例:所有していないエージェントからの引き出し) |
+| `404` | ローンチ、トークン、またはエージェントが見つからない |
+| `429` | レート制限超過 |
+| `500` | 内部サーバーエラー |
+
+## レスポンスエンベロープ
+
+API の進化を反映して、2つのエンベロープ規約が使われています:
+
+**ローンチ読み取りエンドポイント**(`/launches*`、`/tokens/*`、`/creator-rewards/claim`)は結果を `data` で、エラーを `error.message` でラップします:
+
+```json
+{ "data": { "…": "…" } }
+```
+
+```json
+{ "error": { "message": "Launch not found" } }
+```
+
+**エージェントエンドポイント、ローンチ書き込みエンドポイント、`/twitter/verify`** は `success` ディスクリミネーターを使用します:
+
+```json
+{ "success": true, "…": "…" }
+```
+
+```json
+{ "success": false, "error": "Agent not found" }
+```
+
+例外は [`/agents/{address}/agent-card.json`](/ja/api/get-agent-card) で、A2A クライアントが直接利用できるよう、エンベロープなしの生の AgentCard JSON を返します。正確なレスポンス形式は各エンドポイントページと [OpenAPI 仕様](https://api.metaplex.com/v1/openapi.json)に記載されています。
+
+## 機械可読仕様
+
+API の完全なコントラクトは OpenAPI 3.1 ドキュメントとして公開されており、API のリクエストバリデーターから直接生成されるため、実装と乖離することはありません:
+
+| フォーマット | URL |
+|--------|-----|
+| YAML(正規版) | `https://api.metaplex.com/v1/openapi.yaml` |
+| JSON | `https://api.metaplex.com/v1/openapi.json` |
+| 現行バージョンのエイリアス | `https://api.metaplex.com/openapi.json` / `openapi.yaml` |
+| RFC 9727 API カタログ | `https://api.metaplex.com/.well-known/api-catalog` |
+
+仕様を Postman、Swagger UI、コードジェネレーター、エージェントフレームワークにインポートすると、すべてのエンドポイントに対する型付きクライアントや呼び出し可能なツールを生成できます。
+
+## Notes
+
+- API にはレート制限があります。`429` レスポンスを受け取った場合は、リクエスト頻度を下げてください。
+- すべての日付フィールド(`startTime`、`endTime`、`graduatedAt`、`lastActivityAt`)は ISO 8601 文字列として返されます。
+- デフォルトのネットワークは `solana-mainnet` です。デブネットのデータは `?network=solana-devnet` で利用可能です。
+- `POST` エンドポイントについては、`/launches/create` と `/launches/register` の両方をラップする [SDK API クライアント](/ja/smart-contracts/genesis/sdk/api-client)の使用を推奨します。
+
+## 共有型 {% #shared-types %}
+
+### TypeScript
+
+```ts
+interface Launch {
+ launchPage: string;
+ mechanic: string;
+ genesisAddress: string;
+ spotlight: boolean;
+ startTime: string;
+ endTime: string;
+ status: 'upcoming' | 'live' | 'graduated' | 'ended';
+ heroUrl: string | null;
+ graduatedAt: string | null;
+ lastActivityAt: string;
+ type: 'launchpool' | 'presale';
+}
+
+interface BaseToken {
+ address: string;
+ name: string;
+ symbol: string;
+ image: string;
+ description: string;
+}
+
+interface Socials {
+ x?: string;
+ telegram?: string;
+ discord?: string;
+}
+
+interface ErrorResponse {
+ error: {
+ message: string;
+ };
+}
+```
+
+### Rust
+
+```rust
+use serde::{Deserialize, Serialize};
+
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Launch {
+ pub launch_page: String,
+ pub mechanic: String,
+ pub genesis_address: String,
+ pub spotlight: bool,
+ pub start_time: String,
+ pub end_time: String,
+ pub status: String,
+ pub hero_url: Option,
+ pub graduated_at: Option,
+ pub last_activity_at: String,
+ #[serde(rename = "type")]
+ pub launch_type: String,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct BaseToken {
+ pub address: String,
+ pub name: String,
+ pub symbol: String,
+ pub image: String,
+ pub description: String,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct Socials {
+ pub x: Option,
+ pub telegram: Option,
+ pub discord: Option,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct ApiError {
+ pub message: String,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct ErrorResponse {
+ pub error: ApiError,
+}
+```
+
+{% callout type="note" %}
+`Cargo.toml` に以下の依存関係を追加してください:
+```toml
+[dependencies]
+reqwest = { version = "0.12", features = ["json"] }
+tokio = { version = "1", features = ["full"] }
+serde = { version = "1", features = ["derive"] }
+```
+{% /callout %}
+
+## Glossary
+
+| 用語 | 定義 |
+|------|------------|
+| **Genesis Address** | 特定のローンチキャンペーンを一意に識別する PDA(Program Derived Address) |
+| **Base Token** | ミントアドレスで識別される、ローンチされるトークン |
+| **Launch Page** | ユーザーがローンチに参加できる URL |
+| **Mechanic** | ローンチに使用される割り当てメカニズム(例:`launchpoolV2`、`presaleV2`、`auction`) |
+| **Launch Type** | ローンチの基盤メカニズム:`launchpool` または `presale` |
+| **Spotlight** | プラットフォームが厳選した注目ローンチを示すフラグ |
+| **Status** | ローンチの現在の状態:`upcoming`、`live`、`graduated`、`ended` |
+| **Socials** | トークンに関連するソーシャルメディアリンク(X/Twitter、Telegram、Discord) |
+| **LaunchData** | `launch`、`baseToken`、`website`、`socials` を含むレスポンスラッパー |
+| **TokenData** | トークンクエリ用のレスポンスラッパー。`launches` 配列と `baseToken`、`website`、`socials` を含む |
diff --git a/src/pages/ja/api/list-agents.md b/src/pages/ja/api/list-agents.md
new file mode 100644
index 00000000..d68797d8
--- /dev/null
+++ b/src/pages/ja/api/list-agents.md
@@ -0,0 +1,188 @@
+---
+title: エージェント一覧
+metaTitle: Metaplex API - エージェント一覧 | REST API | Metaplex
+description: 登録済み AI エージェントの閲覧と検索。メタデータ、フィルタ、ソート付きのページネーションされたエージェントレコードを返します。
+method: GET
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - agent registry
+ - agent search
+ - agent listings
+about:
+ - API endpoint
+ - Agent listings
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+ - Rust
+---
+
+エージェントレジストリを閲覧・検索します。インデックス済みデータベースからページネーションされたエージェントレコードを返します。デフォルトでは登録が新しい順にソートされます。 {% .lead %}
+
+## Summary
+
+オプションの全文検索、フィルタ、ソートを使って登録済みエージェントを一覧表示します。結果は常にページネーションされます。
+
+- `query` で名前検索
+- `activeOnly`、`hasAgentToken`、`hasServices`、`spotlight` でフィルタリング
+- 登録時刻で `latest`(デフォルト)または `oldest` のソート
+- デフォルトは1ページ目、1ページあたり24件(`pageSize` の最大は100)
+
+## Quick Reference
+
+| 項目 | 値 |
+|------|-------|
+| **メソッド** | `GET` |
+| **パス** | `/agents` |
+| **認証** | 不要 |
+| **レスポンス** | ページネーションされた `AgentRecord[]` |
+| **ページネーション** | `page` / `pageSize` |
+
+## エンドポイント
+
+```
+GET /agents
+```
+
+## クエリパラメータ
+
+| パラメータ | 型 | 必須 | 説明 |
+|-----------|------|----------|-------------|
+| `network` | `string` | いいえ | クエリするネットワーク。デフォルト:`solana-mainnet`。devnet の場合は `solana-devnet` を使用。 |
+| `page` | `number` | いいえ | ページ番号(`1` から開始)。デフォルト:`1`。 |
+| `pageSize` | `number` | いいえ | 1ページあたりの件数(`1`〜`100`)。デフォルト:`24`。 |
+| `query` | `string` | いいえ | エージェント名に対するフリーテキスト検索。 |
+| `sort` | `string` | いいえ | 登録時刻順の `latest`(デフォルト)または `oldest`。 |
+| `activeOnly` | `boolean` | いいえ | EIP-8004 メタデータでアクティブとマークされたエージェントのみ。 |
+| `hasAgentToken` | `boolean` | いいえ | プライマリエージェントトークンが設定されたエージェントのみ。 |
+| `hasServices` | `boolean` | いいえ | サービスエンドポイントを公開しているエージェントのみ。 |
+| `spotlight` | `boolean` | いいえ | 発見ページでスポットライトされたエージェントのみ。 |
+
+## リクエスト例
+
+```bash
+curl "https://api.metaplex.com/v1/agents?pageSize=10&sort=latest&activeOnly=true"
+```
+
+## レスポンス
+
+```json
+{
+ "success": true,
+ "data": {
+ "agents": [
+ {
+ "mintAddress": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN",
+ "network": "solana-mainnet",
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "image": "https://example.com/agent.png",
+ "walletAddress": "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
+ "authority": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "agentToken": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "agentMetadataUri": "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json",
+ "metadata": { "…": "EIP-8004 registration JSON" },
+ "a2aCard": { "…": "A2A AgentCard (spec §4.4)" },
+ "isActive": true,
+ "registrationSignature": "5J8…",
+ "indexedAt": "2026-07-01T12:00:00.000Z",
+ "spotlightedAt": null,
+ "verifiedAt": null,
+ "createdAt": "2026-07-01T11:59:58.000Z",
+ "updatedAt": "2026-07-15T09:30:00.000Z"
+ }
+ ],
+ "total": 132,
+ "page": 1,
+ "pageSize": 10,
+ "totalPages": 14
+ }
+}
+```
+
+## レスポンス型
+
+### TypeScript
+
+```ts
+interface PaginatedAgentsResponse {
+ success: true;
+ data: {
+ agents: AgentRecord[];
+ total: number;
+ page: number;
+ pageSize: number;
+ totalPages: number;
+ };
+}
+
+interface AgentRecord {
+ /** Core asset mint address (the NFT representing this agent) */
+ mintAddress: string;
+ network: string;
+ name: string;
+ description: string;
+ image: string | null;
+ /** The agent's signer PDA wallet, derived from the Core asset */
+ walletAddress: string;
+ /** Update authority of the Core asset */
+ authority: string | null;
+ /** Primary token mint, set via the setAgentToken instruction */
+ agentToken: string | null;
+ agentMetadataUri: string | null;
+ /** EIP-8004 agent registration JSON */
+ metadata: Record | null;
+ /** Hosted A2A AgentCard (spec §4.4) */
+ a2aCard: Record | null;
+ isActive: boolean;
+ registrationSignature: string | null;
+ indexedAt: string | null;
+ spotlightedAt: string | null;
+ verifiedAt: string | null;
+ createdAt: string;
+ updatedAt: string;
+}
+```
+
+## 使用例
+
+### TypeScript
+
+```ts
+const response = await fetch(
+ "https://api.metaplex.com/v1/agents?pageSize=10&activeOnly=true"
+);
+const result: PaginatedAgentsResponse = await response.json();
+if (result.success) {
+ const { agents, total, totalPages } = result.data;
+ console.log(`${agents.length} of ${total} agents (${totalPages} pages)`);
+}
+```
+
+### Rust
+
+```rust
+let response = reqwest::get(
+ "https://api.metaplex.com/v1/agents?pageSize=10&activeOnly=true"
+)
+.await?
+.json::()
+.await?;
+
+if response["success"].as_bool() == Some(true) {
+ if let Some(agents) = response["data"]["agents"].as_array() {
+ println!("{} agents on this page", agents.len());
+ }
+} else {
+ eprintln!("API error: {}", response["error"]);
+}
+```
+
+## Notes
+
+- 結果はライブのオンチェーンスキャンではなく、インデックス済みデータベースから取得されます。新しくミントされたエージェントは、登録トランザクションがインデックスされた後に表示されます。
+- ブール型フィルタは `true`/`false` の文字列値を受け付けます。
+- レスポンスは `success` エンベロープを使用します。詳細は [Agent API 概要](/ja/api)をご参照ください。
diff --git a/src/pages/ja/smart-contracts/genesis/integration-apis/list-launches.md b/src/pages/ja/api/list-launches.md
similarity index 96%
rename from src/pages/ja/smart-contracts/genesis/integration-apis/list-launches.md
rename to src/pages/ja/api/list-launches.md
index e9abb95c..40d4bf5e 100644
--- a/src/pages/ja/smart-contracts/genesis/integration-apis/list-launches.md
+++ b/src/pages/ja/api/list-launches.md
@@ -1,6 +1,6 @@
---
title: ローンチ一覧
-metaTitle: Genesis - ローンチ一覧 | REST API | Metaplex
+metaTitle: Metaplex API - ローンチ一覧 | REST API | Metaplex
description: アクティブおよび今後の Genesis ローンチリスティングを取得します。メタデータ付きのリストを返します。
method: GET
created: '01-15-2025'
@@ -102,7 +102,7 @@ curl "https://api.metaplex.com/v1/launches?status=live"
## レスポンス型
-[共有型](/smart-contracts/genesis/integration-apis#shared-types)で `Launch`、`BaseToken`、`Socials` の定義を参照してください。
+[共有型](/ja/api#shared-types)で `Launch`、`BaseToken`、`Socials` の定義を参照してください。
### TypeScript
diff --git a/src/pages/ja/api/mint-agent.md b/src/pages/ja/api/mint-agent.md
new file mode 100644
index 00000000..ed57c952
--- /dev/null
+++ b/src/pages/ja/api/mint-agent.md
@@ -0,0 +1,127 @@
+---
+title: エージェントのミント
+metaTitle: Metaplex API - エージェントのミント | REST API | Metaplex
+description: エージェントの Core アセットをミントし、オンチェーンアイデンティティを登録する部分署名済みトランザクションを構築します。
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - mint agent
+ - agent registration
+ - EIP-8004
+about:
+ - API endpoint
+ - Agent minting
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+エージェント用の MPL Core アセットをミントし、そのアイデンティティを Agent Registry に登録する処理を1ステップで行うトランザクションを構築します。API はエージェントメタデータをオフチェーンに保存し、ウォレットが支払者として共同署名するための部分署名済みトランザクションを返します。 {% .lead %}
+
+## Summary
+
+これは[エージェントのミント](/ja/agents/mint-agent)ガイドの背後にあるエンドポイントです。
+
+- Core アセットの作成と `registerIdentity` の呼び出しを単一のトランザクションで実行
+- アセットのキーペアはサーバー側で生成・事前署名されるため、レスポンスには最終的な `assetAddress` が含まれます
+- EIP-8004 メタデータとホストされた [A2A AgentCard](/ja/api/get-agent-card)(自作のもの、またはメタデータから合成されたもの)を保存
+- 呼び出し元のウォレットが支払者として署名し、トランザクションを送信します
+
+## Quick Reference
+
+| 項目 | 値 |
+|------|-------|
+| **メソッド** | `POST` |
+| **パス** | `/agents/mint` |
+| **認証** | 不要 |
+| **レスポンス** | シリアライズ済みトランザクション + `assetAddress` |
+
+## エンドポイント
+
+```
+POST /agents/mint
+```
+
+## リクエストボディ
+
+| フィールド | 型 | 必須 | 説明 |
+|-------|------|----------|-------------|
+| `wallet` | `string` | はい | エージェントの支払いとオーナーとなるウォレット(base58)。 |
+| `network` | `string` | はい | `solana-mainnet` または `solana-devnet`。 |
+| `name` | `string` | はい | Core アセットのエージェント名。 |
+| `uri` | `string` | はい | アセットのオフチェーン JSON メタデータの URI。 |
+| `agentMetadata` | `object` | はい | EIP-8004 エージェント登録 JSON(name、description、image、services、registrations、active、…)。 |
+| `collectionAddress` | `string` | いいえ | エージェントをミントする Core コレクション。 |
+| `a2aCard` | `object` | いいえ | 事前に構築した A2A AgentCard。省略した場合は `agentMetadata` から合成されます。 |
+
+## リクエスト例
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/agents/mint" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "wallet": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "network": "solana-devnet",
+ "name": "Example Agent",
+ "uri": "https://example.com/agent-metadata.json",
+ "agentMetadata": {
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "active": true,
+ "services": [],
+ "registrations": []
+ }
+ }'
+```
+
+## レスポンス
+
+```json
+{
+ "success": true,
+ "tx": "",
+ "blockhash": {
+ "blockhash": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
+ "lastValidBlockHeight": 123456789
+ },
+ "assetAddress": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+}
+```
+
+## 署名と送信 {% #signing-and-submitting %}
+
+返されたトランザクションにはアセットキーペアによる署名が既に付与されています。ウォレットが支払者として共同署名し、送信します:
+
+```ts
+import { base64 } from "@metaplex-foundation/umi/serializers";
+
+const res = await fetch("https://api.metaplex.com/v1/agents/mint", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify(input),
+});
+const result = await res.json();
+if (!result.success) throw new Error(result.error);
+
+const tx = umi.transactions.deserialize(base64.serialize(result.tx));
+const signed = await umi.identity.signTransaction(tx);
+await umi.rpc.sendTransaction(signed);
+```
+
+## エラー
+
+| ステータス | ボディ | 意味 |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "Invalid input data", "details": [...] }` | リクエストボディがバリデーションに失敗。`details` に問題点が列挙されます。 |
+| `400` | `{ "success": false, "error": "" }` | 構築の失敗(例:コレクションが見つからない)。 |
+| `500` | `{ "success": false, "error": "Failed to prepare mint agent" }` | サーバーエラー。 |
+
+## Notes
+
+- Metaplex レジストリエントリ(`solana:101:metaplex`)は `agentMetadata.registrations` の先頭に自動的に追加されます。
+- EIP-8004 のコンシューマーが [AgentCard エンドポイント](/ja/api/get-agent-card)を発見できるよう、ホストされた A2A サービスエントリが `services[]` に挿入されます。既に自分で作成済みの場合は何も行われません。
+- エージェントレコードはこのエンドポイントの呼び出し時に保存されますが、署名済みトランザクションが確認されインデックスされるまで [エージェント一覧](/ja/api/list-agents) には表示されません。
+- SDK を使ったガイド付きのウォークスルーは[エージェントのミント](/ja/agents/mint-agent)をご参照ください。
diff --git a/src/pages/ja/smart-contracts/genesis/integration-apis/register.md b/src/pages/ja/api/register.md
similarity index 79%
rename from src/pages/ja/smart-contracts/genesis/integration-apis/register.md
rename to src/pages/ja/api/register.md
index 6f8a5fff..81db0320 100644
--- a/src/pages/ja/smart-contracts/genesis/integration-apis/register.md
+++ b/src/pages/ja/api/register.md
@@ -1,6 +1,6 @@
---
title: ローンチ登録
-metaTitle: Genesis - ローンチ登録 | REST API | Metaplex
+metaTitle: Metaplex API - ローンチ登録 | REST API | Metaplex
description: オンチェーントランザクションの確認後に Genesis ローンチを登録します。オンチェーン状態を検証し、ローンチリスティングを作成します。
method: POST
created: '01-15-2025'
@@ -19,10 +19,10 @@ programmingLanguage:
- TypeScript
---
-[ローンチ作成](/smart-contracts/genesis/integration-apis/create-launch)からのオンチェーントランザクションが確認された後、Genesis ローンチを登録します。このエンドポイントはオンチェーン状態を検証し、ローンチリスティングを作成して、ローンチページの URL を返します。 {% .lead %}
+[ローンチ作成](/ja/api/create-launch)からのオンチェーントランザクションが確認された後、Genesis ローンチを登録します。このエンドポイントはオンチェーン状態を検証し、ローンチリスティングを作成して、ローンチページの URL を返します。 {% .lead %}
{% callout type="warning" title="SDK の使用を推奨" %}
-ほとんどのインテグレーターには、SDK の [`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client) の使用を推奨します。この関数はトランザクションの作成、署名、送信、ローンチの登録を1回の呼び出しで処理します。このエンドポイントは、SDK を使用せずに直接 HTTP アクセスが必要な場合にのみ使用してください。
+ほとんどのインテグレーターには、SDK の [`createAndRegisterLaunch`](/ja/smart-contracts/genesis/sdk/api-client) の使用を推奨します。この関数はトランザクションの作成、署名、送信、ローンチの登録を1回の呼び出しで処理します。このエンドポイントは、SDK を使用せずに直接 HTTP アクセスが必要な場合にのみ使用してください。
{% /callout %}
## エンドポイント
@@ -127,8 +127,8 @@ curl -X POST https://api.metaplex.com/v1/launches/register \
## 推奨:SDK の使用
-このエンドポイントを直接呼び出す代わりに、[`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client) を使用することを推奨します。この関数はトランザクションの作成、署名、送信、登録のフロー全体を1回の呼び出しで処理します:
+このエンドポイントを直接呼び出す代わりに、[`createAndRegisterLaunch`](/ja/smart-contracts/genesis/sdk/api-client) を使用することを推奨します。この関数はトランザクションの作成、署名、送信、登録のフロー全体を1回の呼び出しで処理します:
{% code-tabs-imported from="genesis/api_easy_mode" frameworks="umi" filename="createAndRegisterLaunch" /%}
-SDK の全ドキュメント(3つの統合モードを含む)については、[API クライアント](/smart-contracts/genesis/sdk/api-client)を参照してください。
+SDK の全ドキュメント(3つの統合モードを含む)については、[API クライアント](/ja/smart-contracts/genesis/sdk/api-client)を参照してください。
diff --git a/src/pages/ja/api/verify-twitter.md b/src/pages/ja/api/verify-twitter.md
new file mode 100644
index 00000000..01fe17fc
--- /dev/null
+++ b/src/pages/ja/api/verify-twitter.md
@@ -0,0 +1,82 @@
+---
+title: Twitter 検証
+metaTitle: Metaplex API - Twitter 検証 | REST API | Metaplex
+description: Twitter OAuth アクセストークンを、ローンチ登録時に Twitter アカウントの所有権を証明する検証トークンと交換します。
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Genesis API
+ - Twitter verification
+ - social verification
+ - launch registration
+about:
+ - API endpoint
+ - Social verification
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+Twitter(X)の OAuth アクセストークンを、Twitter アカウントの所有権を証明する短期有効の検証トークンと交換します。このトークンを[ローンチの登録](/ja/api/register)に渡すと、ローンチの Twitter リンクが検証済みとしてマークされます。 {% .lead %}
+
+## Summary
+
+- ユーザーが提供した Twitter OAuth 2.0 アクセストークンを X API に対して検証します
+- アカウントのユーザー名と署名付き検証トークンを返します
+- トークンは `POST /launches/register` のオプションフィールド `twitterVerificationToken` で消費されます
+
+## Quick Reference
+
+| 項目 | 値 |
+|------|-------|
+| **メソッド** | `POST` |
+| **パス** | `/twitter/verify` |
+| **認証** | 不要(Twitter アクセストークンがクレデンシャル) |
+| **レスポンス** | ユーザー名 + 検証トークン |
+
+## エンドポイント
+
+```
+POST /twitter/verify
+```
+
+## リクエストボディ
+
+| フィールド | 型 | 必須 | 説明 |
+|-------|------|----------|-------------|
+| `accessToken` | `string` | はい | アプリケーションが取得した Twitter OAuth 2.0 ユーザーアクセストークン(`users.read` の認可が必要)。 |
+
+## リクエスト例
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/twitter/verify" \
+ -H "Content-Type: application/json" \
+ -d '{ "accessToken": "" }'
+```
+
+## レスポンス
+
+```json
+{
+ "success": true,
+ "username": "mytoken",
+ "token": ""
+}
+```
+
+[ローンチの登録](/ja/api/register)を呼び出す際に、`token` を `twitterVerificationToken` として渡します。API はトークンのユーザー名を `launch.externalLinks.twitter` のハンドルと比較し、一致した場合にリンクを検証済みとしてマークします。
+
+## エラー
+
+| ステータス | ボディ | 意味 |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "accessToken is required" }` | `accessToken` が欠落しているか空。 |
+| `401` | `{ "success": false, "error": "Could not verify Twitter account" }` | X API がアクセストークンを拒否した。 |
+| `502` | `{ "success": false, "error": "Could not retrieve Twitter username" }` | X API がユーザー名なしで応答した。 |
+
+## Notes
+
+- OAuth アクセストークンの取得(ユーザーの同意フロー)はアプリケーション側の責任です。このエンドポイントはそれを検証し、検証トークンを発行するだけです。
+- 検証はオプションです — 検証なしでもローンチの登録は成功し、Twitter リンクが未検証のままになるだけです。
diff --git a/src/pages/ja/api/withdraw-agent.md b/src/pages/ja/api/withdraw-agent.md
new file mode 100644
index 00000000..9eb5f5bd
--- /dev/null
+++ b/src/pages/ja/api/withdraw-agent.md
@@ -0,0 +1,98 @@
+---
+title: エージェントからの出金
+metaTitle: Metaplex API - エージェントウォレットからの出金 | REST API | Metaplex
+description: エージェントのウォレットからオーナーに SOL を引き出すトランザクションを構築します。オーナー限定。
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - withdraw
+ - agent wallet
+ - execute
+about:
+ - API endpoint
+ - Agent finance
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+エージェントの署名者 PDA ウォレットからエージェントのオーナーに SOL を送金するトランザクションを構築します。引き出しができるのは、エージェントの Core アセットの現在のオーナーのみです。 {% .lead %}
+
+## Summary
+
+- エージェントのウォレット PDA が署名できるよう、SOL 送金を `execute` インストラクションでラップします
+- トランザクション構築前に、Core アセットに対してサーバー側で所有権を検証します
+- オーナーが署名・送信するための未署名トランザクションを返します
+
+## Quick Reference
+
+| 項目 | 値 |
+|------|-------|
+| **メソッド** | `POST` |
+| **パス** | `/agents/{address}/withdraw` |
+| **認証** | 不要(所有権はオンチェーンおよび構築時に強制) |
+| **レスポンス** | シリアライズ済みトランザクション |
+
+## エンドポイント
+
+```
+POST /agents/{address}/withdraw
+```
+
+## パスパラメータ
+
+| パラメータ | 型 | 必須 | 説明 |
+|-----------|------|----------|-------------|
+| `address` | `string` | はい | エージェントの Core アセットミントアドレス(base58)。 |
+
+## リクエストボディ
+
+| フィールド | 型 | 必須 | 説明 |
+|-------|------|----------|-------------|
+| `sender` | `string` | はい | エージェントオーナーのウォレット(base58)。SOL を受け取り、トランザクションに署名します。 |
+| `amount` | `number` | はい | SOL 単位の金額。正の値である必要があります。 |
+| `network` | `string` | いいえ | `solana-mainnet`(デフォルト)または `solana-devnet`。 |
+
+## リクエスト例
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN/withdraw" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "sender": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "amount": 0.25
+ }'
+```
+
+## レスポンス
+
+```json
+{
+ "success": true,
+ "tx": "",
+ "blockhash": {
+ "blockhash": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
+ "lastValidBlockHeight": 123456789
+ }
+}
+```
+
+オーナーはトランザクションをデシリアライズし、署名して送信します — [署名と送信](/ja/api/mint-agent#signing-and-submitting)をご参照ください。
+
+## エラー
+
+| ステータス | ボディ | 意味 |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "Invalid input data" }` | ボディまたはアドレスがバリデーションに失敗。 |
+| `403` | `{ "success": false, "error": "Only the agent owner can withdraw funds" }` | `sender` がエージェントの Core アセットを所有していない。 |
+| `404` | `{ "success": false, "error": "Agent not found" }` | 指定されたネットワークのこのアドレスに Core アセットが存在しない。 |
+| `500` | `{ "success": false, "error": "Failed to prepare withdraw transaction" }` | サーバーエラー。 |
+
+## Notes
+
+- 構築時の所有権チェックは利便性のためのものです。`execute` インストラクションはいずれにせよオンチェーンで所有権を強制するため、偽造されたリクエストで資金を移動させることはできません。
+- 引き出し先は常に `sender`(オーナー)です — 資金を第三者にリダイレクトすることはできません。
+- 資金を追加するには [エージェントへの資金供給](/ja/api/fund-agent) をご参照ください。
diff --git a/src/pages/ja/smart-contracts/genesis/bonding-curve-parameters.md b/src/pages/ja/smart-contracts/genesis/bonding-curve-parameters.md
new file mode 100644
index 00000000..985e2e0f
--- /dev/null
+++ b/src/pages/ja/smart-contracts/genesis/bonding-curve-parameters.md
@@ -0,0 +1,177 @@
+---
+title: ボンディングカーブ — プロトコルパラメーター
+metaTitle: Genesis ボンディングカーブ プロトコルパラメーター | Metaplex
+description: Genesis ボンディングカーブの具体的なプロトコルパラメーター — トークン供給のデフォルト値、仮想準備金、手数料スケジュール、卒業目標。
+created: '08-03-2026'
+updated: '08-05-2026'
+keywords:
+ - bonding curve
+ - protocol parameters
+ - virtual reserves
+ - fee schedule
+ - graduation
+ - genesis
+ - Metaplex
+ - token supply
+ - program ID
+about:
+ - Bonding Curve
+ - Genesis
+ - Protocol Parameters
+proficiencyLevel: Intermediate
+faqs:
+ - q: Genesis ボンディングカーブトークンの開始価格はいくらですか?
+ a: 開始価格(SOL あたりのトークン数)= (virtualTokens / 10^decimals) / (virtualSol / 10^9)。virtualTokens は生単位、virtualSol はラムポート建てのため、SOL あたりのトークン数として価格を示す前に両方を換算する必要があります。プロトコルのデフォルト値では、曲線がいつ開始されても固定の開始価格になります。
+ - q: 曲線が卒業するまでにどれだけの SOL が調達されますか?
+ a: 卒業時に蓄積される実際のラムポートは (k / virtualTokens) − virtualSol に等しくなります。ここで k = virtualSol × (virtualTokens + baseTokenAllocation) です。SOL で表すには 10^9 で割ります。実際には、これはプロトコルパラメーター表に記載されている卒業目標 SOL と等しくなります。
+ - q: クリエイターは仮想準備金やトークン供給を変更できますか?
+ a: いいえ。仮想準備金、トークン供給、小数点桁数はプロトコルのデフォルト値で設定されており、API を通じてローンチごとに上書きすることはできません。
+ - q: クリエイター手数料は 0.50% のプロトコル手数料に含まれますか?
+ a: いいえ。クリエイター手数料は別個で加算されます。両方とも各スワップのグロス SOL 額に対して独立して計算され、複合しません。スワップあたりの最大合計手数料はプロトコル手数料 + クリエイター手数料です。
+ - q: ボンディングカーブの手数料は卒業後も適用されますか?
+ a: いいえ。卒業後、取引は Raydium CPMM プールに移行します。代わりに卒業後の取引手数料スケジュール — 0.40% のプロトコル手数料、0.60% のクリエイター収益、0.21% の LP 手数料、0.04% の Raydium 手数料 — が適用されます。
+---
+
+Genesis ボンディングカーブの具体的なプロトコルパラメーター — Metaplex API を通じて作成されるすべてのローンチを定義する固定値です。 {% .lead %}
+
+## Summary
+
+すべての Genesis ボンディングカーブローンチは、同じプロトコルレベルのパラメーターを共有します。これらの値は Metaplex API によって設定され、ローンチごとに上書きすることはできません。
+
+- **固定の供給量と小数点桁数** — すべての曲線は小数点以下6桁の 1,000,000,000 トークンで開始
+- **不変の仮想準備金** — `virtualSol` と `virtualTokens` は曲線作成時に設定され、最初の取引から卒業までの価格軌道全体を定義
+- **2段階の手数料構造** — すべてのスワップに 0.50% のプロトコル手数料とオプションのクリエイター手数料。卒業後の Raydium CPMM プールには別の手数料スケジュールが適用
+- **自動卒業** — `baseTokenBalance` がゼロに達すると発動。手動のトリガーは不要
+
+これらのパラメーターを使用する AMM 価格モデルについては[動作理論](/smart-contracts/genesis/bonding-curve-theory)を、生のスワップ式については[高度な内部構造](/smart-contracts/genesis/bonding-curve-internals)をご参照ください。
+
+## プロトコルパラメーター
+
+すべての Genesis ボンディングカーブローンチは、以下の固定プロトコル値で作成されます。
+
+| パラメーター | 値 | 備考 |
+|-----------|-------|-------|
+| **プログラム ID** | `GNS1S5J5AspKXgpjz6SvKL66kPaKWAhaGRhCqPRxii2B` | Solana メインネット |
+| **トークン供給量** | 1,000,000,000 | 小数点適用前の生単位 |
+| **小数点桁数** | 6 | SPL トークンの小数点桁数 |
+| **トークン供給量(小数点適用後)** | 1,000,000,000,000,000 | `supply × 10^decimals` |
+| **`virtualSol`** | [TBD] lamports | 仮想 SOL 準備金 — 開始価格を設定 |
+| **`virtualTokens`** | [TBD] 生単位 | 仮想トークン準備金 — `virtualSol` とペアリング |
+| **卒業目標** | [TBD] SOL | 完全売り切り時に蓄積される実際の SOL |
+| **`baseTokenAllocation`** | 1,000,000,000,000,000 | すべてのトークンが曲線に割り当てられる |
+
+{% callout type="note" %}
+`virtualSol` と `virtualTokens` は曲線作成後は不変です。プログラムが発行するすべてのイベントには両方の値が含まれるため、オフチェーンでの価格計算に別途アカウントフェッチは必要ありません。[インデックスとイベント](/smart-contracts/genesis/bonding-curve-indexing)をご参照ください。
+{% /callout %}
+
+## 手数料スケジュール
+
+トークンのライフサイクルには 2 つの異なる手数料スケジュールが適用されます。ボンディングカーブがアクティブな間のスケジュールと、Raydium への卒業後のスケジュールです。
+
+### ボンディングカーブ(アクティブフェーズ)
+
+手数料はすべてのスワップの **SOL 側**に適用されます。両方の手数料はグロス SOL 額に対して独立して計算され、複合しません。正味の SOL 入出金額 = グロス − プロトコル手数料 − クリエイター手数料。
+
+| 手数料 | 料率 | 受取先 |
+|-----|------|-----------|
+| **プロトコル手数料** | 0.50% | Metaplex の手数料ウォレット — スワップごとに転送 |
+| **クリエイター手数料** | 0.60%(最大) | 設定された `creatorFeeWallet` — バケットに累積し、`claimBondingCurveCreatorFeeV2` で請求 |
+
+{% callout type="note" %}
+クリエイター手数料はオプションです。`creatorFeeWallet` が設定されていない場合、クリエイター手数料は請求されません。設定されている場合、0.60% がプロトコル定義の最大値です。ファーストバイメカニズムが使用される場合、最初の買いは両方の手数料が免除されます。[クリエイター手数料](/smart-contracts/genesis/creator-fees)をご参照ください。
+{% /callout %}
+
+### 卒業後(Raydium CPMM プール) {% #post-graduation-raydium-cpmm-pool %}
+
+曲線の卒業後、取引は Raydium CPMM プールに移行します。別の手数料スケジュールが適用されます:
+
+| 手数料 | 料率 | 受取先 |
+|-----|------|-----------|
+| **プロトコル手数料** | 0.40% | Metaplex |
+| **クリエイター収益** | 0.60% | クリエイター手数料ウォレット — `claimRaydiumCreatorFeeV2` で請求 |
+| **LP 手数料** | 0.21% | 流動性プロバイダー |
+| **Raydium 手数料** | 0.04% | Raydium プロトコル |
+
+## 価格と卒業の計算
+
+プロトコルのデフォルト値では、以下の値は曲線作成時に完全に決定されます。
+
+### 開始価格
+
+開始価格は仮想準備金の比率であり、オンチェーン単位(生トークン単位とラムポート)から人間向けの単位(トークンと SOL)に換算したものです。
+
+```
+startingPrice (tokens per SOL) = (virtualTokens / 10^decimals) / (virtualSol / 10^9)
+```
+
+`virtualTokens` は生単位、`virtualSol` はラムポートで保存されているため、SOL あたりのトークン数として価格を示す前に、それぞれ `10^decimals`(プロトコルのデフォルトでは 10^6)と `10^9` で割ります。これは、(実際の SOL がプールに入る前の)一番最初のスワップで買い手が目にする価格です。
+
+### 卒業時の時価総額
+
+卒業時には `baseTokenBalance = 0` となり、すべての実際のトークンが売却済みです。蓄積された実際の SOL は卒業目標と等しくなります。卒業時の完全希薄化時価総額:
+
+```
+graduationLamports = (k / virtualTokens) − virtualSol
+ where k = virtualSol × (virtualTokens + baseTokenAllocation)
+graduationSOL = graduationLamports / 10^9
+
+priceAtGraduation (lamports per raw unit) = k / virtualTokens^2
+fdvAtGraduation (SOL) = totalSupply (raw units) × priceAtGraduation / 10^9
+```
+
+### コンスタントプロダクト不変式
+
+不変式 `k` は曲線作成時に固定され、曲線がアクティブな間は変化しません。
+
+```
+k = virtualSol × (virtualTokens + baseTokenAllocation)
+```
+
+`k` は曲線のライフサイクル全体を通じて一定です(スワップごとに切り上げ)。
+
+## Notes
+
+- 仮想準備金はすべての `BondingCurveSwapEvent` に含まれます — オフチェーンでの価格計算にバケットアカウントを取得する別途 RPC 呼び出しは不要です
+- プロトコル手数料率と仮想準備金の値は Metaplex が設定し、`createAndRegisterLaunch` API を通じてローンチごとに上書きすることはできません
+- 卒業は `baseTokenBalance` を使い切るスワップで自動的に発動します — 最後のトークンをクリアするトランザクションが同時に Raydium への移行もトリガーします
+- クリエイター手数料は `creatorFeeAccrued` に累積されます(スワップごとには転送されません)。`creatorFeeClaimed` は累計請求額を追跡し、両方とも `claimBondingCurveCreatorFeeV2` の呼び出しごとに累積に対して相対的にリセットされます
+
+## Quick Reference
+
+| 項目 | 値 |
+|------|-------|
+| プログラム ID | `GNS1S5J5AspKXgpjz6SvKL66kPaKWAhaGRhCqPRxii2B` |
+| デフォルト供給量 | `1,000,000,000`(10億トークン、小数点以下6桁) |
+| `baseTokenAllocation` | `1,000,000,000,000,000` |
+| プロトコルスワップ手数料 | `0.50%` |
+| クリエイター手数料(最大) | `0.60%` |
+| 卒業後プロトコル手数料 | `0.40%` |
+| 卒業後 LP 手数料 | `0.21%` |
+| 卒業後 Raydium 手数料 | `0.04%` |
+| `virtualSol` | `[TBD]` |
+| `virtualTokens` | `[TBD]` |
+| 卒業目標 | `[TBD] SOL` |
+| JS SDK | `@metaplex-foundation/genesis` |
+| ソース | [GitHub](https://github.com/metaplex-foundation/mpl-genesis) |
+
+## FAQ
+
+### Genesis ボンディングカーブトークンの開始価格はいくらですか?
+
+SOL あたりのトークン数での開始価格 = `(virtualTokens / 10^decimals) / (virtualSol / 10^9)`。`virtualTokens` は生単位、`virtualSol` はラムポート建てのため、価格を示す前に両方を換算します。これは完全にプロトコルのデフォルト値によって決まります — クリエイターがカスタムの開始価格を設定することはできません。
+
+### 曲線が卒業するまでにどれだけの SOL が調達されますか?
+
+売り切り時に蓄積される実際の SOL は、上記のプロトコルパラメーター表に記載されている卒業目標と等しくなります。これはコンスタントプロダクト式から直接導かれます:`graduationLamports = (k / virtualTokens) − virtualSol`(SOL で表すには `10^9` で割ります)。
+
+### クリエイターは仮想準備金やトークン供給を変更できますか?
+
+いいえ。`virtualSol`、`virtualTokens`、トークン供給量、小数点桁数は Metaplex API が設定するプロトコルのデフォルト値です。ローンチごとにこれらを上書きする API パラメーターはありません。
+
+### クリエイター手数料は 0.50% のプロトコル手数料に含まれますか?
+
+いいえ。プロトコル手数料(0.50%)とクリエイター手数料(最大 0.60%)は独立しています。両方ともスワップのグロス SOL 額に対して計算され、別々に差し引かれます。複合しません。
+
+### ボンディングカーブの手数料は卒業後も適用されますか?
+
+いいえ。卒業後、ボンディングカーブアカウントは閉鎖され、取引は Raydium CPMM プールに移行します。卒業後の取引手数料スケジュールが適用されます — 上記の[卒業後の手数料スケジュール](#post-graduation-raydium-cpmm-pool)の表をご参照ください。
diff --git a/src/pages/ja/smart-contracts/genesis/creator-fees.md b/src/pages/ja/smart-contracts/genesis/creator-fees.md
index 08848dbb..058c48d7 100644
--- a/src/pages/ja/smart-contracts/genesis/creator-fees.md
+++ b/src/pages/ja/smart-contracts/genesis/creator-fees.md
@@ -108,7 +108,7 @@ faqs:
| `collectRaydiumCpmmFeesWithCreatorFeeV2` | グラデュエーション後 — LP手数料のハーベスト | Genesisアカウント、RaydiumプールPDA、RaydiumバケットPDA | LP手数料がRaydiumプールからGenesisバケットに移動 |
| `claimRaydiumCreatorFeeV2` | グラデュエーション後 — バケット残高の請求 | Genesisアカウント、RaydiumバケットPDA、ベース/クォートミント、クリエイター手数料ウォレット | バケット残高がクリエイターウォレットに転送 |
-**ジャンプ:** [ローンチ時の設定](#ローンチ時のクリエイター手数料の設定) · [ウォレットへのリダイレクト](#クリエイター手数料を特定のウォレットにリダイレクトする) · [エージェントPDA](#エージェントローンチ自動pdaルーティング) · [ファーストバイとの組み合わせ](#クリエイター手数料とファーストバイの組み合わせ) · [蓄積確認(カーブ)](#蓄積したクリエイター手数料の確認) · [API経由で請求](#metaplex-api経由で請求推奨) · [報酬なしのケース](#報酬なしのケースの処理) · [カーブ中の請求](#アクティブなカーブ中のクリエイター手数料の請求) · [Raydium手数料の確認](#蓄積したraydiumクリエイター手数料の確認) · [Raydiumからの収集](#ステップ1--raydium-cpmmプールからの手数料収集) · [グラデュエーション後の請求](#ステップ2--クリエイターウォレットへの手数料請求)
+**ジャンプ:** [ローンチ時の設定](#ローンチ時のクリエイター手数料の設定) · [ウォレットへのリダイレクト](#クリエイター手数料を特定のウォレットにリダイレクトする) · [エージェントPDA](#エージェントローンチ自動pdaルーティング) · [ファーストバイとの組み合わせ](#クリエイター手数料とファーストバイの組み合わせ) · [蓄積確認(カーブ)](#蓄積したクリエイター手数料の確認) · [API経由で請求](#metaplex-api経由で請求推奨) · [報酬なしのケース](#handling-the-no-rewards-case) · [カーブ中の請求](#アクティブなカーブ中のクリエイター手数料の請求) · [Raydium手数料の確認](#蓄積したraydiumクリエイター手数料の確認) · [Raydiumからの収集](#ステップ1--raydium-cpmmプールからの手数料収集) · [グラデュエーション後の請求](#ステップ2--クリエイターウォレットへの手数料請求)
1. `createAndRegisterLaunch` を呼び出すときに `launch` オブジェクトに `creatorFeeWallet` を設定する
2. ローンチ後、`bucket.creatorFeeAccrued` を監視して蓄積手数料を追跡する
@@ -209,9 +209,9 @@ console.log('Creator fee wallet:', creatorFeeWallet?.toString() ?? 'none configu
| `network` | `SvmNetwork` | いいえ | `'solana-mainnet'`(デフォルト)または `'solana-devnet'`。 |
| `payer` | `PublicKey \| string` | いいえ | 返されたトランザクションの手数料とレントを負担するウォレット。デフォルトは `wallet`。クリエイター手数料ウォレットがSOLを保持していない場合(例:エージェントPDAやコールドウォレット)に使用します。 |
-SDKは、デシリアライズされたUmi `Transaction` と、それらが構築されたブロックハッシュを返します。常に返されたブロックハッシュに対して各トランザクションを確認してください — 新たに取得したものに置き換えないでください。確認競合が発生します。完全なHTTPスキーマは[Claim Creator Rewards (API)](/smart-contracts/genesis/integration-apis/claim-creator-rewards)を参照してください。
+SDKは、デシリアライズされたUmi `Transaction` と、それらが構築されたブロックハッシュを返します。常に返されたブロックハッシュに対して各トランザクションを確認してください — 新たに取得したものに置き換えないでください。確認競合が発生します。完全なHTTPスキーマは[Claim Creator Rewards (API)](/ja/api/claim-creator-rewards)を参照してください。
-### 報酬なしのケースの処理
+### 報酬なしのケースの処理 {% #handling-the-no-rewards-case %}
ウォレットに請求するものがない場合、エンドポイントはHTTP `400` と `{ "error": { "message": "No rewards available to claim" } }` を返します — 空の `transactions` 配列を含む成功レスポンスは返**されません**。SDKはこれを `GenesisApiError` として表面化するため、呼び出し元はエラーをキャッチして `err.message`(または `err.statusCode === 400`)で分岐する必要があります。エラーをそのまま伝播させてはいけません。
@@ -461,7 +461,7 @@ console.log('Raydium creator fees collected and claimed to:', creatorFeeWallet.t
### 請求できる報酬がない場合はどうなりますか?
-`claimCreatorRewards` エンドポイントはHTTP `400` と `{"error":{"message":"No rewards available to claim"}}` を返します。SDKはこれを `GenesisApiError` として表面化します。これを例外的な結果ではなく — `err.message`(または `err.statusCode === 400`)をチェックしてエラーを伝播させずに分岐します。[報酬なしのケースの処理](#報酬なしのケースの処理)を参照してください。
+`claimCreatorRewards` エンドポイントはHTTP `400` と `{"error":{"message":"No rewards available to claim"}}` を返します。SDKはこれを `GenesisApiError` として表面化します。これを例外的な結果ではなく — `err.message`(または `err.statusCode === 400`)をチェックしてエラーを伝播させずに分岐します。[報酬なしのケースの処理](#handling-the-no-rewards-case)を参照してください。
### オプションの `payer` フィールドは何のためですか?
diff --git a/src/pages/ja/smart-contracts/genesis/getting-started.md b/src/pages/ja/smart-contracts/genesis/getting-started.md
index a1743a7d..f145b332 100644
--- a/src/pages/ja/smart-contracts/genesis/getting-started.md
+++ b/src/pages/ja/smart-contracts/genesis/getting-started.md
@@ -257,7 +257,7 @@ Unix タイムスタンプ(ミリ秒ではなく秒)を使用してくださ
| **Genesis Account** | ローンチを調整しトークンを保持する PDA |
| **Inflow Bucket** | ユーザーからの入金を収集する bucket |
| **Outflow Bucket** | 終了動作を通じて資金を受け取る bucket |
-| **ローンチタイプ** | ローンチの基盤メカニズム:`launchpool` または `presale`。作成後にバックエンドクランクによってオンチェーンで遡及的に設定。[SDK](/ja/smart-contracts/genesis/sdk/javascript#genesis-account)または[REST API](/ja/smart-contracts/genesis/integration-apis)で照会可能 |
+| **ローンチタイプ** | ローンチの基盤メカニズム:`launchpool` または `presale`。作成後にバックエンドクランクによってオンチェーンで遡及的に設定。[SDK](/ja/smart-contracts/genesis/sdk/javascript#genesis-account)または[REST API](/ja/api)で照会可能 |
| **ファイナライズ** | 設定をロックしてローンチを有効化する |
| **時間条件** | bucket のフェーズを制御する Unix タイムスタンプ |
| **終了動作** | 入金期間終了時に実行される自動アクション |
diff --git a/src/pages/ja/smart-contracts/genesis/index.md b/src/pages/ja/smart-contracts/genesis/index.md
index 22742f88..e953cffa 100644
--- a/src/pages/ja/smart-contracts/genesis/index.md
+++ b/src/pages/ja/smart-contracts/genesis/index.md
@@ -81,7 +81,7 @@ Genesis は組み合わせ可能な3つのメカニズムに対応していま
| **Launch Pool** (`launchpool`) | 預入期間を通じて比例配分と価格発見を行う | フェアローンチ、コミュニティトークン、クラウドセール |
| **Presale** (`presale`) | 事前に決定されたレートでの固定価格トークンセール | トークンセール、既知のバリュエーション |
-ローンチタイプは、作成後にバックエンドクランクによって[Genesis Account](#genesis-account)にオンチェーンで記録されます。トレーダーやアグリゲーターは、[JavaScript SDK](/smart-contracts/genesis/sdk/javascript#genesis-account)(`fetchGenesisAccountV2`)または[Integration APIs](/smart-contracts/genesis/integration-apis)(REST応答の`type`フィールド)を通じてプログラム的にタイプを照会できます。
+ローンチタイプは、作成後にバックエンドクランクによって[Genesis Account](#genesis-account)にオンチェーンで記録されます。トレーダーやアグリゲーターは、[JavaScript SDK](/ja/smart-contracts/genesis/sdk/javascript#genesis-account)(`fetchGenesisAccountV2`)または[Metaplex API](/ja/api)(REST応答の`type`フィールド)を通じてプログラム的にタイプを照会できます。
### Genesis Account
diff --git a/src/pages/ja/smart-contracts/genesis/integration-apis/index.md b/src/pages/ja/smart-contracts/genesis/integration-apis/index.md
deleted file mode 100644
index f7b7578a..00000000
--- a/src/pages/ja/smart-contracts/genesis/integration-apis/index.md
+++ /dev/null
@@ -1,219 +0,0 @@
----
-title: Integration APIs
-metaTitle: Genesis - Integration APIs | ローンチデータ | Metaplex
-description: HTTP REST エンドポイントとオンチェーン SDK メソッドを通じて Genesis ローンチデータにアクセスします。認証不要のパブリック API です。
-created: '01-15-2025'
-updated: '02-26-2026'
-keywords:
- - Genesis API
- - integration API
- - launch data
- - token queries
- - on-chain state
-about:
- - API integration
- - Data aggregation
- - Launch information
-proficiencyLevel: Intermediate
-programmingLanguage:
- - JavaScript
- - TypeScript
- - Rust
----
-
-Genesis Integration APIs により、アグリゲーターやアプリケーションが Genesis トークンローンチのデータをクエリできます。REST エンドポイントを通じてメタデータにアクセスしたり、SDK でリアルタイムのオンチェーン状態を取得したりできます。 {% .lead %}
-
-## Summary
-
-Genesis 統合 API は、Solana 上の Genesis トークンローンチのデータへの読み取り専用アクセスを提供します。
-
-- Genesis アドレス、トークンミント、またはすべてのアクティブなローンチを検索可能
-- `https://api.metaplex.com/v1` の公開 REST API — 認証不要
-- ローンチメタデータ、トークン情報、ウェブサイト、ソーシャルリンクを返却
-- Solana メインネット(デフォルト)およびデブネットを `network` クエリパラメータでサポート
-
-## ベース URL
-
-```
-https://api.metaplex.com/v1
-```
-
-## ネットワーク選択
-
-デフォルトでは、API は Solana メインネットのデータを返します。devnet のローンチをクエリするには、`network` クエリパラメータを追加します:
-
-```
-?network=solana-devnet
-```
-
-**例:**
-
-```bash
-# Mainnet (default)
-curl https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN
-
-# Devnet
-curl "https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN?network=solana-devnet"
-```
-
-## 認証
-
-認証は不要です。API はレート制限付きで公開されています。
-
-## 利用可能なエンドポイント
-
-| メソッド | エンドポイント | 説明 |
-|--------|----------|-------------|
-| `GET` | [`/launches/{genesis_pubkey}`](/smart-contracts/genesis/integration-apis/get-launch) | Genesis アドレスでローンチデータを取得 |
-| `GET` | [`/tokens/{mint}`](/smart-contracts/genesis/integration-apis/get-launches-by-token) | トークンミントに対する全ローンチを取得 |
-| `GET` | [`/launches`](/smart-contracts/genesis/integration-apis/list-launches) | フィルタ付きでローンチ一覧を取得 |
-| `GET` | [`/launches?spotlight=true`](/smart-contracts/genesis/integration-apis/get-spotlight) | 注目のスポットライトローンチを取得 |
-| `POST` | [`/launches/create`](/smart-contracts/genesis/integration-apis/create-launch) | 新しいローンチのオンチェーントランザクションを構築 |
-| `POST` | [`/launches/register`](/smart-contracts/genesis/integration-apis/register) | 確認済みローンチをリスティング用に登録 |
-| `CHAIN` | [`fetchBucketState`](/smart-contracts/genesis/integration-apis/fetch-bucket-state) | オンチェーンからバケット状態を取得 |
-| `CHAIN` | [`fetchDepositState`](/smart-contracts/genesis/integration-apis/fetch-deposit-state) | オンチェーンからデポジット状態を取得 |
-
-{% callout type="note" %}
-`POST` エンドポイント(`/launches/create` と `/launches/register`)は新しいトークンローンチを作成するために組み合わせて使用します。ほとんどのユースケースでは、[SDK API クライアント](/smart-contracts/genesis/sdk/api-client)が両方のエンドポイントをラップしたシンプルなインターフェースを提供しており、利用を推奨します。
-{% /callout %}
-
-## エラーコード
-
-| コード | 説明 |
-| --- | --- |
-| `400` | 不正なリクエスト - 無効なパラメータ |
-| `404` | ローンチまたはトークンが見つからない |
-| `429` | レート制限超過 |
-| `500` | 内部サーバーエラー |
-
-エラーレスポンスの形式:
-
-```json
-{
- "error": {
- "message": "Launch not found"
- }
-}
-```
-
-## 共有型
-
-### TypeScript
-
-```ts
-interface Launch {
- launchPage: string;
- mechanic: string;
- genesisAddress: string;
- spotlight: boolean;
- startTime: string;
- endTime: string;
- status: 'upcoming' | 'live' | 'graduated' | 'ended';
- heroUrl: string | null;
- graduatedAt: string | null;
- lastActivityAt: string;
- type: 'launchpool' | 'presale';
-}
-
-interface BaseToken {
- address: string;
- name: string;
- symbol: string;
- image: string;
- description: string;
-}
-
-interface Socials {
- x?: string;
- telegram?: string;
- discord?: string;
-}
-
-interface ErrorResponse {
- error: {
- message: string;
- };
-}
-```
-
-### Rust
-
-```rust
-use serde::{Deserialize, Serialize};
-
-#[derive(Debug, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct Launch {
- pub launch_page: String,
- pub mechanic: String,
- pub genesis_address: String,
- pub spotlight: bool,
- pub start_time: String,
- pub end_time: String,
- pub status: String,
- pub hero_url: Option,
- pub graduated_at: Option,
- pub last_activity_at: String,
- #[serde(rename = "type")]
- pub launch_type: String,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct BaseToken {
- pub address: String,
- pub name: String,
- pub symbol: String,
- pub image: String,
- pub description: String,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct Socials {
- pub x: Option,
- pub telegram: Option,
- pub discord: Option,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct ApiError {
- pub message: String,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct ErrorResponse {
- pub error: ApiError,
-}
-```
-
-{% callout type="note" %}
-`Cargo.toml` に以下の依存関係を追加してください:
-```toml
-[dependencies]
-reqwest = { version = "0.12", features = ["json"] }
-tokio = { version = "1", features = ["full"] }
-serde = { version = "1", features = ["derive"] }
-```
-{% /callout %}
-
-## Notes
-
-- API にはレート制限があります。`429` レスポンスを受け取った場合は、リクエスト頻度を下げてください。
-- すべての日付フィールド(`startTime`、`endTime`、`graduatedAt`、`lastActivityAt`)は ISO 8601 文字列として返されます。
-- デフォルトのネットワークは `solana-mainnet` です。デブネットのデータは `?network=solana-devnet` で利用可能です。
-- `POST` エンドポイントは、ほとんどのユースケースで [SDK API クライアント](/smart-contracts/genesis/sdk/api-client)を使用してください。
-
-## Glossary
-
-| 用語 | 定義 |
-|------|------------|
-| **Genesis Address** | 特定のローンチキャンペーンを一意に識別する PDA(Program Derived Address) |
-| **Base Token** | ミントアドレスで識別される、ローンチされるトークン |
-| **Launch Page** | ユーザーがローンチに参加できる URL |
-| **Mechanic** | ローンチに使用される割り当てメカニズム(例:`launchpoolV2`、`presaleV2`、`auction`) |
-| **Launch Type** | ローンチの基盤メカニズム:`launchpool` または `presale` |
-| **Spotlight** | プラットフォームが厳選した注目ローンチを示すフラグ |
-| **Status** | ローンチの現在の状態:`upcoming`、`live`、`graduated`、`ended` |
-| **Socials** | トークンに関連するソーシャルメディアリンク(X/Twitter、Telegram、Discord) |
-| **LaunchData** | `launch`、`baseToken`、`website`、`socials` を含むレスポンスラッパー |
-| **TokenData** | トークンクエリ用のレスポンスラッパー。`launches` 配列と `baseToken`、`website`、`socials` を含む |
diff --git a/src/pages/ja/smart-contracts/genesis/launch-pool.md b/src/pages/ja/smart-contracts/genesis/launch-pool.md
index 3569801e..f1136fab 100644
--- a/src/pages/ja/smart-contracts/genesis/launch-pool.md
+++ b/src/pages/ja/smart-contracts/genesis/launch-pool.md
@@ -467,4 +467,4 @@ Launch Pool は入金に基づいて自然に価格を発見し、比例配分
- [Presale](/ja/smart-contracts/genesis/presale) - 固定価格トークン販売
- [Uniform Price Auction](/ja/smart-contracts/genesis/uniform-price-auction) - 入札ベースのトークンオファリング
- [トークンをローンチする](/ja/tokens/launch-token) - エンドツーエンドのトークンローンチガイド
-- [Integration APIs](/ja/smart-contracts/genesis/integration-apis) - API 経由でローンチとトークンセールデータを照会
+- [Metaplex API](/ja/api) - API 経由でローンチとトークンセールデータを照会
diff --git a/src/pages/ja/smart-contracts/genesis/sdk/javascript.md b/src/pages/ja/smart-contracts/genesis/sdk/javascript.md
index 1e4863e7..114aa19d 100644
--- a/src/pages/ja/smart-contracts/genesis/sdk/javascript.md
+++ b/src/pages/ja/smart-contracts/genesis/sdk/javascript.md
@@ -326,7 +326,7 @@ if (account2.data.launchType === LaunchType.LaunchPoolV1) {
**Genesisアカウントのフィールド:** `authority`, `baseMint`, `quoteMint`, `totalSupplyBaseToken`, `totalAllocatedSupplyBaseToken`, `totalProceedsQuoteToken`, `fundingMode`, `launchType`, `bucketCount`, `finalized`
-### GPAビルダー — ローンチタイプで照会
+### GPAビルダー — ローンチタイプで照会 {% #gpa-builder-query-by-launch-type %}
`getGenesisAccountV2GpaBuilder()`を使用して、オンチェーンフィールドでフィルタリングされた全Genesisアカウントを照会します。SolanaのバイトレベルフィルターによるgetProgramAccounts RPCメソッドを使用して効率的な検索を行います。
@@ -393,7 +393,7 @@ enum LaunchType {
}
```
-[Integration APIs](/ja/smart-contracts/genesis/integration-apis)では文字列(`'launchpool'`)として返されますが、オンチェーンSDKでは上記の数値列挙型を使用します。
+[Metaplex API](/ja/api)では文字列(`'launchpool'`)として返されますが、オンチェーンSDKでは上記の数値列挙型を使用します。
### GenesisAccountV2
@@ -476,7 +476,7 @@ UmiはMetaplexのSolana向けJavaScriptフレームワークです。トラン
`fetch`はアカウントが存在しない場合にエラーをスローします。`safeFetch`は代わりに`null`を返すため、アカウントの存在確認に便利です。
### トークンのローンチタイプを取得するにはどうすればいいですか?
-トークンのミントアドレスを使用して`fetchGenesisAccountV2FromSeeds()`で`GenesisAccountV2`アカウントを取得します。`launchType`フィールドは`0`(未初期化)または`3`(LaunchPoolV1)を返します。特定のタイプの全ローンチを照会するには、[GPAビルダー](#gpaビルダー--ローンチタイプで照会)を使用します。または、[Integration APIs](/ja/smart-contracts/genesis/integration-apis)がREST応答で文字列としてローンチタイプを返します。
+トークンのミントアドレスを使用して`fetchGenesisAccountV2FromSeeds()`で`GenesisAccountV2`アカウントを取得します。`launchType`フィールドは`0`(未初期化)または`3`(LaunchPoolV1)を返します。特定のタイプの全ローンチを照会するには、[GPAビルダー](#gpa-builder-query-by-launch-type)を使用します。または、[Metaplex API](/ja/api)がREST応答で文字列としてローンチタイプを返します。
### トランザクションエラーはどのように処理しますか?
`sendAndConfirm`の呼び出しを try/catch ブロックで囲みます。エラーメッセージで具体的な失敗理由を確認してください。
diff --git a/src/pages/ja/tokens/launch-token.md b/src/pages/ja/tokens/launch-token.md
index b0526dc4..45a79167 100644
--- a/src/pages/ja/tokens/launch-token.md
+++ b/src/pages/ja/tokens/launch-token.md
@@ -435,4 +435,4 @@ main().catch(console.error);
- [Genesis 概要](/ja/smart-contracts/genesis) - Solana トークンローンチパッドについて詳しく学ぶ
- [Launch Pool](/ja/smart-contracts/genesis/launch-pool) - フェアローンチの詳細ドキュメント
- [プレセール](/ja/smart-contracts/genesis/presale) - 固定価格でのトークンプレセールを実行
-- [Integration APIs](/ja/smart-contracts/genesis/integration-apis) - API でトークンセールデータをクエリ
+- [Metaplex API](/ja/api) - API でトークンセールデータをクエリ
diff --git a/src/pages/ko/smart-contracts/genesis/integration-apis/claim-creator-rewards.md b/src/pages/ko/api/claim-creator-rewards.md
similarity index 84%
rename from src/pages/ko/smart-contracts/genesis/integration-apis/claim-creator-rewards.md
rename to src/pages/ko/api/claim-creator-rewards.md
index a043118f..ec4caf19 100644
--- a/src/pages/ko/smart-contracts/genesis/integration-apis/claim-creator-rewards.md
+++ b/src/pages/ko/api/claim-creator-rewards.md
@@ -1,6 +1,6 @@
---
title: 창작자 보상 청구
-metaTitle: Genesis - 창작자 보상 청구 | REST API | Metaplex
+metaTitle: Metaplex API - 창작자 보상 청구 | REST API | Metaplex
description: 단일 API 호출로 지갑의 모든 Genesis 본딩 커브 및 Raydium 버킷에서 누적된 창작자 보상을 청구합니다. 서명할 준비가 된 Solana 트랜잭션을 반환합니다.
method: POST
created: '04-23-2026'
@@ -27,7 +27,7 @@ programmingLanguage:
지갑이 자격이 있는 모든 Genesis 본딩 커브와 Raydium CPMM 버킷의 누적된 창작자 보상을 단일 호출로 청구합니다. 엔드포인트는 지갑(또는 지정된 `payer`)이 서명하고 제출해야 하는 base64 인코딩된 Solana 트랜잭션 목록을 반환합니다. {% .lead %}
{% callout type="note" title="SDK 래퍼 사용 가능" %}
-대부분의 통합자는 Genesis JavaScript SDK의 [`claimCreatorRewards`](/smart-contracts/genesis/sdk/api-client#claim-creator-rewards)를 사용해야 합니다 — 트랜잭션을 역직렬화하고 오류 파싱을 처리하며, 서명을 위해 [Umi 신원](/dev-tools/umi/getting-started#connecting-a-wallet)에 직접 연결됩니다. SDK에 의존할 수 없는 경우에만 이 엔드포인트를 직접 호출하세요.
+대부분의 통합자는 Genesis JavaScript SDK의 [`claimCreatorRewards`](/ko/smart-contracts/genesis/sdk/api-client#claim-creator-rewards)를 사용해야 합니다 — 트랜잭션을 역직렬화하고 오류 파싱을 처리하며, 서명을 위해 [Umi 신원](/ko/dev-tools/umi/getting-started#connecting-a-wallet)에 직접 연결됩니다. SDK에 의존할 수 없는 경우에만 이 엔드포인트를 직접 호출하세요.
{% /callout %}
## Summary
@@ -37,7 +37,7 @@ programmingLanguage:
- **집계** — 한 번의 요청으로 모든 자격 있는 버킷을 청구합니다; 버킷당 하나의 트랜잭션이 반환됩니다
- **서명** — 응답은 지갑(또는 선택적 `payer`)이 서명하고 제출해야 하는 base64 인코딩된 Solana 트랜잭션입니다
- **오류** — 누적된 것이 없으면 HTTP `400` `"No rewards available to claim"`를 반환합니다; 호출자는 빈 배열이 아니라 오류로 분기해야 합니다
-- **SDK 래퍼** — [`claimCreatorRewards`](/smart-contracts/genesis/sdk/api-client#claim-creator-rewards)는 역직렬화, 타입화된 오류, Umi 서명을 처리합니다
+- **SDK 래퍼** — [`claimCreatorRewards`](/ko/smart-contracts/genesis/sdk/api-client#claim-creator-rewards)는 역직렬화, 타입화된 오류, Umi 서명을 처리합니다
## 엔드포인트
@@ -105,20 +105,20 @@ API는 청구되는 버킷마다 하나의 트랜잭션을 반환합니다 —
| `✖ Invalid wallet address` | `400` | `wallet`이 유효한 base58 Solana 공개 키가 아닙니다. |
{% callout type="warning" title="보상 없음은 빈 배열이 아닌 400" %}
-지갑에 청구할 것이 없을 때 엔드포인트는 HTTP `400`과 `No rewards available to claim` 메시지를 반환합니다 — `transactions: []`를 포함한 `200`을 반환하지 **않습니다**. 호출자는 오류를 잡거나(또는 `response.status`와 `body.error.message`를 검사하고) 이를 실패가 아닌 "할 일 없음" 사례로 처리해야 합니다. SDK는 이를 타입화된 `GenesisApiError`로 표면화합니다; [오류 처리](/smart-contracts/genesis/creator-fees#보상-없음-사례-처리)를 참조하세요.
+지갑에 청구할 것이 없을 때 엔드포인트는 HTTP `400`과 `No rewards available to claim` 메시지를 반환합니다 — `transactions: []`를 포함한 `200`을 반환하지 **않습니다**. 호출자는 오류를 잡거나(또는 `response.status`와 `body.error.message`를 검사하고) 이를 실패가 아닌 "할 일 없음" 사례로 처리해야 합니다. SDK는 이를 타입화된 `GenesisApiError`로 표면화합니다; [오류 처리](/ko/smart-contracts/genesis/creator-fees#handling-the-no-rewards-case)를 참조하세요.
{% /callout %}
## 참고 사항
- 엔드포인트는 버킷 수준에서 멱등적입니다 — 성공적인 청구 직후에 다시 호출하면 새 수수료가 누적될 때까지 `No rewards available to claim`을 반환합니다.
- 반환된 트랜잭션은 `data.blockhash`의 블록해시를 사용합니다. 확인이 ~60–90초 이상 걸리면 블록해시가 만료되며, 새로운 트랜잭션 세트를 얻기 위해 호출을 반복해야 합니다.
-- 창작자 보상은 매 스왑(본딩 커브)과 LP 거래 활동(Raydium CPMM)에서 누적됩니다 — 이 엔드포인트는 둘 다 집계합니다. 기본 누적 메커니즘과 버킷별 페치 헬퍼는 [Genesis 본딩 커브의 창작자 수수료](/smart-contracts/genesis/creator-fees)를 참조하세요.
+- 창작자 보상은 매 스왑(본딩 커브)과 LP 거래 활동(Raydium CPMM)에서 누적됩니다 — 이 엔드포인트는 둘 다 집계합니다. 기본 누적 메커니즘과 버킷별 페치 헬퍼는 [Genesis 본딩 커브의 창작자 수수료](/ko/smart-contracts/genesis/creator-fees)를 참조하세요.
- 창작자 수수료 지갑은 버킷 생성 시 `creatorFeeWallet`을 통해 설정되며, 커브가 활성화된 후에는 변경할 수 없습니다.
## 권장: SDK 사용
-이 엔드포인트를 직접 호출하는 대신 `@metaplex-foundation/genesis`의 [`claimCreatorRewards`](/smart-contracts/genesis/sdk/api-client#claim-creator-rewards)를 사용하세요:
+이 엔드포인트를 직접 호출하는 대신 `@metaplex-foundation/genesis`의 [`claimCreatorRewards`](/ko/smart-contracts/genesis/sdk/api-client#claim-creator-rewards)를 사용하세요:
{% code-tabs-imported from="genesis/api_claim_creator_rewards" frameworks="umi" filename="claimCreatorRewards" /%}
-전체 SDK 표면에 대해서는 [API 클라이언트](/smart-contracts/genesis/sdk/api-client) 페이지를, 엔드투엔드 청구 가이드에 대해서는 [창작자 수수료](/smart-contracts/genesis/creator-fees)를 참조하세요.
+전체 SDK 표면에 대해서는 [API 클라이언트](/ko/smart-contracts/genesis/sdk/api-client) 페이지를, 엔드투엔드 청구 가이드에 대해서는 [창작자 수수료](/ko/smart-contracts/genesis/creator-fees)를 참조하세요.
diff --git a/src/pages/ko/smart-contracts/genesis/integration-apis/create-launch.md b/src/pages/ko/api/create-launch.md
similarity index 82%
rename from src/pages/ko/smart-contracts/genesis/integration-apis/create-launch.md
rename to src/pages/ko/api/create-launch.md
index 2f31f75c..9e4cff52 100644
--- a/src/pages/ko/smart-contracts/genesis/integration-apis/create-launch.md
+++ b/src/pages/ko/api/create-launch.md
@@ -1,6 +1,6 @@
---
title: 런칭 생성
-metaTitle: Genesis - 런칭 생성 | REST API | Metaplex
+metaTitle: Metaplex API - 런칭 생성 | REST API | Metaplex
description: 새로운 Genesis 토큰 런칭을 위한 온체인 트랜잭션을 빌드합니다. 서명 및 전송 준비가 된 미서명 트랜잭션을 반환합니다.
method: POST
created: '02-19-2026'
@@ -19,14 +19,14 @@ programmingLanguage:
- TypeScript
---
-새로운 Genesis 토큰 런칭을 위한 온체인 트랜잭션을 빌드합니다. [런칭 등록](/smart-contracts/genesis/integration-apis/register)을 호출하기 전에 서명하여 전송해야 하는 미서명 트랜잭션을 반환합니다. {% .lead %}
+새로운 Genesis 토큰 런칭을 위한 온체인 트랜잭션을 빌드합니다. [런칭 등록](/ko/api/register)을 호출하기 전에 서명하여 전송해야 하는 미서명 트랜잭션을 반환합니다. {% .lead %}
{% callout type="warning" title="SDK 사용을 권장합니다" %}
-대부분의 통합자는 SDK의 [`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client)를 사용해야 합니다. 이 함수는 트랜잭션 생성, 서명, 전송, 런칭 등록을 한 번의 호출로 처리합니다. 이 엔드포인트는 SDK 없이 직접 HTTP 접근이 필요한 경우에만 사용하세요.
+대부분의 통합자는 SDK의 [`createAndRegisterLaunch`](/ko/smart-contracts/genesis/sdk/api-client)를 사용해야 합니다. 이 함수는 트랜잭션 생성, 서명, 전송, 런칭 등록을 한 번의 호출로 처리합니다. 이 엔드포인트는 SDK 없이 직접 HTTP 접근이 필요한 경우에만 사용하세요.
{% /callout %}
{% callout type="note" %}
-Genesis 프로그램의 전체 기능을 [metaplex.com](https://www.metaplex.com)에서 아직 지원하지 않으므로, Create API(또는 SDK)를 사용하여 런칭을 프로그래밍 방식으로 생성하는 것을 권장합니다. API를 통해 생성된 메인넷 런칭은 [등록](/smart-contracts/genesis/integration-apis/register) 후 metaplex.com에 표시됩니다.
+Genesis 프로그램의 전체 기능을 [metaplex.com](https://www.metaplex.com)에서 아직 지원하지 않으므로, Create API(또는 SDK)를 사용하여 런칭을 프로그래밍 방식으로 생성하는 것을 권장합니다. API를 통해 생성된 메인넷 런칭은 [등록](/ko/api/register) 후 metaplex.com에 표시됩니다.
{% /callout %}
## 엔드포인트
@@ -73,7 +73,7 @@ POST /v1/launches/create
- **`presaleV2`** — 고정가 사전 판매
{% callout type="note" %}
-SDK의 `buildCreateLaunchPayload` 함수는 간소화된 `CreateLaunchInput`을 이 전체 페이로드 형식으로 변환하는 것을 처리합니다. [API 클라이언트](/smart-contracts/genesis/sdk/api-client) 문서를 참조하세요.
+SDK의 `buildCreateLaunchPayload` 함수는 간소화된 `CreateLaunchInput`을 이 전체 페이로드 형식으로 변환하는 것을 처리합니다. [API 클라이언트](/ko/smart-contracts/genesis/sdk/api-client) 문서를 참조하세요.
{% /callout %}
## 요청 예시 — Launch Pool Type
@@ -150,8 +150,8 @@ curl -X POST https://api.metaplex.com/v1/launches/create \
## 권장: SDK 사용
-이 엔드포인트를 직접 호출하는 대신, 트랜잭션 생성, 서명, 전송, 등록의 전체 흐름을 한 번의 호출로 처리하는 [`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client)를 사용하세요:
+이 엔드포인트를 직접 호출하는 대신, 트랜잭션 생성, 서명, 전송, 등록의 전체 흐름을 한 번의 호출로 처리하는 [`createAndRegisterLaunch`](/ko/smart-contracts/genesis/sdk/api-client)를 사용하세요:
{% code-tabs-imported from="genesis/api_easy_mode" frameworks="umi" filename="createAndRegisterLaunch" /%}
-전체 SDK 문서와 세 가지 통합 모드에 대한 자세한 내용은 [API 클라이언트](/smart-contracts/genesis/sdk/api-client)를 참조하세요.
+전체 SDK 문서와 세 가지 통합 모드에 대한 자세한 내용은 [API 클라이언트](/ko/smart-contracts/genesis/sdk/api-client)를 참조하세요.
diff --git a/src/pages/ko/api/fund-agent.md b/src/pages/ko/api/fund-agent.md
new file mode 100644
index 00000000..6813d78a
--- /dev/null
+++ b/src/pages/ko/api/fund-agent.md
@@ -0,0 +1,99 @@
+---
+title: 에이전트 자금 지원
+metaTitle: Metaplex API - 에이전트 지갑 자금 지원 | REST API | Metaplex
+description: 등록된 에이전트의 지갑에 자금을 보내는 SOL 전송 트랜잭션을 온체인 메모와 함께 빌드합니다.
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - fund agent
+ - agent wallet
+ - SOL transfer
+about:
+ - API endpoint
+ - Agent finance
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+송신자 지갑에서 에이전트의 서명자 PDA 지갑으로 SOL을 전송하는 트랜잭션을 온체인 메모와 함께 빌드합니다. 누구나 어떤 에이전트에든 자금을 보낼 수 있습니다. {% .lead %}
+
+## Summary
+
+- 에이전트의 지갑 PDA로 SOL 전송 (에이전트 주소로부터 서버 측에서 확인됨)
+- 출처 표시를 위해 송신자가 서명하는 필수 메모 명령어 첨부
+- 송신자가 서명하고 제출할 미서명 트랜잭션 반환
+
+## Quick Reference
+
+| 항목 | 값 |
+|------|-------|
+| **메서드** | `POST` |
+| **경로** | `/agents/{address}/fund` |
+| **인증** | 불필요 |
+| **응답** | 직렬화된 트랜잭션 |
+
+## 엔드포인트
+
+```
+POST /agents/{address}/fund
+```
+
+## 경로 파라미터
+
+| 파라미터 | 타입 | 필수 | 설명 |
+|-----------|------|----------|-------------|
+| `address` | `string` | 예 | 에이전트의 Core 애셋 민트 주소 (base58) |
+
+## 요청 본문
+
+| 필드 | 타입 | 필수 | 설명 |
+|-------|------|----------|-------------|
+| `sender` | `string` | 예 | SOL을 보내는 지갑 (base58). 트랜잭션에 서명합니다. |
+| `amount` | `number` | 예 | SOL 단위 금액. 양수여야 합니다. |
+| `memo` | `string` | 예 | 온체인에 기록되는 메모, 1–256자. |
+| `network` | `string` | 아니요 | `solana-mainnet`(기본값) 또는 `solana-devnet` |
+
+## 요청 예시
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN/fund" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "sender": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "amount": 0.5,
+ "memo": "Operating budget for July"
+ }'
+```
+
+## 응답
+
+```json
+{
+ "success": true,
+ "tx": "",
+ "blockhash": {
+ "blockhash": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
+ "lastValidBlockHeight": 123456789
+ }
+}
+```
+
+송신자가 트랜잭션을 역직렬화하고 서명한 후 제출합니다. [서명 및 제출](/ko/api/mint-agent#signing-and-submitting)을 참조하세요.
+
+## 오류
+
+| 상태 | 본문 | 의미 |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "Invalid input data" }` | 본문이 유효성 검사에 실패했습니다 (잘못된 공개 키, 양수가 아닌 금액, 메모 누락). |
+| `404` | `{ "success": false, "error": "Agent not found" }` | 지정한 네트워크의 해당 주소에 등록된 에이전트가 없습니다. |
+| `500` | `{ "success": false, "error": "Failed to prepare fund transaction" }` | 서버 오류. |
+
+## Notes
+
+- 전송 대상은 Core 애셋 주소가 아닌 에이전트의 **지갑 PDA**입니다. API가 자동으로 확인해 줍니다.
+- 자금을 다시 빼내려면 에이전트 소유자가 [에이전트 출금](/ko/api/withdraw-agent)를 사용합니다.
+- 에이전트 지갑의 개념에 대해서는 [에이전트 파이낸스](/ko/agents/agent-finance)를 참조하세요.
diff --git a/src/pages/ko/api/get-agent-card.md b/src/pages/ko/api/get-agent-card.md
new file mode 100644
index 00000000..8c211450
--- /dev/null
+++ b/src/pages/ko/api/get-agent-card.md
@@ -0,0 +1,109 @@
+---
+title: AgentCard 조회
+metaTitle: Metaplex API - A2A AgentCard 조회 | REST API | Metaplex
+description: 등록된 에이전트의 호스팅된 A2A AgentCard를 조회합니다. ETag 캐싱을 지원하는 표준 준수 AgentCard JSON입니다.
+method: GET
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - A2A
+ - AgentCard
+ - agent discovery
+about:
+ - API endpoint
+ - A2A protocol
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+등록된 에이전트의 호스팅된 A2A AgentCard를 조회합니다. A2A 클라이언트가 직접 사용할 수 있도록 원시 AgentCard JSON(A2A 스펙 §4.4)을 반환합니다. {% .lead %}
+
+## Summary
+
+Metaplex는 앱을 통해 등록된 에이전트를 위해 A2A AgentCard를 호스팅합니다. EIP-8004 소비자는 에이전트의 `services[]` 항목을 통해 이 엔드포인트를 발견합니다.
+
+- 저장된 그대로의 AgentCard 반환 — 응답 엔벨로프 없음
+- `ETag` / `If-None-Match`를 통한 조건부 요청 지원 (`304 Not Modified`)
+- 에이전트에 호스팅된 카드가 없으면 `404` 반환
+
+## Quick Reference
+
+| 항목 | 값 |
+|------|-------|
+| **메서드** | `GET` |
+| **경로** | `/agents/{address}/agent-card.json` |
+| **인증** | 불필요 |
+| **응답** | A2A AgentCard JSON |
+| **캐싱** | `max-age=60, stale-while-revalidate=600`, ETag |
+
+## 엔드포인트
+
+```
+GET /agents/{address}/agent-card.json
+```
+
+## 경로 파라미터
+
+| 파라미터 | 타입 | 필수 | 설명 |
+|-----------|------|----------|-------------|
+| `address` | `string` | 예 | 에이전트의 Core 애셋 민트 주소 (base58) |
+
+## 쿼리 파라미터
+
+| 파라미터 | 타입 | 필수 | 설명 |
+|-----------|------|----------|-------------|
+| `network` | `string` | 아니요 | 조회할 네트워크. 기본값: `solana-mainnet`. 데브넷의 경우 `solana-devnet`을 사용하세요. |
+
+## 요청 예시
+
+```bash
+curl "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN/agent-card.json"
+```
+
+## 응답
+
+[A2A AgentCard](https://a2a-protocol.org/latest/specification/#44-agentcard) 객체:
+
+```json
+{
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "url": "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json",
+ "version": "1.0.0",
+ "capabilities": { "streaming": false },
+ "skills": [
+ {
+ "id": "trade",
+ "name": "Trade tokens",
+ "description": "Executes token swaps on Solana.",
+ "tags": ["solana", "trading"]
+ }
+ ],
+ "defaultInputModes": ["text/plain"],
+ "defaultOutputModes": ["text/plain"]
+}
+```
+
+## 조건부 요청
+
+응답에는 `ETag` 헤더가 포함됩니다. 이를 `If-None-Match`로 다시 보내면 카드가 변경되지 않았을 때 `304 Not Modified`를 받습니다:
+
+```bash
+curl -H 'If-None-Match: "m3k9x1"' \
+ "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json"
+```
+
+## 오류
+
+| 상태 | 의미 |
+|--------|---------|
+| `304` | 제공한 ETag 이후 카드가 변경되지 않았습니다. |
+| `404` | 에이전트를 찾을 수 없거나 에이전트에 호스팅된 AgentCard가 없습니다. |
+
+## Notes
+
+- 이 엔드포인트는 의도적으로 `success` 엔벨로프를 **사용하지 않습니다**. A2A 디스커버리 규약에 따라 본문 자체가 AgentCard입니다.
+- 카드는 민팅 시 에이전트 생성자가 직접 작성하거나 에이전트의 등록 메타데이터로부터 합성됩니다.
diff --git a/src/pages/ko/api/get-agent.md b/src/pages/ko/api/get-agent.md
new file mode 100644
index 00000000..8ee8e332
--- /dev/null
+++ b/src/pages/ko/api/get-agent.md
@@ -0,0 +1,183 @@
+---
+title: 에이전트 조회
+metaTitle: Metaplex API - 에이전트 조회 | REST API | Metaplex
+description: Core 애셋 주소로 등록된 단일 에이전트를 조회합니다. EIP-8004 등록 데이터, 생성한 토큰, 기본 에이전트 토큰을 포함합니다.
+method: GET
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - agent detail
+ - EIP-8004
+ - agent registry
+about:
+ - API endpoint
+ - Agent data
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+ - Rust
+---
+
+Core 애셋 주소로 등록된 단일 에이전트를 조회합니다. 에이전트의 아이덴티티, EIP-8004 등록 메타데이터, 에이전트가 생성한 토큰, 기본 에이전트 토큰을 반환합니다. {% .lead %}
+
+## Summary
+
+온체인 아이덴티티와 인덱싱된 메타데이터를 결합하여 한 에이전트의 전체 상세 정보를 조회합니다.
+
+- 에이전트 아이덴티티: 이름, 설명, 이미지, 소유자, 권한(authority), 서명자 PDA 지갑
+- EIP-8004 등록 JSON 필드가 응답에 병합됨
+- `tokens` — 에이전트가 런칭한 모든 토큰을 `BaseToken` 객체로 반환
+- `agentTokenInfo` — 런칭 목록 또는 온체인 메타데이터에서 확인된 에이전트의 기본 토큰
+
+## Quick Reference
+
+| 항목 | 값 |
+|------|-------|
+| **메서드** | `GET` |
+| **경로** | `/agents/{address}` |
+| **인증** | 불필요 |
+| **응답** | 에이전트 상세 객체 |
+| **페이지네이션** | 없음 |
+
+## 엔드포인트
+
+```
+GET /agents/{address}
+```
+
+## 경로 파라미터
+
+| 파라미터 | 타입 | 필수 | 설명 |
+|-----------|------|----------|-------------|
+| `address` | `string` | 예 | 에이전트의 Core 애셋 민트 주소 (base58) |
+
+## 쿼리 파라미터
+
+| 파라미터 | 타입 | 필수 | 설명 |
+|-----------|------|----------|-------------|
+| `network` | `string` | 아니요 | 조회할 네트워크. 기본값: `solana-mainnet`. 데브넷의 경우 `solana-devnet`을 사용하세요. |
+
+## 요청 예시
+
+```bash
+curl "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+```
+
+## 응답
+
+```json
+{
+ "success": true,
+ "address": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN",
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "image": "https://example.com/agent.png",
+ "walletAddress": "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
+ "owner": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "authority": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "agentMetadataUri": "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json",
+ "agentToken": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "a2aCard": { "…": "A2A AgentCard (spec §4.4), when hosted" },
+ "verifiedAt": null,
+ "tokens": [
+ {
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "name": "Agent Token",
+ "symbol": "AGT",
+ "image": "https://example.com/token.png",
+ "description": "The agent's primary token."
+ }
+ ],
+ "agentTokenInfo": {
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "name": "Agent Token",
+ "symbol": "AGT",
+ "image": "https://example.com/token.png",
+ "description": "The agent's primary token."
+ }
+}
+```
+
+## 응답 타입
+
+### TypeScript
+
+```ts
+interface AgentResponse {
+ success: true;
+ /** Core asset address (the NFT representing this agent) */
+ address: string;
+ name: string;
+ description: string;
+ image?: string;
+ /** The agent's signer PDA wallet (derived from the Core asset) */
+ walletAddress: string;
+ /** Owner of the Core asset */
+ owner: string;
+ /** Update authority of the Core asset */
+ authority?: string;
+ agentMetadataUri?: string;
+ /** Primary token mint from on-chain agent identity */
+ agentToken?: string;
+ /** Hosted A2A AgentCard (spec §4.4) — only when hosted by Metaplex */
+ a2aCard?: Record | null;
+ /** When an admin verified this agent */
+ verifiedAt?: string | null;
+ /** Tokens the agent has launched */
+ tokens: BaseToken[];
+ /** The agent's primary token, when set */
+ agentTokenInfo?: BaseToken;
+ // …plus any additional EIP-8004 registration fields
+}
+
+interface BaseToken {
+ address: string;
+ name: string;
+ symbol: string;
+ image: string;
+ description: string;
+}
+```
+
+## 사용 예시
+
+### TypeScript
+
+```ts
+const response = await fetch(
+ "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+);
+const agent: AgentResponse = await response.json();
+if (agent.success) {
+ console.log(agent.name, agent.walletAddress);
+ console.log(`${agent.tokens.length} tokens launched`);
+}
+```
+
+### Rust
+
+```rust
+let agent = reqwest::get(
+ "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+)
+.await?
+.json::()
+.await?;
+
+println!("{} — wallet {}", agent["name"], agent["walletAddress"]);
+```
+
+## 오류
+
+| 상태 | 본문 | 의미 |
+|--------|------|---------|
+| `404` | `{ "success": false, "error": "Agent not found" }` | 지정한 네트워크의 해당 주소에 등록된 에이전트가 없습니다. |
+| `500` | `{ "success": false, "error": "Failed to fetch agent" }` | 서버 오류. |
+
+## Notes
+
+- 응답은 온체인 에이전트 아이덴티티와 에이전트의 EIP-8004 등록 JSON을 병합하므로, 문서화된 필드 외에 추가 메타데이터 필드가 나타날 수 있습니다.
+- 에이전트 토큰이 에이전트 자신의 런칭 목록에 없는 경우 `agentTokenInfo`는 온체인 토큰 메타데이터로 대체됩니다.
+- 응답은 캐싱됩니다. 최근의 온체인 변경 사항이 반영되기까지 짧은 지연이 있을 수 있습니다.
diff --git a/src/pages/ko/smart-contracts/genesis/integration-apis/get-launch.md b/src/pages/ko/api/get-launch.md
similarity index 88%
rename from src/pages/ko/smart-contracts/genesis/integration-apis/get-launch.md
rename to src/pages/ko/api/get-launch.md
index f6080fc6..c980860d 100644
--- a/src/pages/ko/smart-contracts/genesis/integration-apis/get-launch.md
+++ b/src/pages/ko/api/get-launch.md
@@ -1,6 +1,6 @@
---
-title: Get Launch
-metaTitle: Genesis - Get Launch | REST API | Metaplex
+title: 런칭 조회
+metaTitle: Metaplex API - 런칭 조회 | REST API | Metaplex
description: Genesis 주소로 런칭 데이터를 조회합니다. 런칭 정보, 토큰 메타데이터, 소셜 링크를 반환합니다.
method: GET
created: '01-15-2025'
@@ -51,8 +51,8 @@ GET /launches/{genesis_pubkey}
| 파라미터 | 타입 | 필수 | 설명 |
|-----------|------|----------|-------------|
-| `genesis_pubkey` | `string` | Yes | genesis 계정 공개 키 |
-| `network` | `string` | No | 조회할 네트워크. 기본값: `solana-mainnet`. 데브넷의 경우 `solana-devnet`을 사용하세요. |
+| `genesis_pubkey` | `string` | 예 | genesis 계정 공개 키 |
+| `network` | `string` | 아니요 | 조회할 네트워크. 기본값: `solana-mainnet`. 데브넷의 경우 `solana-devnet`을 사용하세요. |
## 요청 예시
@@ -97,7 +97,7 @@ curl https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaS
## 응답 타입
-`Launch`, `BaseToken`, `Socials` 정의는 [공유 타입](/smart-contracts/genesis/integration-apis#shared-types)을 참조하세요.
+`Launch`, `BaseToken`, `Socials` 정의는 [공유 타입](/ko/api#shared-types)을 참조하세요.
### TypeScript
@@ -157,6 +157,6 @@ println!("{}", response.data.base_token.name); // "My Token"
## Notes
-- Genesis 공개 키를 찾으려면 인덱싱 또는 `getProgramAccounts`가 필요합니다. 토큰 민트만 있는 경우 [토큰별 런치 조회](/smart-contracts/genesis/integration-apis/get-launches-by-token) 엔드포인트를 사용하세요.
+- Genesis 공개 키를 찾으려면 인덱싱 또는 `getProgramAccounts`가 필요합니다. 토큰 민트만 있는 경우 [토큰별 런치 조회](/ko/api/get-launches-by-token) 엔드포인트를 사용하세요.
- Genesis 주소를 찾을 수 없거나 유효한 런치가 없는 경우 `404`를 반환합니다.
- `mechanic` 필드는 할당 메커니즘(예: `launchpoolV2`, `presaleV2`)을 나타냅니다. `type` 필드는 기본 런치 메커니즘(`launchpool` 또는 `presale`)을 나타냅니다.
diff --git a/src/pages/ko/smart-contracts/genesis/integration-apis/get-launches-by-token.md b/src/pages/ko/api/get-launches-by-token.md
similarity index 90%
rename from src/pages/ko/smart-contracts/genesis/integration-apis/get-launches-by-token.md
rename to src/pages/ko/api/get-launches-by-token.md
index fd78ea83..6ddfd03f 100644
--- a/src/pages/ko/smart-contracts/genesis/integration-apis/get-launches-by-token.md
+++ b/src/pages/ko/api/get-launches-by-token.md
@@ -1,6 +1,6 @@
---
-title: Get Launches by Token
-metaTitle: Genesis - Get Launches by Token | REST API | Metaplex
+title: 토큰별 런칭 조회
+metaTitle: Metaplex API - 토큰별 런칭 조회 | REST API | Metaplex
description: 토큰 민트 주소와 관련된 모든 런칭을 조회합니다. 런칭 정보, 토큰 메타데이터, 소셜 링크를 반환합니다.
method: GET
created: '01-15-2025'
@@ -51,8 +51,8 @@ GET /tokens/{mint}
| 파라미터 | 타입 | 필수 | 설명 |
|-----------|------|----------|-------------|
-| `mint` | `string` | Yes | 토큰 민트 공개 키 |
-| `network` | `string` | No | 조회할 네트워크. 기본값: `solana-mainnet`. 데브넷의 경우 `solana-devnet`을 사용하세요. |
+| `mint` | `string` | 예 | 토큰 민트 공개 키 |
+| `network` | `string` | 아니요 | 조회할 네트워크. 기본값: `solana-mainnet`. 데브넷의 경우 `solana-devnet`을 사용하세요. |
## 요청 예시
@@ -99,7 +99,7 @@ curl https://api.metaplex.com/v1/tokens/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyT
## 응답 타입
-`Launch`, `BaseToken`, `Socials` 정의는 [공유 타입](/smart-contracts/genesis/integration-apis#shared-types)을 참조하세요.
+`Launch`, `BaseToken`, `Socials` 정의는 [공유 타입](/ko/api#shared-types)을 참조하세요.
### TypeScript
diff --git a/src/pages/ko/smart-contracts/genesis/integration-apis/get-spotlight.md b/src/pages/ko/api/get-spotlight.md
similarity index 95%
rename from src/pages/ko/smart-contracts/genesis/integration-apis/get-spotlight.md
rename to src/pages/ko/api/get-spotlight.md
index 73553be9..45d87377 100644
--- a/src/pages/ko/smart-contracts/genesis/integration-apis/get-spotlight.md
+++ b/src/pages/ko/api/get-spotlight.md
@@ -1,6 +1,6 @@
---
-title: Get Spotlight
-metaTitle: Genesis - Get Spotlight | REST API | Metaplex
+title: 스포트라이트 조회
+metaTitle: Metaplex API - 스포트라이트 런칭 조회 | REST API | Metaplex
description: "Genesis의 주요 스포트라이트 런칭을 조회합니다. 플랫폼에서 큐레이팅된 런칭을 반환합니다."
method: GET
created: '01-15-2025'
@@ -99,7 +99,7 @@ curl "https://api.metaplex.com/v1/launches?spotlight=true"
## 응답 타입
-`Launch`, `BaseToken`, `Socials` 정의는 [공유 타입](/smart-contracts/genesis/integration-apis#shared-types)을 참조하세요.
+`Launch`, `BaseToken`, `Socials` 정의는 [공유 타입](/ko/api#shared-types)을 참조하세요.
### TypeScript
diff --git a/src/pages/ko/api/index.md b/src/pages/ko/api/index.md
new file mode 100644
index 00000000..1e53f07e
--- /dev/null
+++ b/src/pages/ko/api/index.md
@@ -0,0 +1,272 @@
+---
+title: Metaplex API
+metaTitle: Metaplex API - 공개 REST API 레퍼런스 | Metaplex
+description: api.metaplex.com의 Metaplex 공개 REST API — Genesis 런칭 데이터, 런칭 생성, 에이전트 레지스트리, 에이전트 지갑 트랜잭션을 제공합니다. 인증이 필요 없습니다.
+created: '01-15-2025'
+updated: '08-01-2026'
+keywords:
+ - Metaplex API
+ - Genesis API
+ - agent registry API
+ - launch data
+ - token queries
+ - REST API
+about:
+ - API integration
+ - Data aggregation
+ - Launch information
+ - Agent registry
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+ - Rust
+---
+
+Metaplex API는 `api.metaplex.com`의 공개 REST API입니다. Genesis 런칭 데이터를 제공하고, 런칭 생성 트랜잭션을 빌드하며, Metaplex Agent Registry를 노출합니다 — 에이전트 탐색, A2A AgentCard 제공, 에이전트 지갑 트랜잭션 빌드가 가능합니다. [metaplex.com](https://www.metaplex.com) 런칭 플랫폼을 구동하는 것도 바로 이 API이며, 여기에 문서화된 엔드포인트는 사이트 자체가 사용하는 것과 동일합니다. {% .lead %}
+
+## Summary
+
+Metaplex API는 Genesis 런칭 데이터, 런칭 생성, 에이전트 레지스트리에 대한 공개 HTTP 액세스를 제공합니다 — SDK나 인증이 필요 없습니다.
+
+- Genesis 주소, 토큰 민트로 런칭을 조회하거나 모든 활성 런칭 탐색
+- 새 Genesis 런칭 생성 및 등록
+- 에이전트 레지스트리 탐색 및 검색, 에이전트별 A2A AgentCard 조회
+- 에이전트 민팅, 자금 지원(fund), 출금(withdraw) 트랜잭션 빌드
+- `https://api.metaplex.com/v1`의 공개 REST API — 인증 불필요
+- [metaplex.com](https://www.metaplex.com) 런칭 플랫폼을 구동하는 API — 통합 개발자는 플랫폼과 동일한 엔드포인트를 사용
+- `network` 쿼리 파라미터를 통해 Solana 메인넷(기본값) 및 데브넷 지원
+- 기계 판독 가능한 OpenAPI 3.1 명세: [YAML](https://api.metaplex.com/v1/openapi.yaml)(표준) / [JSON](https://api.metaplex.com/v1/openapi.json), [RFC 9727 API 카탈로그](https://api.metaplex.com/.well-known/api-catalog)를 통해 검색 가능
+
+## 기본 URL
+
+```
+https://api.metaplex.com/v1
+```
+
+## 네트워크 선택
+
+기본적으로 API는 Solana 메인넷의 데이터를 반환합니다. 데브넷 런칭을 조회하려면 `network` 쿼리 파라미터를 추가하세요:
+
+```
+?network=solana-devnet
+```
+
+**예시:**
+
+```bash
+# Mainnet (default)
+curl https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN
+
+# Devnet
+curl "https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN?network=solana-devnet"
+```
+
+## 인증
+
+인증이 필요하지 않습니다. API는 속도 제한이 있는 공개 API입니다.
+
+## 런칭 엔드포인트
+
+| 메서드 | 엔드포인트 | 설명 |
+|--------|----------|-------------|
+| `GET` | [`/launches/{genesis_pubkey}`](/ko/api/get-launch) | Genesis 주소로 런칭 데이터 조회 |
+| `GET` | [`/tokens/{mint}`](/ko/api/get-launches-by-token) | 토큰 민트의 모든 런칭 조회 |
+| `GET` | [`/launches`](/ko/api/list-launches) | 필터를 사용하여 런칭 목록 조회 |
+| `GET` | [`/launches?spotlight=true`](/ko/api/get-spotlight) | 추천 스포트라이트 런칭 조회 |
+| `POST` | [`/launches/create`](/ko/api/create-launch) | 새 런칭을 위한 온체인 트랜잭션 빌드 |
+| `POST` | [`/launches/register`](/ko/api/register) | 확인된 런칭을 목록에 등록 |
+| `POST` | [`/twitter/verify`](/ko/api/verify-twitter) | 런칭 등록을 위한 Twitter 계정 소유권 인증 |
+| `POST` | [`/creator-rewards/claim`](/ko/api/claim-creator-rewards) | 크리에이터 보상 청구 트랜잭션 빌드 |
+
+{% callout type="note" %}
+`POST` 엔드포인트(`/launches/create` 및 `/launches/register`)는 새 토큰 런칭을 생성하기 위해 함께 사용됩니다. 대부분의 사용 사례에서는 두 엔드포인트를 래핑하는 [SDK API 클라이언트](/ko/smart-contracts/genesis/sdk/api-client)가 더 간단한 인터페이스를 제공합니다. 실시간 온체인 런칭 상태는 SDK 체인 메서드 [`fetchBucketState`](/ko/smart-contracts/genesis/integration-apis/fetch-bucket-state) 및 [`fetchDepositState`](/ko/smart-contracts/genesis/integration-apis/fetch-deposit-state)로 직접 읽을 수 있습니다.
+{% /callout %}
+
+## 에이전트 엔드포인트
+
+| 메서드 | 엔드포인트 | 설명 |
+|--------|----------|-------------|
+| `GET` | [`/agents`](/ko/api/list-agents) | 등록된 에이전트 목록 및 검색 (페이지네이션) |
+| `GET` | [`/agents/{address}`](/ko/api/get-agent) | 토큰 및 메타데이터를 포함한 단일 에이전트 조회 |
+| `GET` | [`/agents/{address}/agent-card.json`](/ko/api/get-agent-card) | 호스팅된 A2A AgentCard 조회 |
+| `POST` | [`/agents/mint`](/ko/api/mint-agent) | 에이전트 민팅 + 등록 트랜잭션 빌드 |
+| `POST` | [`/agents/{address}/fund`](/ko/api/fund-agent) | 에이전트 지갑으로의 SOL 전송 빌드 |
+| `POST` | [`/agents/{address}/withdraw`](/ko/api/withdraw-agent) | 에이전트 지갑에서 출금 빌드 (소유자 전용) |
+
+단계별 안내와 함께 에이전트를 민팅하려면 [에이전트 민팅하기](/ko/agents/mint-agent)를 참조하세요.
+
+## 트랜잭션 빌드 엔드포인트
+
+트랜잭션을 빌드하는 `POST` 엔드포인트는 사용자 키를 보관하지 않으며 트랜잭션을 제출하지도 않습니다. 각 엔드포인트는 base64로 직렬화된 하나 이상의 트랜잭션과 빌드에 사용된 블록해시를 반환합니다. 애플리케이션이 이를 역직렬화하고, 사용자의 지갑으로 서명한 후 네트워크에 제출합니다.
+
+## 오류 코드
+
+| 코드 | 설명 |
+| --- | --- |
+| `400` | 잘못된 요청 - 유효하지 않은 파라미터 |
+| `403` | 해당 작업에 대한 권한 없음 (예: 소유하지 않은 에이전트에서 출금 시도) |
+| `404` | 런칭, 토큰 또는 에이전트를 찾을 수 없음 |
+| `429` | 속도 제한 초과 |
+| `500` | 내부 서버 오류 |
+
+## 응답 엔벨로프
+
+API의 발전 과정을 반영하여 두 가지 엔벨로프 규약이 사용됩니다:
+
+**런칭 읽기 엔드포인트** (`/launches*`, `/tokens/*`, `/creator-rewards/claim`)는 결과를 `data`로, 오류를 `error.message`로 래핑합니다:
+
+```json
+{ "data": { "…": "…" } }
+```
+
+```json
+{ "error": { "message": "Launch not found" } }
+```
+
+**에이전트 엔드포인트, 런칭 쓰기 엔드포인트, `/twitter/verify`**는 `success` 판별자(discriminator)를 사용합니다:
+
+```json
+{ "success": true, "…": "…" }
+```
+
+```json
+{ "success": false, "error": "Agent not found" }
+```
+
+예외는 [`/agents/{address}/agent-card.json`](/ko/api/get-agent-card)입니다. A2A 클라이언트가 직접 사용할 수 있도록 엔벨로프 없이 원시 AgentCard JSON을 반환합니다. 각 엔드포인트 페이지와 [OpenAPI 명세](https://api.metaplex.com/v1/openapi.json)에 정확한 형태가 문서화되어 있습니다.
+
+## 기계 판독 가능한 명세
+
+전체 API 계약은 OpenAPI 3.1 문서로 게시되며, API의 요청 유효성 검사기(request validator)로부터 직접 생성되므로 구현과 어긋날 수 없습니다:
+
+| 형식 | URL |
+|--------|-----|
+| YAML (표준) | `https://api.metaplex.com/v1/openapi.yaml` |
+| JSON | `https://api.metaplex.com/v1/openapi.json` |
+| 현재 버전 별칭 | `https://api.metaplex.com/openapi.json` / `openapi.yaml` |
+| RFC 9727 API 카탈로그 | `https://api.metaplex.com/.well-known/api-catalog` |
+
+명세를 Postman, Swagger UI, 코드 생성기 또는 에이전트 프레임워크로 가져오면 모든 엔드포인트에 대한 타입이 지정된 클라이언트와 호출 가능한 도구를 얻을 수 있습니다.
+
+## Notes
+
+- API에는 속도 제한이 있습니다. `429` 응답을 받으면 요청 빈도를 줄이세요.
+- 모든 날짜 필드(`startTime`, `endTime`, `graduatedAt`, `lastActivityAt`)는 ISO 8601 문자열로 반환됩니다.
+- 기본 네트워크는 `solana-mainnet`입니다. 데브넷 데이터는 `?network=solana-devnet`으로 이용 가능합니다.
+- `POST` 엔드포인트의 경우 [SDK API 클라이언트](/ko/smart-contracts/genesis/sdk/api-client)를 사용하는 것이 권장됩니다. `/launches/create`와 `/launches/register`를 래핑합니다.
+
+## 공유 타입 {% #shared-types %}
+
+### TypeScript
+
+```ts
+interface Launch {
+ launchPage: string;
+ mechanic: string;
+ genesisAddress: string;
+ spotlight: boolean;
+ startTime: string;
+ endTime: string;
+ status: 'upcoming' | 'live' | 'graduated' | 'ended';
+ heroUrl: string | null;
+ graduatedAt: string | null;
+ lastActivityAt: string;
+ type: 'launchpool' | 'presale';
+}
+
+interface BaseToken {
+ address: string;
+ name: string;
+ symbol: string;
+ image: string;
+ description: string;
+}
+
+interface Socials {
+ x?: string;
+ telegram?: string;
+ discord?: string;
+}
+
+interface ErrorResponse {
+ error: {
+ message: string;
+ };
+}
+```
+
+### Rust
+
+```rust
+use serde::{Deserialize, Serialize};
+
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Launch {
+ pub launch_page: String,
+ pub mechanic: String,
+ pub genesis_address: String,
+ pub spotlight: bool,
+ pub start_time: String,
+ pub end_time: String,
+ pub status: String,
+ pub hero_url: Option,
+ pub graduated_at: Option,
+ pub last_activity_at: String,
+ #[serde(rename = "type")]
+ pub launch_type: String,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct BaseToken {
+ pub address: String,
+ pub name: String,
+ pub symbol: String,
+ pub image: String,
+ pub description: String,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct Socials {
+ pub x: Option,
+ pub telegram: Option,
+ pub discord: Option,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct ApiError {
+ pub message: String,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct ErrorResponse {
+ pub error: ApiError,
+}
+```
+
+{% callout type="note" %}
+`Cargo.toml`에 다음 의존성을 추가하세요:
+```toml
+[dependencies]
+reqwest = { version = "0.12", features = ["json"] }
+tokio = { version = "1", features = ["full"] }
+serde = { version = "1", features = ["derive"] }
+```
+{% /callout %}
+
+## Glossary
+
+| 용어 | 정의 |
+|------|------------|
+| **Genesis Address** | 특정 런칭 캠페인을 고유하게 식별하는 PDA (Program Derived Address) |
+| **Base Token** | 민트 주소로 식별되는 런칭 대상 토큰 |
+| **Launch Page** | 사용자가 런칭에 참여할 수 있는 URL |
+| **Mechanic** | 런칭에 사용되는 할당 메커니즘 (예: `launchpoolV2`, `presaleV2`, `auction`) |
+| **Launch Type** | 런칭의 기본 메커니즘: `launchpool` 또는 `presale` |
+| **Spotlight** | 플랫폼에서 큐레이팅한 주요 런칭을 나타내는 플래그 |
+| **Status** | 런칭의 현재 상태: `upcoming`, `live`, `graduated`, `ended` |
+| **Socials** | 토큰과 관련된 소셜 미디어 링크 (X/Twitter, Telegram, Discord) |
+| **LaunchData** | `launch`, `baseToken`, `website`, `socials`를 포함하는 응답 래퍼 |
+| **TokenData** | 토큰 쿼리용 응답 래퍼. `launches` 배열과 `baseToken`, `website`, `socials` 포함 |
diff --git a/src/pages/ko/api/list-agents.md b/src/pages/ko/api/list-agents.md
new file mode 100644
index 00000000..af288d38
--- /dev/null
+++ b/src/pages/ko/api/list-agents.md
@@ -0,0 +1,188 @@
+---
+title: 에이전트 목록
+metaTitle: Metaplex API - 에이전트 목록 | REST API | Metaplex
+description: 등록된 AI 에이전트를 탐색하고 검색합니다. 메타데이터, 필터, 정렬 기능이 있는 페이지네이션된 에이전트 레코드를 반환합니다.
+method: GET
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - agent registry
+ - agent search
+ - agent listings
+about:
+ - API endpoint
+ - Agent listings
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+ - Rust
+---
+
+에이전트 레지스트리를 탐색하고 검색합니다. 인덱싱된 데이터베이스에서 페이지네이션된 에이전트 레코드를 반환하며, 기본적으로 최신 등록순으로 정렬됩니다. {% .lead %}
+
+## Summary
+
+전문(full-text) 검색, 필터, 정렬 옵션과 함께 등록된 에이전트 목록을 조회합니다. 결과는 항상 페이지네이션됩니다.
+
+- `query`로 이름 검색
+- `activeOnly`, `hasAgentToken`, `hasServices`, `spotlight`로 필터링
+- 등록 시점 기준 `latest`(기본값) 또는 `oldest` 정렬
+- 기본값은 1페이지, 페이지당 24개 결과 (`pageSize` 최대 100)
+
+## Quick Reference
+
+| 항목 | 값 |
+|------|-------|
+| **메서드** | `GET` |
+| **경로** | `/agents` |
+| **인증** | 불필요 |
+| **응답** | 페이지네이션된 `AgentRecord[]` |
+| **페이지네이션** | `page` / `pageSize` |
+
+## 엔드포인트
+
+```
+GET /agents
+```
+
+## 쿼리 파라미터
+
+| 파라미터 | 타입 | 필수 | 설명 |
+|-----------|------|----------|-------------|
+| `network` | `string` | 아니요 | 조회할 네트워크. 기본값: `solana-mainnet`. 데브넷의 경우 `solana-devnet`을 사용하세요. |
+| `page` | `number` | 아니요 | 페이지 번호, `1`부터 시작. 기본값: `1`. |
+| `pageSize` | `number` | 아니요 | 페이지당 결과 수, `1`–`100`. 기본값: `24`. |
+| `query` | `string` | 아니요 | 에이전트 이름에 대한 자유 텍스트 검색. |
+| `sort` | `string` | 아니요 | 등록 시점 기준 `latest`(기본값) 또는 `oldest`. |
+| `activeOnly` | `boolean` | 아니요 | EIP-8004 메타데이터에서 활성으로 표시된 에이전트만. |
+| `hasAgentToken` | `boolean` | 아니요 | 기본 에이전트 토큰이 설정된 에이전트만. |
+| `hasServices` | `boolean` | 아니요 | 서비스 엔드포인트를 공개한 에이전트만. |
+| `spotlight` | `boolean` | 아니요 | 디스커버 페이지에서 스포트라이트된 에이전트만. |
+
+## 요청 예시
+
+```bash
+curl "https://api.metaplex.com/v1/agents?pageSize=10&sort=latest&activeOnly=true"
+```
+
+## 응답
+
+```json
+{
+ "success": true,
+ "data": {
+ "agents": [
+ {
+ "mintAddress": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN",
+ "network": "solana-mainnet",
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "image": "https://example.com/agent.png",
+ "walletAddress": "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
+ "authority": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "agentToken": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "agentMetadataUri": "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json",
+ "metadata": { "…": "EIP-8004 registration JSON" },
+ "a2aCard": { "…": "A2A AgentCard (spec §4.4)" },
+ "isActive": true,
+ "registrationSignature": "5J8…",
+ "indexedAt": "2026-07-01T12:00:00.000Z",
+ "spotlightedAt": null,
+ "verifiedAt": null,
+ "createdAt": "2026-07-01T11:59:58.000Z",
+ "updatedAt": "2026-07-15T09:30:00.000Z"
+ }
+ ],
+ "total": 132,
+ "page": 1,
+ "pageSize": 10,
+ "totalPages": 14
+ }
+}
+```
+
+## 응답 타입
+
+### TypeScript
+
+```ts
+interface PaginatedAgentsResponse {
+ success: true;
+ data: {
+ agents: AgentRecord[];
+ total: number;
+ page: number;
+ pageSize: number;
+ totalPages: number;
+ };
+}
+
+interface AgentRecord {
+ /** Core asset mint address (the NFT representing this agent) */
+ mintAddress: string;
+ network: string;
+ name: string;
+ description: string;
+ image: string | null;
+ /** The agent's signer PDA wallet, derived from the Core asset */
+ walletAddress: string;
+ /** Update authority of the Core asset */
+ authority: string | null;
+ /** Primary token mint, set via the setAgentToken instruction */
+ agentToken: string | null;
+ agentMetadataUri: string | null;
+ /** EIP-8004 agent registration JSON */
+ metadata: Record | null;
+ /** Hosted A2A AgentCard (spec §4.4) */
+ a2aCard: Record | null;
+ isActive: boolean;
+ registrationSignature: string | null;
+ indexedAt: string | null;
+ spotlightedAt: string | null;
+ verifiedAt: string | null;
+ createdAt: string;
+ updatedAt: string;
+}
+```
+
+## 사용 예시
+
+### TypeScript
+
+```ts
+const response = await fetch(
+ "https://api.metaplex.com/v1/agents?pageSize=10&activeOnly=true"
+);
+const result: PaginatedAgentsResponse = await response.json();
+if (result.success) {
+ const { agents, total, totalPages } = result.data;
+ console.log(`${agents.length} of ${total} agents (${totalPages} pages)`);
+}
+```
+
+### Rust
+
+```rust
+let response = reqwest::get(
+ "https://api.metaplex.com/v1/agents?pageSize=10&activeOnly=true"
+)
+.await?
+.json::()
+.await?;
+
+if response["success"].as_bool() == Some(true) {
+ if let Some(agents) = response["data"]["agents"].as_array() {
+ println!("{} agents on this page", agents.len());
+ }
+} else {
+ eprintln!("API error: {}", response["error"]);
+}
+```
+
+## Notes
+
+- 결과는 실시간 온체인 스캔이 아닌 인덱싱된 데이터베이스에서 가져옵니다. 새로 민팅된 에이전트는 등록 트랜잭션이 인덱싱된 후에 나타납니다.
+- 불리언 필터는 `true`/`false` 문자열 값을 허용합니다.
+- 응답은 `success` 엔벨로프를 사용합니다. 자세한 내용은 [Agent API 개요](/ko/api)를 참조하세요.
diff --git a/src/pages/ko/smart-contracts/genesis/integration-apis/list-launches.md b/src/pages/ko/api/list-launches.md
similarity index 96%
rename from src/pages/ko/smart-contracts/genesis/integration-apis/list-launches.md
rename to src/pages/ko/api/list-launches.md
index d3f61914..d838ede6 100644
--- a/src/pages/ko/smart-contracts/genesis/integration-apis/list-launches.md
+++ b/src/pages/ko/api/list-launches.md
@@ -1,6 +1,6 @@
---
title: 런치 목록
-metaTitle: Genesis - 런치 목록 | REST API | Metaplex
+metaTitle: Metaplex API - 런치 목록 | REST API | Metaplex
description: "활성 및 예정된 Genesis 런칭 리스팅을 조회합니다. 메타데이터가 포함된 목록을 반환합니다."
method: GET
created: '01-15-2025'
@@ -102,7 +102,7 @@ curl "https://api.metaplex.com/v1/launches?status=live"
## 응답 타입
-`Launch`, `BaseToken`, `Socials` 정의는 [공유 타입](/smart-contracts/genesis/integration-apis#shared-types)을 참조하세요.
+`Launch`, `BaseToken`, `Socials` 정의는 [공유 타입](/ko/api#shared-types)을 참조하세요.
### TypeScript
diff --git a/src/pages/ko/api/mint-agent.md b/src/pages/ko/api/mint-agent.md
new file mode 100644
index 00000000..cab7376e
--- /dev/null
+++ b/src/pages/ko/api/mint-agent.md
@@ -0,0 +1,127 @@
+---
+title: 에이전트 민팅
+metaTitle: Metaplex API - 에이전트 민팅 | REST API | Metaplex
+description: 에이전트 Core 애셋을 민팅하고 온체인 아이덴티티를 등록하는 부분 서명된 트랜잭션을 빌드합니다.
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - mint agent
+ - agent registration
+ - EIP-8004
+about:
+ - API endpoint
+ - Agent minting
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+에이전트를 위한 MPL Core 애셋을 민팅하고 Agent Registry에 아이덴티티를 등록하는 트랜잭션을 한 단계로 빌드합니다. API는 에이전트 메타데이터를 오프체인에 저장하고, 지갑이 지불자(payer)로 공동 서명할 부분 서명된 트랜잭션을 반환합니다. {% .lead %}
+
+## Summary
+
+이 엔드포인트는 [에이전트 민팅하기](/ko/agents/mint-agent) 가이드의 기반이 되는 엔드포인트입니다.
+
+- 단일 트랜잭션에서 Core 애셋을 생성하고 `registerIdentity`를 호출
+- 애셋 키페어는 서버 측에서 생성되어 사전 서명되므로 응답에 최종 `assetAddress`가 포함됨
+- EIP-8004 메타데이터와 호스팅된 [A2A AgentCard](/ko/api/get-agent-card)를 저장 (직접 제공하거나 메타데이터로부터 합성)
+- 호출자의 지갑이 지불자로 서명하고 트랜잭션을 제출
+
+## Quick Reference
+
+| 항목 | 값 |
+|------|-------|
+| **메서드** | `POST` |
+| **경로** | `/agents/mint` |
+| **인증** | 불필요 |
+| **응답** | 직렬화된 트랜잭션 + `assetAddress` |
+
+## 엔드포인트
+
+```
+POST /agents/mint
+```
+
+## 요청 본문
+
+| 필드 | 타입 | 필수 | 설명 |
+|-------|------|----------|-------------|
+| `wallet` | `string` | 예 | 에이전트 비용을 지불하고 소유할 지갑 (base58) |
+| `network` | `string` | 예 | `solana-mainnet` 또는 `solana-devnet` |
+| `name` | `string` | 예 | Core 애셋의 에이전트 이름 |
+| `uri` | `string` | 예 | 애셋의 오프체인 JSON 메타데이터 URI |
+| `agentMetadata` | `object` | 예 | EIP-8004 에이전트 등록 JSON (name, description, image, services, registrations, active, …) |
+| `collectionAddress` | `string` | 아니요 | 에이전트를 민팅해 넣을 Core 컬렉션 |
+| `a2aCard` | `object` | 아니요 | 미리 작성한 A2A AgentCard. 생략 시 `agentMetadata`로부터 합성됩니다. |
+
+## 요청 예시
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/agents/mint" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "wallet": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "network": "solana-devnet",
+ "name": "Example Agent",
+ "uri": "https://example.com/agent-metadata.json",
+ "agentMetadata": {
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "active": true,
+ "services": [],
+ "registrations": []
+ }
+ }'
+```
+
+## 응답
+
+```json
+{
+ "success": true,
+ "tx": "",
+ "blockhash": {
+ "blockhash": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
+ "lastValidBlockHeight": 123456789
+ },
+ "assetAddress": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+}
+```
+
+## 서명 및 제출 {% #signing-and-submitting %}
+
+반환된 트랜잭션은 이미 애셋 키페어로 서명되어 있습니다. 지갑이 지불자로 공동 서명한 후 제출합니다:
+
+```ts
+import { base64 } from "@metaplex-foundation/umi/serializers";
+
+const res = await fetch("https://api.metaplex.com/v1/agents/mint", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify(input),
+});
+const result = await res.json();
+if (!result.success) throw new Error(result.error);
+
+const tx = umi.transactions.deserialize(base64.serialize(result.tx));
+const signed = await umi.identity.signTransaction(tx);
+await umi.rpc.sendTransaction(signed);
+```
+
+## 오류
+
+| 상태 | 본문 | 의미 |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "Invalid input data", "details": [...] }` | 요청 본문이 유효성 검사에 실패했습니다. `details`에 문제 목록이 나열됩니다. |
+| `400` | `{ "success": false, "error": "" }` | 빌드 실패 (예: 컬렉션을 찾을 수 없음). |
+| `500` | `{ "success": false, "error": "Failed to prepare mint agent" }` | 서버 오류. |
+
+## Notes
+
+- Metaplex 레지스트리 항목(`solana:101:metaplex`)이 `agentMetadata.registrations`의 맨 앞에 자동으로 추가됩니다.
+- EIP-8004 소비자가 [AgentCard 엔드포인트](/ko/api/get-agent-card)를 발견할 수 있도록 호스팅된 A2A 서비스 항목이 `services[]`에 삽입됩니다. 이미 직접 작성한 경우에는 아무 작업도 수행하지 않습니다.
+- 에이전트 레코드는 이 엔드포인트를 호출할 때 저장되지만, 서명된 트랜잭션이 확인되고 인덱싱된 후에야 [에이전트 목록](/ko/api/list-agents)에 나타납니다.
+- SDK를 사용한 단계별 안내는 [에이전트 민팅하기](/ko/agents/mint-agent)를 참조하세요.
diff --git a/src/pages/ko/smart-contracts/genesis/integration-apis/register.md b/src/pages/ko/api/register.md
similarity index 81%
rename from src/pages/ko/smart-contracts/genesis/integration-apis/register.md
rename to src/pages/ko/api/register.md
index e1319a1a..c08e8007 100644
--- a/src/pages/ko/smart-contracts/genesis/integration-apis/register.md
+++ b/src/pages/ko/api/register.md
@@ -1,6 +1,6 @@
---
title: 런칭 등록
-metaTitle: Genesis - 런칭 등록 | REST API | Metaplex
+metaTitle: Metaplex API - 런칭 등록 | REST API | Metaplex
description: 온체인 트랜잭션이 확인된 후 Genesis 런칭을 등록합니다. 온체인 상태를 검증하고 런칭 목록을 생성합니다.
method: POST
created: '01-15-2025'
@@ -19,10 +19,10 @@ programmingLanguage:
- TypeScript
---
-[런칭 생성](/smart-contracts/genesis/integration-apis/create-launch)의 온체인 트랜잭션이 확인된 후 Genesis 런칭을 등록합니다. 이 엔드포인트는 온체인 상태를 검증하고, 런칭 목록을 생성하며, 런칭 페이지 URL을 반환합니다. {% .lead %}
+[런칭 생성](/ko/api/create-launch)의 온체인 트랜잭션이 확인된 후 Genesis 런칭을 등록합니다. 이 엔드포인트는 온체인 상태를 검증하고, 런칭 목록을 생성하며, 런칭 페이지 URL을 반환합니다. {% .lead %}
{% callout type="warning" title="SDK 사용을 권장합니다" %}
-대부분의 통합자는 SDK의 [`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client)를 사용해야 합니다. 이 함수는 트랜잭션 생성, 서명, 전송, 런칭 등록을 한 번의 호출로 처리합니다. 이 엔드포인트는 SDK 없이 직접 HTTP 접근이 필요한 경우에만 사용하세요.
+대부분의 통합자는 SDK의 [`createAndRegisterLaunch`](/ko/smart-contracts/genesis/sdk/api-client)를 사용해야 합니다. 이 함수는 트랜잭션 생성, 서명, 전송, 런칭 등록을 한 번의 호출로 처리합니다. 이 엔드포인트는 SDK 없이 직접 HTTP 접근이 필요한 경우에만 사용하세요.
{% /callout %}
## 엔드포인트
@@ -127,8 +127,8 @@ curl -X POST https://api.metaplex.com/v1/launches/register \
## 권장: SDK 사용
-이 엔드포인트를 직접 호출하는 대신, 트랜잭션 생성, 서명, 전송, 등록의 전체 흐름을 한 번의 호출로 처리하는 [`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client)를 사용하세요:
+이 엔드포인트를 직접 호출하는 대신, 트랜잭션 생성, 서명, 전송, 등록의 전체 흐름을 한 번의 호출로 처리하는 [`createAndRegisterLaunch`](/ko/smart-contracts/genesis/sdk/api-client)를 사용하세요:
{% code-tabs-imported from="genesis/api_easy_mode" frameworks="umi" filename="createAndRegisterLaunch" /%}
-전체 SDK 문서와 세 가지 통합 모드에 대한 자세한 내용은 [API 클라이언트](/smart-contracts/genesis/sdk/api-client)를 참조하세요.
+전체 SDK 문서와 세 가지 통합 모드에 대한 자세한 내용은 [API 클라이언트](/ko/smart-contracts/genesis/sdk/api-client)를 참조하세요.
diff --git a/src/pages/ko/api/verify-twitter.md b/src/pages/ko/api/verify-twitter.md
new file mode 100644
index 00000000..c1e20675
--- /dev/null
+++ b/src/pages/ko/api/verify-twitter.md
@@ -0,0 +1,82 @@
+---
+title: Twitter 인증
+metaTitle: Metaplex API - Twitter 인증 | REST API | Metaplex
+description: Twitter OAuth 액세스 토큰을 런칭 등록 시 Twitter 계정 소유권을 증명하는 인증 토큰으로 교환합니다.
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Genesis API
+ - Twitter verification
+ - social verification
+ - launch registration
+about:
+ - API endpoint
+ - Social verification
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+Twitter(X) OAuth 액세스 토큰을 Twitter 계정 소유권을 증명하는 단기 유효 인증 토큰으로 교환합니다. 이 토큰을 [Register Launch](/ko/api/register)에 전달하면 런칭의 Twitter 링크가 인증됨으로 표시됩니다. {% .lead %}
+
+## Summary
+
+- 사용자가 제공한 Twitter OAuth 2.0 액세스 토큰을 X API를 통해 검증
+- 계정의 사용자 이름과 서명된 인증 토큰 반환
+- 토큰은 `POST /launches/register`의 선택적 `twitterVerificationToken` 필드를 통해 사용됨
+
+## Quick Reference
+
+| 항목 | 값 |
+|------|-------|
+| **메서드** | `POST` |
+| **경로** | `/twitter/verify` |
+| **인증** | 불필요 (Twitter 액세스 토큰이 자격 증명 역할) |
+| **응답** | 사용자 이름 + 인증 토큰 |
+
+## 엔드포인트
+
+```
+POST /twitter/verify
+```
+
+## 요청 본문
+
+| 필드 | 타입 | 필수 | 설명 |
+|-------|------|----------|-------------|
+| `accessToken` | `string` | 예 | 애플리케이션이 획득한 Twitter OAuth 2.0 사용자 액세스 토큰 (`users.read` 권한이 부여되어 있어야 함) |
+
+## 요청 예시
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/twitter/verify" \
+ -H "Content-Type: application/json" \
+ -d '{ "accessToken": "" }'
+```
+
+## 응답
+
+```json
+{
+ "success": true,
+ "username": "mytoken",
+ "token": ""
+}
+```
+
+[Register Launch](/ko/api/register)를 호출할 때 `token`을 `twitterVerificationToken`으로 전달하세요. API는 토큰의 사용자 이름을 `launch.externalLinks.twitter`의 핸들과 비교하여 일치하면 링크를 인증됨으로 표시합니다.
+
+## 오류
+
+| 상태 | 본문 | 의미 |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "accessToken is required" }` | `accessToken`이 누락되었거나 비어 있습니다. |
+| `401` | `{ "success": false, "error": "Could not verify Twitter account" }` | X API가 액세스 토큰을 거부했습니다. |
+| `502` | `{ "success": false, "error": "Could not retrieve Twitter username" }` | X API가 사용자 이름 없이 응답했습니다. |
+
+## Notes
+
+- OAuth 액세스 토큰 획득(사용자 동의 플로우)은 애플리케이션의 책임입니다. 이 엔드포인트는 토큰을 검증하고 인증 토큰을 발급하기만 합니다.
+- 인증은 선택 사항입니다. 인증 없이도 런칭은 정상적으로 등록되며, Twitter 링크가 미인증 상태로 남을 뿐입니다.
diff --git a/src/pages/ko/api/withdraw-agent.md b/src/pages/ko/api/withdraw-agent.md
new file mode 100644
index 00000000..e5bd2dc7
--- /dev/null
+++ b/src/pages/ko/api/withdraw-agent.md
@@ -0,0 +1,98 @@
+---
+title: 에이전트 출금
+metaTitle: Metaplex API - 에이전트 지갑 출금 | REST API | Metaplex
+description: 에이전트 지갑에서 소유자에게 SOL을 출금하는 트랜잭션을 빌드합니다. 소유자 전용입니다.
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - withdraw
+ - agent wallet
+ - execute
+about:
+ - API endpoint
+ - Agent finance
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+에이전트의 서명자 PDA 지갑에서 에이전트 소유자에게 SOL을 다시 전송하는 트랜잭션을 빌드합니다. 에이전트 Core 애셋의 현재 소유자만 출금할 수 있습니다. {% .lead %}
+
+## Summary
+
+- 에이전트의 지갑 PDA가 서명할 수 있도록 SOL 전송을 `execute` 명령어로 래핑
+- 트랜잭션이 빌드되기 전에 Core 애셋을 기준으로 서버 측에서 소유권 검증
+- 소유자가 서명하고 제출할 미서명 트랜잭션 반환
+
+## Quick Reference
+
+| 항목 | 값 |
+|------|-------|
+| **메서드** | `POST` |
+| **경로** | `/agents/{address}/withdraw` |
+| **인증** | 불필요 (소유권은 온체인 및 빌드 시점에 강제됨) |
+| **응답** | 직렬화된 트랜잭션 |
+
+## 엔드포인트
+
+```
+POST /agents/{address}/withdraw
+```
+
+## 경로 파라미터
+
+| 파라미터 | 타입 | 필수 | 설명 |
+|-----------|------|----------|-------------|
+| `address` | `string` | 예 | 에이전트의 Core 애셋 민트 주소 (base58) |
+
+## 요청 본문
+
+| 필드 | 타입 | 필수 | 설명 |
+|-------|------|----------|-------------|
+| `sender` | `string` | 예 | 에이전트 소유자의 지갑 (base58). SOL을 수령하고 트랜잭션에 서명합니다. |
+| `amount` | `number` | 예 | SOL 단위 금액. 양수여야 합니다. |
+| `network` | `string` | 아니요 | `solana-mainnet`(기본값) 또는 `solana-devnet` |
+
+## 요청 예시
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN/withdraw" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "sender": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "amount": 0.25
+ }'
+```
+
+## 응답
+
+```json
+{
+ "success": true,
+ "tx": "",
+ "blockhash": {
+ "blockhash": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
+ "lastValidBlockHeight": 123456789
+ }
+}
+```
+
+소유자가 트랜잭션을 역직렬화하고 서명한 후 제출합니다. [서명 및 제출](/ko/api/mint-agent#signing-and-submitting)을 참조하세요.
+
+## 오류
+
+| 상태 | 본문 | 의미 |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "Invalid input data" }` | 본문 또는 주소가 유효성 검사에 실패했습니다. |
+| `403` | `{ "success": false, "error": "Only the agent owner can withdraw funds" }` | `sender`가 에이전트의 Core 애셋을 소유하고 있지 않습니다. |
+| `404` | `{ "success": false, "error": "Agent not found" }` | 지정한 네트워크의 해당 주소에 Core 애셋이 없습니다. |
+| `500` | `{ "success": false, "error": "Failed to prepare withdraw transaction" }` | 서버 오류. |
+
+## Notes
+
+- 빌드 시점의 소유권 확인은 편의를 위한 것입니다. `execute` 명령어가 어떤 경우에도 온체인에서 소유권을 강제하므로, 위조된 요청으로는 자금을 이동할 수 없습니다.
+- 출금 대상은 항상 `sender`(소유자)입니다. 자금을 제3자에게 보낼 수 없습니다.
+- 자금을 추가하려면 [에이전트 자금 지원](/ko/api/fund-agent)를 참조하세요.
diff --git a/src/pages/ko/smart-contracts/genesis/bonding-curve-parameters.md b/src/pages/ko/smart-contracts/genesis/bonding-curve-parameters.md
new file mode 100644
index 00000000..2b8b5add
--- /dev/null
+++ b/src/pages/ko/smart-contracts/genesis/bonding-curve-parameters.md
@@ -0,0 +1,177 @@
+---
+title: 본딩 커브 — 프로토콜 파라미터
+metaTitle: Genesis 본딩 커브 프로토콜 파라미터 | Metaplex
+description: Genesis 본딩 커브의 구체적인 프로토콜 파라미터 — 토큰 공급량 기본값, 가상 리저브, 수수료 일정, 졸업 목표.
+created: '08-03-2026'
+updated: '08-05-2026'
+keywords:
+ - bonding curve
+ - protocol parameters
+ - virtual reserves
+ - fee schedule
+ - graduation
+ - genesis
+ - Metaplex
+ - token supply
+ - program ID
+about:
+ - Bonding Curve
+ - Genesis
+ - Protocol Parameters
+proficiencyLevel: Intermediate
+faqs:
+ - q: Genesis 본딩 커브 토큰의 시작 가격은 얼마인가요?
+ a: 시작 가격(SOL당 토큰 수) = (virtualTokens / 10^decimals) / (virtualSol / 10^9)입니다. virtualTokens는 원시 단위, virtualSol은 램포트 단위이므로 SOL당 토큰 수로 가격을 표시하기 전에 두 값을 모두 변환해야 합니다. 프로토콜 기본값을 사용하면 커브가 언제 열리든 고정된 시작 가격이 적용됩니다.
+ - q: 커브가 졸업할 때까지 얼마의 SOL이 모이나요?
+ a: 졸업 시점에 축적된 실제 램포트는 (k / virtualTokens) − virtualSol이며, 여기서 k = virtualSol × (virtualTokens + baseTokenAllocation)입니다. SOL로 표시하려면 10^9로 나눕니다. 실제로 이는 프로토콜 파라미터 표에 나열된 졸업 목표 SOL과 같습니다.
+ - q: 크리에이터가 가상 리저브나 토큰 공급량을 변경할 수 있나요?
+ a: 아니요. 가상 리저브, 토큰 공급량, 소수점 자릿수는 프로토콜 기본값으로 설정되며 API를 통해 런칭별로 재정의할 수 없습니다.
+ - q: 크리에이터 수수료는 0.50% 프로토콜 수수료에 포함되나요?
+ a: 아니요. 크리에이터 수수료는 별도이며 추가로 부과됩니다. 두 수수료 모두 각 스왑의 총 SOL 금액에 대해 독립적으로 계산되며 복리로 계산되지 않습니다. 스왑당 최대 총 수수료는 프로토콜 수수료 + 크리에이터 수수료입니다.
+ - q: 졸업 후에도 본딩 커브 수수료가 적용되나요?
+ a: 아니요. 졸업 후 거래는 Raydium CPMM 풀로 이동합니다. 대신 졸업 후 거래 수수료 일정이 적용됩니다 — 프로토콜 수수료 0.40%, 크리에이터 수익 0.60%, LP 수수료 0.21%, Raydium 수수료 0.04%.
+---
+
+Genesis 본딩 커브의 구체적인 프로토콜 파라미터 — Metaplex API를 통해 생성되는 모든 런칭을 정의하는 고정 수치입니다. {% .lead %}
+
+## Summary
+
+모든 Genesis 본딩 커브 런칭은 동일한 프로토콜 수준 파라미터를 공유합니다. 이 값들은 Metaplex API에 의해 설정되며 런칭별로 재정의할 수 없습니다.
+
+- **고정된 공급량 및 소수점 자릿수** — 모든 커브는 소수점 6자리의 1,000,000,000개 토큰으로 시작합니다
+- **불변의 가상 리저브** — `virtualSol`과 `virtualTokens`는 커브 생성 시 설정되며 첫 거래부터 졸업까지의 전체 가격 궤적을 정의합니다
+- **2단계 수수료 구조** — 모든 스왑에 0.50% 프로토콜 수수료와 선택적 크리에이터 수수료가 부과되며, 졸업 후에는 Raydium CPMM 풀에 별도의 수수료 일정이 적용됩니다
+- **자동 졸업** — `baseTokenBalance`가 0에 도달하면 실행되며, 수동 트리거가 필요 없습니다
+
+이 파라미터를 사용하는 AMM 가격 책정 모델은 [동작 원리](/smart-contracts/genesis/bonding-curve-theory)를 참조하세요. 원시 스왑 공식은 [고급 내부 사양](/smart-contracts/genesis/bonding-curve-internals)을 참조하세요.
+
+## 프로토콜 파라미터
+
+모든 Genesis 본딩 커브 런칭은 다음의 고정된 프로토콜 값으로 생성됩니다.
+
+| 파라미터 | 값 | 참고 |
+|-----------|-------|-------|
+| **프로그램 ID** | `GNS1S5J5AspKXgpjz6SvKL66kPaKWAhaGRhCqPRxii2B` | Solana 메인넷 |
+| **토큰 공급량** | 1,000,000,000 | 소수점 적용 전 원시 단위 |
+| **소수점 자릿수** | 6 | SPL 토큰 소수점 자릿수 |
+| **토큰 공급량 (소수점 포함)** | 1,000,000,000,000,000 | `supply × 10^decimals` |
+| **`virtualSol`** | [TBD] lamports | 가상 SOL 리저브 — 시작 가격 설정 |
+| **`virtualTokens`** | [TBD] 원시 단위 | 가상 토큰 리저브 — `virtualSol`과 페어링 |
+| **졸업 목표** | [TBD] SOL | 완전 매진 시 축적되는 실제 SOL |
+| **`baseTokenAllocation`** | 1,000,000,000,000,000 | 모든 토큰이 커브에 할당됨 |
+
+{% callout type="note" %}
+`virtualSol`과 `virtualTokens`는 커브 생성 후 불변입니다. 프로그램이 발행하는 모든 이벤트에 두 값이 포함되므로 오프체인 가격 계산 시 별도의 계정 조회가 필요하지 않습니다. [인덱싱 및 이벤트](/smart-contracts/genesis/bonding-curve-indexing)를 참조하세요.
+{% /callout %}
+
+## 수수료 일정
+
+토큰의 수명 동안 두 가지 별도의 수수료 일정이 적용됩니다. 본딩 커브가 활성 상태일 때의 일정과 Raydium으로 졸업한 후의 일정입니다.
+
+### 본딩 커브 (활성 단계)
+
+수수료는 모든 스왑의 **SOL 측**에 적용됩니다. 두 수수료 모두 총 SOL 금액에 대해 독립적으로 계산되며 복리로 계산되지 않습니다. 순 SOL 입출금액 = 총액 − 프로토콜 수수료 − 크리에이터 수수료.
+
+| 수수료 | 요율 | 수령자 |
+|-----|------|-----------|
+| **프로토콜 수수료** | 0.50% | Metaplex 수수료 지갑 — 모든 스왑마다 전송됨 |
+| **크리에이터 수수료** | 0.60% (최대) | 설정된 `creatorFeeWallet` — 버킷에 누적되며 `claimBondingCurveCreatorFeeV2`로 청구 |
+
+{% callout type="note" %}
+크리에이터 수수료는 선택 사항입니다. `creatorFeeWallet`이 설정되지 않으면 크리에이터 수수료가 부과되지 않습니다. 설정된 경우 0.60%가 프로토콜에서 정의한 최대치입니다. 첫 구매 메커니즘이 사용되는 경우 첫 구매는 두 수수료 모두 면제됩니다. [크리에이터 수수료](/smart-contracts/genesis/creator-fees)를 참조하세요.
+{% /callout %}
+
+### 졸업 후 (Raydium CPMM 풀) {% #post-graduation-raydium-cpmm-pool %}
+
+커브가 졸업하면 거래는 Raydium CPMM 풀로 이동합니다. 다른 수수료 일정이 적용됩니다:
+
+| 수수료 | 요율 | 수령자 |
+|-----|------|-----------|
+| **프로토콜 수수료** | 0.40% | Metaplex |
+| **크리에이터 수익** | 0.60% | 크리에이터 수수료 지갑 — `claimRaydiumCreatorFeeV2`로 청구 |
+| **LP 수수료** | 0.21% | 유동성 공급자 |
+| **Raydium 수수료** | 0.04% | Raydium 프로토콜 |
+
+## 가격 및 졸업 계산
+
+프로토콜 기본값을 사용하면 다음 값들은 커브 생성 시점에 완전히 결정됩니다.
+
+### 시작 가격
+
+시작 가격은 가상 리저브의 비율을 온체인 단위(원시 토큰 단위와 램포트)에서 사람이 읽는 단위(토큰과 SOL)로 변환한 값입니다.
+
+```
+startingPrice (tokens per SOL) = (virtualTokens / 10^decimals) / (virtualSol / 10^9)
+```
+
+`virtualTokens`는 원시 단위로, `virtualSol`은 램포트로 저장되므로 SOL당 토큰 수로 가격을 표시하기 전에 각각 `10^decimals`(프로토콜 기본값 기준 10^6)와 `10^9`로 나눕니다. 이는 (실제 SOL이 풀에 들어오기 전) 최초 스왑에서 구매자가 보게 되는 가격입니다.
+
+### 졸업 시 시가총액
+
+졸업 시점에는 `baseTokenBalance = 0`이며 모든 실제 토큰이 판매된 상태입니다. 축적된 실제 SOL은 졸업 목표와 같습니다. 졸업 시 완전 희석 시가총액(FDV):
+
+```
+graduationLamports = (k / virtualTokens) − virtualSol
+ where k = virtualSol × (virtualTokens + baseTokenAllocation)
+graduationSOL = graduationLamports / 10^9
+
+priceAtGraduation (lamports per raw unit) = k / virtualTokens^2
+fdvAtGraduation (SOL) = totalSupply (raw units) × priceAtGraduation / 10^9
+```
+
+### 상수 곱 불변량
+
+불변량 `k`는 커브 생성 시 고정되며 커브가 활성 상태인 동안 변하지 않습니다.
+
+```
+k = virtualSol × (virtualTokens + baseTokenAllocation)
+```
+
+`k`는 커브의 수명 동안 일정하게 유지됩니다(모든 스왑마다 올림 처리됨).
+
+## Notes
+
+- 가상 리저브는 모든 `BondingCurveSwapEvent`에 포함됩니다. 오프체인 가격 계산 시 버킷 계정을 조회하기 위한 별도의 RPC 호출이 필요하지 않습니다
+- 프로토콜 수수료율과 가상 리저브 값은 Metaplex가 설정하며 `createAndRegisterLaunch` API를 통해 런칭별로 재정의할 수 없습니다
+- 졸업은 `baseTokenBalance`를 소진시키는 스왑에서 자동으로 실행됩니다. 마지막 토큰을 소진하는 동일한 트랜잭션이 Raydium으로의 마이그레이션도 트리거합니다
+- 크리에이터 수수료는 `creatorFeeAccrued`에 누적되며(스왑마다 전송되지 않음), `creatorFeeClaimed`는 누적 청구액을 추적합니다. 두 값 모두 각 `claimBondingCurveCreatorFeeV2` 호출 시 누적 기준으로 재조정됩니다
+
+## Quick Reference
+
+| 항목 | 값 |
+|------|-------|
+| 프로그램 ID | `GNS1S5J5AspKXgpjz6SvKL66kPaKWAhaGRhCqPRxii2B` |
+| 기본 공급량 | `1,000,000,000` (10억 토큰, 소수점 6자리) |
+| `baseTokenAllocation` | `1,000,000,000,000,000` |
+| 프로토콜 스왑 수수료 | `0.50%` |
+| 크리에이터 수수료 (최대) | `0.60%` |
+| 졸업 후 프로토콜 수수료 | `0.40%` |
+| 졸업 후 LP 수수료 | `0.21%` |
+| 졸업 후 Raydium 수수료 | `0.04%` |
+| `virtualSol` | `[TBD]` |
+| `virtualTokens` | `[TBD]` |
+| 졸업 목표 | `[TBD] SOL` |
+| JS SDK | `@metaplex-foundation/genesis` |
+| 소스 | [GitHub](https://github.com/metaplex-foundation/mpl-genesis) |
+
+## FAQ
+
+### Genesis 본딩 커브 토큰의 시작 가격은 얼마인가요?
+
+SOL당 토큰 수로 나타낸 시작 가격 = `(virtualTokens / 10^decimals) / (virtualSol / 10^9)`입니다. `virtualTokens`는 원시 단위, `virtualSol`은 램포트 단위이므로 가격을 표시하기 전에 두 값을 모두 변환합니다. 이 값은 전적으로 프로토콜 기본값에 의해 결정되며, 크리에이터가 사용자 지정 시작 가격을 설정할 수 없습니다.
+
+### 커브가 졸업할 때까지 얼마의 SOL이 모이나요?
+
+완전 매진 시점에 축적된 실제 SOL은 위의 프로토콜 파라미터 표에 나열된 졸업 목표와 같습니다. 이는 상수 곱 공식에서 직접 도출됩니다: `graduationLamports = (k / virtualTokens) − virtualSol` (SOL로 표시하려면 `10^9`로 나눕니다).
+
+### 크리에이터가 가상 리저브나 토큰 공급량을 변경할 수 있나요?
+
+아니요. `virtualSol`, `virtualTokens`, 토큰 공급량, 소수점 자릿수는 Metaplex API가 설정하는 프로토콜 기본값입니다. 런칭별로 이를 재정의할 수 있는 API 파라미터는 없습니다.
+
+### 크리에이터 수수료는 0.50% 프로토콜 수수료에 포함되나요?
+
+아니요. 프로토콜 수수료(0.50%)와 크리에이터 수수료(최대 0.60%)는 독립적입니다. 두 수수료 모두 스왑의 총 SOL 금액에 대해 계산되어 별도로 차감되며, 복리로 계산되지 않습니다.
+
+### 졸업 후에도 본딩 커브 수수료가 적용되나요?
+
+아니요. 졸업 후에는 본딩 커브 계정이 닫히고 거래가 Raydium CPMM 풀로 이동합니다. 졸업 후 거래 수수료 일정이 적용됩니다 — 위의 [졸업 후 수수료 일정](#post-graduation-raydium-cpmm-pool) 표를 참조하세요.
diff --git a/src/pages/ko/smart-contracts/genesis/creator-fees.md b/src/pages/ko/smart-contracts/genesis/creator-fees.md
index ea31d932..f237c10c 100644
--- a/src/pages/ko/smart-contracts/genesis/creator-fees.md
+++ b/src/pages/ko/smart-contracts/genesis/creator-fees.md
@@ -108,7 +108,7 @@ faqs:
| `collectRaydiumCpmmFeesWithCreatorFeeV2` | 졸업 후 — LP 수수료 수확 | Genesis 계정, Raydium 풀 PDA, Raydium 버킷 PDA | LP 수수료가 Raydium 풀에서 Genesis 버킷으로 이동 |
| `claimRaydiumCreatorFeeV2` | 졸업 후 — 버킷 잔액 청구 | Genesis 계정, Raydium 버킷 PDA, 베이스/쿼트 민트, 창작자 수수료 지갑 | 버킷 잔액이 창작자 지갑으로 전송 |
-**바로 가기:** [런칭 시 구성](#런칭-시-창작자-수수료-구성) · [지갑으로 지정](#특정-지갑으로-창작자-수수료-지정) · [에이전트 PDA](#에이전트-런칭--자동-pda-라우팅) · [첫 번째 구매와 결합](#창작자-수수료와-첫-번째-구매-결합) · [누적 확인(커브)](#누적-창작자-수수료-확인) · [API로 청구](#metaplex-api로-청구-권장) · [보상 없음 처리](#보상-없음-사례-처리) · [커브 중 청구](#활성-커브-중-창작자-수수료-청구) · [Raydium 수수료 확인](#누적-raydium-창작자-수수료-확인) · [Raydium에서 수집](#단계-1--raydium-cpmm-풀에서-수수료-수집) · [졸업 후 청구](#단계-2--창작자-지갑으로-수수료-청구)
+**바로 가기:** [런칭 시 구성](#런칭-시-창작자-수수료-구성) · [지갑으로 지정](#특정-지갑으로-창작자-수수료-지정) · [에이전트 PDA](#에이전트-런칭--자동-pda-라우팅) · [첫 번째 구매와 결합](#창작자-수수료와-첫-번째-구매-결합) · [누적 확인(커브)](#누적-창작자-수수료-확인) · [API로 청구](#metaplex-api로-청구-권장) · [보상 없음 처리](#handling-the-no-rewards-case) · [커브 중 청구](#활성-커브-중-창작자-수수료-청구) · [Raydium 수수료 확인](#누적-raydium-창작자-수수료-확인) · [Raydium에서 수집](#단계-1--raydium-cpmm-풀에서-수수료-수집) · [졸업 후 청구](#단계-2--창작자-지갑으로-수수료-청구)
1. `createAndRegisterLaunch`를 호출할 때 `launch` 객체에서 `creatorFeeWallet`을 설정합니다
2. 런칭 후 `bucket.creatorFeeAccrued`를 읽어 누적된 수수료를 모니터링합니다
@@ -209,9 +209,9 @@ console.log('Creator fee wallet:', creatorFeeWallet?.toString() ?? 'none configu
| `network` | `SvmNetwork` | 아니요 | `'solana-mainnet'` (기본값) 또는 `'solana-devnet'`. |
| `payer` | `PublicKey \| string` | 아니요 | 반환된 트랜잭션의 수수료와 임대료를 부담하는 지갑. 기본값은 `wallet`. 창작자 수수료 지갑이 SOL을 보유하고 있지 않을 때 사용 — 예: 에이전트 PDA 또는 콜드 지갑. |
-SDK는 역직렬화된 Umi `Transaction`과 트랜잭션이 작성된 블록해시를 반환합니다. 항상 반환된 블록해시에 대해 각 트랜잭션을 확인하세요 — 새로 가져온 것으로 대체하지 마세요. 그렇지 않으면 확인이 경합합니다. 전체 HTTP 스키마는 [Claim Creator Rewards (API)](/smart-contracts/genesis/integration-apis/claim-creator-rewards)를 참조하세요.
+SDK는 역직렬화된 Umi `Transaction`과 트랜잭션이 작성된 블록해시를 반환합니다. 항상 반환된 블록해시에 대해 각 트랜잭션을 확인하세요 — 새로 가져온 블록해시로 대체하지 마세요 — 트랜잭션 확인 과정에서 경쟁 상태(race condition)가 발생할 수 있습니다. 전체 HTTP 스키마는 [Claim Creator Rewards (API)](/ko/api/claim-creator-rewards)를 참조하세요.
-### 보상 없음 사례 처리
+### 보상 없음 사례 처리 {% #handling-the-no-rewards-case %}
지갑에 청구할 것이 없을 때 엔드포인트는 HTTP `400`과 `{ "error": { "message": "No rewards available to claim" } }`를 반환합니다 — 빈 `transactions` 배열로 성공 응답을 반환하지 **않습니다**. SDK는 이를 `GenesisApiError`로 표면화하므로 호출자는 오류를 잡고 `err.message`(또는 `err.statusCode === 400`)로 분기해야 합니다. 오류를 그대로 전파시키지 마세요.
@@ -461,7 +461,7 @@ console.log('Raydium creator fees collected and claimed to:', creatorFeeWallet.t
### 청구할 보상이 없는 경우 어떻게 되나요?
-`claimCreatorRewards` 엔드포인트는 HTTP `400`과 `{"error":{"message":"No rewards available to claim"}}`를 반환합니다. SDK는 이를 `GenesisApiError`로 표면화합니다. 이를 예외적인 결과가 아니라 — `err.message`(또는 `err.statusCode === 400`)를 확인하고 오류를 전파시키지 말고 분기하세요. [보상 없음 사례 처리](#보상-없음-사례-처리)를 참조하세요.
+`claimCreatorRewards` 엔드포인트는 HTTP `400`과 `{"error":{"message":"No rewards available to claim"}}`를 반환합니다. SDK는 이를 `GenesisApiError`로 표면화합니다. 이를 예외적인 결과가 아니라 — `err.message`(또는 `err.statusCode === 400`)를 확인하고 오류를 전파시키지 말고 분기하세요. [보상 없음 사례 처리](#handling-the-no-rewards-case)를 참조하세요.
### 선택적인 `payer` 필드는 무엇을 위한 것인가요?
diff --git a/src/pages/ko/smart-contracts/genesis/getting-started.md b/src/pages/ko/smart-contracts/genesis/getting-started.md
index 44794839..22d22a59 100644
--- a/src/pages/ko/smart-contracts/genesis/getting-started.md
+++ b/src/pages/ko/smart-contracts/genesis/getting-started.md
@@ -257,7 +257,7 @@ Finalize 후, Bucket 시간 조건에 따라 출시가 활성화됩니다. 현
| **Genesis Account** | 출시를 조정하고 토큰을 보관하는 PDA |
| **Inflow Bucket** | 사용자로부터 예치금을 수집하는 Bucket |
| **Outflow Bucket** | 종료 동작을 통해 자금을 받는 Bucket |
-| **런칭 타입** | 런칭의 기본 메커니즘: `launchpool` 또는 `presale`. 생성 후 백엔드 크랭크에 의해 온체인으로 소급 설정. [SDK](/ko/smart-contracts/genesis/sdk/javascript#genesis-account) 또는 [REST API](/ko/smart-contracts/genesis/integration-apis)로 조회 가능 |
+| **런칭 타입** | 런칭의 기본 메커니즘: `launchpool` 또는 `presale`. 생성 후 백엔드 크랭크에 의해 온체인으로 소급 설정. [SDK](/ko/smart-contracts/genesis/sdk/javascript#genesis-account) 또는 [REST API](/ko/api)로 조회 가능 |
| **Finalize** | 구성을 잠그고 출시를 활성화 |
| **Time Condition** | Bucket 단계를 제어하는 Unix 타임스탬프 |
| **End Behavior** | 예치 기간 종료 시 자동화된 동작 |
diff --git a/src/pages/ko/smart-contracts/genesis/index.md b/src/pages/ko/smart-contracts/genesis/index.md
index 93c46682..5ecce530 100644
--- a/src/pages/ko/smart-contracts/genesis/index.md
+++ b/src/pages/ko/smart-contracts/genesis/index.md
@@ -89,7 +89,7 @@ Genesis는 조합할 수 있는 세 가지 메커니즘을 지원합니다:
| **Launch Pool** (`launchpool`) | 예치 기간을 통한 가격 발견과 비례 배분 | 공정한 출시, 커뮤니티 토큰, 크라우드세일 |
| **Presale** (`presale`) | 사전에 정해진 비율의 고정 가격 토큰 판매 | 토큰 세일, 알려진 밸류에이션 |
-런칭 타입은 생성 후 백엔드 크랭크에 의해 [Genesis Account](#genesis-account)에 온체인으로 기록됩니다. 트레이더와 애그리게이터는 [JavaScript SDK](/ko/smart-contracts/genesis/sdk/javascript#genesis-account)(`fetchGenesisAccountV2`) 또는 [Integration APIs](/ko/smart-contracts/genesis/integration-apis)(REST 응답의 `type` 필드)를 통해 프로그래밍 방식으로 타입을 조회할 수 있습니다.
+런칭 타입은 생성 후 백엔드 크랭크에 의해 [Genesis Account](#genesis-account)에 온체인으로 기록됩니다. 트레이더와 애그리게이터는 [JavaScript SDK](/ko/smart-contracts/genesis/sdk/javascript#genesis-account)(`fetchGenesisAccountV2`) 또는 [Metaplex API](/ko/api)(REST 응답의 `type` 필드)를 통해 프로그래밍 방식으로 타입을 조회할 수 있습니다.
### Genesis Account
diff --git a/src/pages/ko/smart-contracts/genesis/integration-apis/index.md b/src/pages/ko/smart-contracts/genesis/integration-apis/index.md
deleted file mode 100644
index 12930138..00000000
--- a/src/pages/ko/smart-contracts/genesis/integration-apis/index.md
+++ /dev/null
@@ -1,219 +0,0 @@
----
-title: Integration API
-metaTitle: Genesis - Integration API | 런칭 데이터 | Metaplex
-description: HTTP REST 엔드포인트와 온체인 SDK 메서드를 통해 Genesis 런칭 데이터에 접근하세요. 인증이 필요 없는 공개 API입니다.
-created: '01-15-2025'
-updated: '02-26-2026'
-keywords:
- - Genesis API
- - integration API
- - launch data
- - token queries
- - on-chain state
-about:
- - API integration
- - Data aggregation
- - Launch information
-proficiencyLevel: Intermediate
-programmingLanguage:
- - JavaScript
- - TypeScript
- - Rust
----
-
-Genesis Integration API를 사용하면 애그리게이터와 애플리케이션이 Genesis 토큰 런칭의 런칭 데이터를 조회할 수 있습니다. REST 엔드포인트를 통해 메타데이터에 접근하거나 SDK로 실시간 온체인 상태를 가져올 수 있습니다. {% .lead %}
-
-## Summary
-
-Genesis 통합 API는 Solana의 Genesis 토큰 런치 데이터에 대한 읽기 전용 액세스를 제공합니다.
-
-- Genesis 주소, 토큰 민트 또는 모든 활성 런치를 검색 가능
-- `https://api.metaplex.com/v1`의 공개 REST API — 인증 불필요
-- 런치 메타데이터, 토큰 정보, 웹사이트, 소셜 링크 반환
-- `network` 쿼리 파라미터를 통해 Solana 메인넷(기본값) 및 데브넷 지원
-
-## 기본 URL
-
-```
-https://api.metaplex.com/v1
-```
-
-## 네트워크 선택
-
-기본적으로 API는 Solana 메인넷의 데이터를 반환합니다. 데브넷 런칭을 조회하려면 `network` 쿼리 파라미터를 추가하세요:
-
-```
-?network=solana-devnet
-```
-
-**예시:**
-
-```bash
-# Mainnet (default)
-curl https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN
-
-# Devnet
-curl "https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN?network=solana-devnet"
-```
-
-## 인증
-
-인증이 필요하지 않습니다. API는 속도 제한이 있는 공개 API입니다.
-
-## 사용 가능한 엔드포인트
-
-| 메서드 | 엔드포인트 | 설명 |
-|--------|------------|------|
-| `GET` | [`/launches/{genesis_pubkey}`](/smart-contracts/genesis/integration-apis/get-launch) | Genesis 주소로 런칭 데이터 조회 |
-| `GET` | [`/tokens/{mint}`](/smart-contracts/genesis/integration-apis/get-launches-by-token) | 토큰 민트의 모든 런칭 조회 |
-| `GET` | [`/launches`](/smart-contracts/genesis/integration-apis/list-launches) | 필터를 사용하여 런칭 목록 조회 |
-| `GET` | [`/launches?spotlight=true`](/smart-contracts/genesis/integration-apis/get-spotlight) | 추천 스포트라이트 런칭 조회 |
-| `POST` | [`/launches/create`](/smart-contracts/genesis/integration-apis/create-launch) | 새 런칭을 위한 온체인 트랜잭션 빌드 |
-| `POST` | [`/launches/register`](/smart-contracts/genesis/integration-apis/register) | 확인된 런칭을 목록에 등록 |
-| `CHAIN` | [`fetchBucketState`](/smart-contracts/genesis/integration-apis/fetch-bucket-state) | 온체인에서 버킷 상태 가져오기 |
-| `CHAIN` | [`fetchDepositState`](/smart-contracts/genesis/integration-apis/fetch-deposit-state) | 온체인에서 예치 상태 가져오기 |
-
-{% callout type="note" %}
-`POST` 엔드포인트(`/launches/create` 및 `/launches/register`)는 새 토큰 런칭을 생성하기 위해 함께 사용됩니다. 대부분의 사용 사례에서는 두 엔드포인트를 래핑하는 [SDK API 클라이언트](/smart-contracts/genesis/sdk/api-client)가 더 간단한 인터페이스를 제공합니다.
-{% /callout %}
-
-## 오류 코드
-
-| 코드 | 설명 |
-| --- | --- |
-| `400` | 잘못된 요청 - 유효하지 않은 파라미터 |
-| `404` | 런칭 또는 토큰을 찾을 수 없음 |
-| `429` | 속도 제한 초과 |
-| `500` | 내부 서버 오류 |
-
-오류 응답 형식:
-
-```json
-{
- "error": {
- "message": "Launch not found"
- }
-}
-```
-
-## Notes
-
-- API에는 속도 제한이 있습니다. `429` 응답을 받으면 요청 빈도를 줄이세요.
-- 모든 날짜 필드(`startTime`, `endTime`, `graduatedAt`, `lastActivityAt`)는 ISO 8601 문자열로 반환됩니다.
-- 기본 네트워크는 `solana-mainnet`입니다. 데브넷 데이터는 `?network=solana-devnet`으로 이용 가능합니다.
-- `POST` 엔드포인트의 경우 [SDK API 클라이언트](/smart-contracts/genesis/sdk/api-client)를 사용하는 것이 권장됩니다. `/launches/create`와 `/launches/register`를 래핑합니다.
-
-## 공유 타입
-
-### TypeScript
-
-```ts
-interface Launch {
- launchPage: string;
- mechanic: string;
- genesisAddress: string;
- spotlight: boolean;
- startTime: string;
- endTime: string;
- status: 'upcoming' | 'live' | 'graduated' | 'ended';
- heroUrl: string | null;
- graduatedAt: string | null;
- lastActivityAt: string;
- type: 'launchpool' | 'presale';
-}
-
-interface BaseToken {
- address: string;
- name: string;
- symbol: string;
- image: string;
- description: string;
-}
-
-interface Socials {
- x?: string;
- telegram?: string;
- discord?: string;
-}
-
-interface ErrorResponse {
- error: {
- message: string;
- };
-}
-```
-
-### Rust
-
-```rust
-use serde::{Deserialize, Serialize};
-
-#[derive(Debug, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct Launch {
- pub launch_page: String,
- pub mechanic: String,
- pub genesis_address: String,
- pub spotlight: bool,
- pub start_time: String,
- pub end_time: String,
- pub status: String,
- pub hero_url: Option,
- pub graduated_at: Option,
- pub last_activity_at: String,
- #[serde(rename = "type")]
- pub launch_type: String,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct BaseToken {
- pub address: String,
- pub name: String,
- pub symbol: String,
- pub image: String,
- pub description: String,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct Socials {
- pub x: Option,
- pub telegram: Option,
- pub discord: Option,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct ApiError {
- pub message: String,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct ErrorResponse {
- pub error: ApiError,
-}
-```
-
-{% callout type="note" %}
-`Cargo.toml`에 다음 의존성을 추가하세요:
-```toml
-[dependencies]
-reqwest = { version = "0.12", features = ["json"] }
-tokio = { version = "1", features = ["full"] }
-serde = { version = "1", features = ["derive"] }
-```
-{% /callout %}
-
-## Glossary
-
-| 용어 | 정의 |
-|------|------------|
-| **Genesis Address** | 특정 런치 캠페인을 고유하게 식별하는 PDA (Program Derived Address) |
-| **Base Token** | 민트 주소로 식별되는 런치 대상 토큰 |
-| **Launch Page** | 사용자가 런치에 참여할 수 있는 URL |
-| **Mechanic** | 런치에 사용되는 할당 메커니즘 (예: `launchpoolV2`, `presaleV2`, `auction`) |
-| **Launch Type** | 런치의 기본 메커니즘: `launchpool` 또는 `presale` |
-| **Spotlight** | 플랫폼에서 큐레이팅한 주요 런치를 나타내는 플래그 |
-| **Status** | 런치의 현재 상태: `upcoming`, `live`, `graduated`, `ended` |
-| **Socials** | 토큰과 관련된 소셜 미디어 링크 (X/Twitter, Telegram, Discord) |
-| **LaunchData** | `launch`, `baseToken`, `website`, `socials`를 포함하는 응답 래퍼 |
-| **TokenData** | 토큰 쿼리용 응답 래퍼. `launches` 배열과 `baseToken`, `website`, `socials` 포함 |
diff --git a/src/pages/ko/smart-contracts/genesis/launch-pool.md b/src/pages/ko/smart-contracts/genesis/launch-pool.md
index 62d2458f..42dfeef9 100644
--- a/src/pages/ko/smart-contracts/genesis/launch-pool.md
+++ b/src/pages/ko/smart-contracts/genesis/launch-pool.md
@@ -467,4 +467,4 @@ Launch Pool은 비례 배분과 함께 예치금을 기반으로 유기적으로
- [Presale](/ko/smart-contracts/genesis/presale) - 고정 가격 토큰 판매
- [Uniform Price Auction](/ko/smart-contracts/genesis/uniform-price-auction) - 입찰 기반 토큰 오퍼링
- [토큰 출시하기](/ko/tokens/launch-token) - 엔드투엔드 토큰 출시 가이드
-- [Integration APIs](/ko/smart-contracts/genesis/integration-apis) - API를 통한 런치 및 토큰 세일 데이터 조회
+- [Metaplex API](/ko/api) - API를 통한 런치 및 토큰 세일 데이터 조회
diff --git a/src/pages/ko/smart-contracts/genesis/sdk/javascript.md b/src/pages/ko/smart-contracts/genesis/sdk/javascript.md
index 9a14b224..73d0735e 100644
--- a/src/pages/ko/smart-contracts/genesis/sdk/javascript.md
+++ b/src/pages/ko/smart-contracts/genesis/sdk/javascript.md
@@ -322,7 +322,7 @@ if (account2.data.launchType === LaunchType.LaunchPoolV1) {
**Genesis 계정 필드:** `authority`, `baseMint`, `quoteMint`, `totalSupplyBaseToken`, `totalAllocatedSupplyBaseToken`, `totalProceedsQuoteToken`, `fundingMode`, `launchType`, `bucketCount`, `finalized`
-### GPA 빌더 — 런칭 타입으로 조회
+### GPA 빌더 — 런칭 타입으로 조회 {% #gpa-builder-query-by-launch-type %}
`getGenesisAccountV2GpaBuilder()`를 사용하여 온체인 필드로 필터링된 모든 Genesis 계정을 조회합니다. Solana의 바이트 수준 필터를 사용한 `getProgramAccounts` RPC 메서드로 효율적인 검색을 수행합니다.
@@ -389,7 +389,7 @@ enum LaunchType {
}
```
-[Integration APIs](/ko/smart-contracts/genesis/integration-apis)에서는 문자열(`'launchpool'`)로 반환되지만, 온체인 SDK에서는 위의 숫자 열거형을 사용합니다.
+[Metaplex API](/ko/api)에서는 문자열(`'launchpool'`)로 반환되지만, 온체인 SDK에서는 위의 숫자 열거형을 사용합니다.
### GenesisAccountV2
@@ -472,7 +472,7 @@ Umi는 Solana를 위한 Metaplex의 JavaScript 프레임워크입니다. 트랜
`fetch`는 계정이 존재하지 않으면 오류를 던집니다. `safeFetch`는 대신 `null`을 반환하며, 계정 존재 여부를 확인하는 데 유용합니다.
### 토큰의 런칭 타입을 어떻게 조회하나요?
-토큰의 민트 주소를 사용하여 `fetchGenesisAccountV2FromSeeds()`로 `GenesisAccountV2` 계정을 조회합니다. `launchType` 필드는 `0`(미초기화) 또는 `3`(LaunchPoolV1)을 반환합니다. 특정 타입의 모든 런칭을 조회하려면 [GPA 빌더](#gpa-빌더--런칭-타입으로-조회)를 사용하세요. 또는 [Integration APIs](/ko/smart-contracts/genesis/integration-apis)가 REST 응답에서 문자열로 런칭 타입을 반환합니다.
+토큰의 민트 주소를 사용하여 `fetchGenesisAccountV2FromSeeds()`로 `GenesisAccountV2` 계정을 조회합니다. `launchType` 필드는 `0`(미초기화) 또는 `3`(LaunchPoolV1)을 반환합니다. 특정 타입의 모든 런칭을 조회하려면 [GPA 빌더](#gpa-builder-query-by-launch-type)를 사용하세요. 또는 [Metaplex API](/ko/api)가 REST 응답에서 문자열로 런칭 타입을 반환합니다.
### 트랜잭션 오류를 어떻게 처리하나요?
`sendAndConfirm` 호출을 try/catch 블록으로 감싸세요. 구체적인 실패 원인은 오류 메시지를 확인하세요.
diff --git a/src/pages/ko/tokens/launch-token.md b/src/pages/ko/tokens/launch-token.md
index 17392daa..a74c7e48 100644
--- a/src/pages/ko/tokens/launch-token.md
+++ b/src/pages/ko/tokens/launch-token.md
@@ -431,4 +431,4 @@ main().catch(console.error);
- [Genesis 개요](/ko/smart-contracts/genesis) - 솔라나 토큰 런치패드에 대해 더 알아보기
- [Launch Pool](/ko/smart-contracts/genesis/launch-pool) - 상세한 공정한 출시 문서
- [프리세일](/ko/smart-contracts/genesis/presale) - 고정 가격으로 토큰 프리세일 실행
-- [Integration APIs](/ko/smart-contracts/genesis/integration-apis) - API를 통해 출시 및 토큰 세일 데이터 쿼리
+- [Metaplex API](/ko/api) - API를 통해 출시 및 토큰 세일 데이터 쿼리
diff --git a/src/pages/zh/smart-contracts/genesis/integration-apis/claim-creator-rewards.md b/src/pages/zh/api/claim-creator-rewards.md
similarity index 84%
rename from src/pages/zh/smart-contracts/genesis/integration-apis/claim-creator-rewards.md
rename to src/pages/zh/api/claim-creator-rewards.md
index de9d73ac..6d5cbd7c 100644
--- a/src/pages/zh/smart-contracts/genesis/integration-apis/claim-creator-rewards.md
+++ b/src/pages/zh/api/claim-creator-rewards.md
@@ -1,6 +1,6 @@
---
title: 认领创作者奖励
-metaTitle: Genesis - 认领创作者奖励 | REST API | Metaplex
+metaTitle: Metaplex API - 认领创作者奖励 | REST API | Metaplex
description: 通过单次 API 调用,跨钱包的所有 Genesis 联合曲线和 Raydium bucket 认领累积的创作者奖励。返回准备好签名的 Solana 交易。
method: POST
created: '04-23-2026'
@@ -27,7 +27,7 @@ programmingLanguage:
通过单次调用,跨钱包有资格获得的每个 Genesis 联合曲线和 Raydium CPMM bucket 认领累积的创作者奖励。该端点返回钱包(或指定的 `payer`)必须签名并提交的 base64 编码 Solana 交易列表。{% .lead %}
{% callout type="note" title="可用 SDK 包装器" %}
-大多数集成方应使用 Genesis JavaScript SDK 中的 [`claimCreatorRewards`](/smart-contracts/genesis/sdk/api-client#claim-creator-rewards) — 它处理交易反序列化、错误解析,并直接接入 [Umi 身份](/dev-tools/umi/getting-started#connecting-a-wallet)进行签名。仅在无法依赖 SDK 时才直接调用此端点。
+大多数集成方应使用 Genesis JavaScript SDK 中的 [`claimCreatorRewards`](/zh/smart-contracts/genesis/sdk/api-client#claim-creator-rewards) — 它处理交易反序列化、错误解析,并直接接入 [Umi 身份](/zh/dev-tools/umi/getting-started#connecting-a-wallet)进行签名。仅在无法依赖 SDK 时才直接调用此端点。
{% /callout %}
## Summary
@@ -37,7 +37,7 @@ programmingLanguage:
- **聚合** — 一次请求即可跨所有符合条件的 bucket 认领;每个 bucket 返回一个交易
- **签名** — 响应是钱包(或可选的 `payer`)必须签名并提交的 base64 编码的 Solana 交易
- **错误** — 当没有累积时返回 HTTP `400` `"No rewards available to claim"`;调用方必须基于错误分支,而不是空数组
-- **SDK 包装器** — [`claimCreatorRewards`](/smart-contracts/genesis/sdk/api-client#claim-creator-rewards) 处理反序列化、类型化错误和 Umi 签名
+- **SDK 包装器** — [`claimCreatorRewards`](/zh/smart-contracts/genesis/sdk/api-client#claim-creator-rewards) 处理反序列化、类型化错误和 Umi 签名
## 端点
@@ -105,20 +105,20 @@ API 为每个被认领的 bucket 返回一个交易——通常是两个(联
| `✖ Invalid wallet address` | `400` | `wallet` 不是有效的 base58 Solana 公钥。 |
{% callout type="warning" title="无奖励是 400,而非空数组" %}
-当钱包没有可认领内容时,端点返回 HTTP `400` 和消息 `No rewards available to claim`——它**不会**返回带 `transactions: []` 的 `200`。调用方必须捕获错误(或检查 `response.status` 和 `body.error.message`),并将此情况视为"无事可做",而非失败。SDK 将其呈现为类型化的 `GenesisApiError`;请参阅[错误处理](/smart-contracts/genesis/creator-fees#处理无奖励情况)。
+当钱包没有可认领内容时,端点返回 HTTP `400` 和消息 `No rewards available to claim`——它**不会**返回带 `transactions: []` 的 `200`。调用方必须捕获错误(或检查 `response.status` 和 `body.error.message`),并将此情况视为"无事可做",而非失败。SDK 将其呈现为类型化的 `GenesisApiError`;请参阅[错误处理](/zh/smart-contracts/genesis/creator-fees#handling-the-no-rewards-case)。
{% /callout %}
## 注意事项
- 端点在 bucket 级别是幂等的——成功认领后立即再次调用,将返回 `No rewards available to claim`,直到累积新费用为止。
- 返回的交易使用 `data.blockhash` 中的区块哈希。如果确认时间超过 ~60–90 秒,区块哈希将过期,必须重新调用以获取一组新的交易。
-- 创作者奖励在每次兑换(联合曲线)和 LP 交易活动(Raydium CPMM)中累积——此端点聚合两者。有关基础累积机制和按 bucket 的获取助手,请参阅 [Genesis 联合曲线创作者费](/smart-contracts/genesis/creator-fees)。
+- 创作者奖励在每次兑换(联合曲线)和 LP 交易活动(Raydium CPMM)中累积——此端点聚合两者。有关基础累积机制和按 bucket 的获取助手,请参阅 [Genesis 联合曲线创作者费](/zh/smart-contracts/genesis/creator-fees)。
- 创作者费钱包在 bucket 创建时通过 `creatorFeeWallet` 设置,曲线上线后无法更改。
## 推荐:使用 SDK
-不要直接调用此端点,而是使用 `@metaplex-foundation/genesis` 中的 [`claimCreatorRewards`](/smart-contracts/genesis/sdk/api-client#claim-creator-rewards):
+不要直接调用此端点,而是使用 `@metaplex-foundation/genesis` 中的 [`claimCreatorRewards`](/zh/smart-contracts/genesis/sdk/api-client#claim-creator-rewards):
{% code-tabs-imported from="genesis/api_claim_creator_rewards" frameworks="umi" filename="claimCreatorRewards" /%}
-完整的 SDK 表面请参阅 [API 客户端](/smart-contracts/genesis/sdk/api-client)页面,端到端认领指南请参阅[创作者费](/smart-contracts/genesis/creator-fees)。
+完整的 SDK 表面请参阅 [API 客户端](/zh/smart-contracts/genesis/sdk/api-client)页面,端到端认领指南请参阅[创作者费](/zh/smart-contracts/genesis/creator-fees)。
diff --git a/src/pages/zh/smart-contracts/genesis/integration-apis/create-launch.md b/src/pages/zh/api/create-launch.md
similarity index 83%
rename from src/pages/zh/smart-contracts/genesis/integration-apis/create-launch.md
rename to src/pages/zh/api/create-launch.md
index ed097d3f..bc9ad33d 100644
--- a/src/pages/zh/smart-contracts/genesis/integration-apis/create-launch.md
+++ b/src/pages/zh/api/create-launch.md
@@ -1,6 +1,6 @@
---
title: 创建发行
-metaTitle: Genesis - 创建发行 | REST API | Metaplex
+metaTitle: Metaplex API - 创建发行 | REST API | Metaplex
description: 为新的 Genesis 代币发行构建链上交易。返回可供签名和发送的未签名交易。
method: POST
created: '02-19-2026'
@@ -19,14 +19,14 @@ programmingLanguage:
- TypeScript
---
-为新的 Genesis 代币发行构建链上交易。返回未签名交易,需在调用[注册发行](/smart-contracts/genesis/integration-apis/register)之前完成签名和发送。{% .lead %}
+为新的 Genesis 代币发行构建链上交易。返回未签名交易,需在调用[注册发行](/zh/api/register)之前完成签名和发送。{% .lead %}
{% callout type="warning" title="建议使用 SDK" %}
-大多数集成方应使用 SDK 中的 [`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client),它在一次调用中处理创建交易、签名、发送和注册发行的全部流程。只有在需要不依赖 SDK 直接进行 HTTP 访问时才需要使用此端点。
+大多数集成方应使用 SDK 中的 [`createAndRegisterLaunch`](/zh/smart-contracts/genesis/sdk/api-client),它在一次调用中处理创建交易、签名、发送和注册发行的全部流程。只有在需要不依赖 SDK 直接进行 HTTP 访问时才需要使用此端点。
{% /callout %}
{% callout type="note" %}
-我们建议使用 Create API(或 SDK)以编程方式构建发行,因为 [metaplex.com](https://www.metaplex.com) 尚未支持 Genesis 程序的全部功能。通过 API 创建的主网发行在[注册](/smart-contracts/genesis/integration-apis/register)后将显示在 metaplex.com 上。
+我们建议使用 Create API(或 SDK)以编程方式构建发行,因为 [metaplex.com](https://www.metaplex.com) 尚未支持 Genesis 程序的全部功能。通过 API 创建的主网发行在[注册](/zh/api/register)后将显示在 metaplex.com 上。
{% /callout %}
## 端点
@@ -73,7 +73,7 @@ POST /v1/launches/create
- **`presaleV2`** — 固定价格预售
{% callout type="note" %}
-SDK 的 `buildCreateLaunchPayload` 函数负责将简化的 `CreateLaunchInput` 转换为此完整载荷格式。请参阅 [API 客户端](/smart-contracts/genesis/sdk/api-client)文档。
+SDK 的 `buildCreateLaunchPayload` 函数负责将简化的 `CreateLaunchInput` 转换为此完整载荷格式。请参阅 [API 客户端](/zh/smart-contracts/genesis/sdk/api-client)文档。
{% /callout %}
## 请求示例 — Launch Pool 类型
@@ -150,8 +150,8 @@ curl -X POST https://api.metaplex.com/v1/launches/create \
## 推荐:使用 SDK
-我们建议使用 [`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client) 而非直接调用此端点,该函数在一次调用中处理整个流程——创建交易、签名、发送和注册:
+我们建议使用 [`createAndRegisterLaunch`](/zh/smart-contracts/genesis/sdk/api-client) 而非直接调用此端点,该函数在一次调用中处理整个流程——创建交易、签名、发送和注册:
{% code-tabs-imported from="genesis/api_easy_mode" frameworks="umi" filename="createAndRegisterLaunch" /%}
-请参阅 [API 客户端](/smart-contracts/genesis/sdk/api-client)获取完整的 SDK 文档,包括全部三种集成模式。
+请参阅 [API 客户端](/zh/smart-contracts/genesis/sdk/api-client)获取完整的 SDK 文档,包括全部三种集成模式。
diff --git a/src/pages/zh/api/fund-agent.md b/src/pages/zh/api/fund-agent.md
new file mode 100644
index 00000000..e3e4ade8
--- /dev/null
+++ b/src/pages/zh/api/fund-agent.md
@@ -0,0 +1,99 @@
+---
+title: 为 Agent 注资
+metaTitle: Metaplex API - 为 Agent 钱包注资 | REST API | Metaplex
+description: 构建一个带有链上备注的 SOL 转账交易,为已注册 Agent 的钱包注资。
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - fund agent
+ - agent wallet
+ - SOL transfer
+about:
+ - API endpoint
+ - Agent finance
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+构建一个交易,将 SOL 从发送方钱包转账到 Agent 的签名者 PDA 钱包,并附带链上备注。任何人都可以为任何 Agent 注资。 {% .lead %}
+
+## Summary
+
+- 将 SOL 转账到 Agent 的钱包 PDA(由服务端根据 Agent 地址解析)
+- 附加一条必需的、由发送方签名的备注指令,用于归因
+- 返回未签名的交易,由发送方签名并提交
+
+## Quick Reference
+
+| 项目 | 值 |
+|------|-------|
+| **方法** | `POST` |
+| **路径** | `/agents/{address}/fund` |
+| **认证** | 无需 |
+| **响应** | 序列化交易 |
+
+## 端点
+
+```
+POST /agents/{address}/fund
+```
+
+## 路径参数
+
+| 参数 | 类型 | 必填 | 描述 |
+|-----------|------|----------|-------------|
+| `address` | `string` | 是 | Agent 的 Core 资产铸造地址(base58)。 |
+
+## 请求体
+
+| 字段 | 类型 | 必填 | 描述 |
+|-------|------|----------|-------------|
+| `sender` | `string` | 是 | 发送 SOL 的钱包(base58)。为交易签名。 |
+| `amount` | `number` | 是 | 以 SOL 为单位的金额。必须为正数。 |
+| `memo` | `string` | 是 | 记录在链上的备注,1–256 个字符。 |
+| `network` | `string` | 否 | `solana-mainnet`(默认)或 `solana-devnet`。 |
+
+## 请求示例
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN/fund" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "sender": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "amount": 0.5,
+ "memo": "Operating budget for July"
+ }'
+```
+
+## 响应
+
+```json
+{
+ "success": true,
+ "tx": "",
+ "blockhash": {
+ "blockhash": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
+ "lastValidBlockHeight": 123456789
+ }
+}
+```
+
+发送方对交易进行反序列化、签名并提交 — 请参阅[签名和提交](/zh/api/mint-agent#signing-and-submitting)。
+
+## 错误
+
+| 状态码 | 响应体 | 含义 |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "Invalid input data" }` | 请求体验证失败(公钥无效、金额非正数、缺少备注)。 |
+| `404` | `{ "success": false, "error": "Agent not found" }` | 在指定网络的该地址上没有注册的 Agent。 |
+| `500` | `{ "success": false, "error": "Failed to prepare fund transaction" }` | 服务器错误。 |
+
+## Notes
+
+- 转账目标是 Agent 的**钱包 PDA**,而非 Core 资产地址 — API 会为您解析。
+- 要将资金转出,Agent 所有者需使用[提款](/zh/api/withdraw-agent)。
+- 有关 Agent 钱包背后的概念,请参阅 [Agent 金融](/zh/agents/agent-finance)。
diff --git a/src/pages/zh/api/get-agent-card.md b/src/pages/zh/api/get-agent-card.md
new file mode 100644
index 00000000..33a85610
--- /dev/null
+++ b/src/pages/zh/api/get-agent-card.md
@@ -0,0 +1,109 @@
+---
+title: 获取 AgentCard
+metaTitle: Metaplex API - 获取 A2A AgentCard | REST API | Metaplex
+description: 获取已注册 Agent 的托管 A2A AgentCard。符合标准的 AgentCard JSON,支持 ETag 缓存。
+method: GET
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - A2A
+ - AgentCard
+ - agent discovery
+about:
+ - API endpoint
+ - A2A protocol
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+获取已注册 Agent 的托管 A2A AgentCard。返回原始 AgentCard JSON(A2A 规范 §4.4),A2A 客户端可以直接使用。 {% .lead %}
+
+## Summary
+
+Metaplex 为通过应用注册的 Agent 托管 A2A AgentCard。EIP-8004 消费者通过 Agent 的 `services[]` 条目发现此端点。
+
+- 按存储原样返回 AgentCard — 无响应信封
+- 支持通过 `ETag` / `If-None-Match` 进行条件请求(`304 Not Modified`)
+- 当 Agent 没有托管的卡片时返回 `404`
+
+## Quick Reference
+
+| 项目 | 值 |
+|------|-------|
+| **方法** | `GET` |
+| **路径** | `/agents/{address}/agent-card.json` |
+| **认证** | 无需 |
+| **响应** | A2A AgentCard JSON |
+| **缓存** | `max-age=60, stale-while-revalidate=600`,ETag |
+
+## 端点
+
+```
+GET /agents/{address}/agent-card.json
+```
+
+## 路径参数
+
+| 参数 | 类型 | 必填 | 描述 |
+|-----------|------|----------|-------------|
+| `address` | `string` | 是 | Agent 的 Core 资产铸造地址(base58)。 |
+
+## 查询参数
+
+| 参数 | 类型 | 必填 | 描述 |
+|-----------|------|----------|-------------|
+| `network` | `string` | 否 | 查询的网络。默认:`solana-mainnet`。使用 `solana-devnet` 查询 devnet。 |
+
+## 请求示例
+
+```bash
+curl "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN/agent-card.json"
+```
+
+## 响应
+
+一个 [A2A AgentCard](https://a2a-protocol.org/latest/specification/#44-agentcard) 对象:
+
+```json
+{
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "url": "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json",
+ "version": "1.0.0",
+ "capabilities": { "streaming": false },
+ "skills": [
+ {
+ "id": "trade",
+ "name": "Trade tokens",
+ "description": "Executes token swaps on Solana.",
+ "tags": ["solana", "trading"]
+ }
+ ],
+ "defaultInputModes": ["text/plain"],
+ "defaultOutputModes": ["text/plain"]
+}
+```
+
+## 条件请求
+
+响应包含 `ETag` 头。将其作为 `If-None-Match` 发回,当卡片未变化时会收到 `304 Not Modified`:
+
+```bash
+curl -H 'If-None-Match: "m3k9x1"' \
+ "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json"
+```
+
+## 错误
+
+| 状态码 | 含义 |
+|--------|---------|
+| `304` | 自您提供的 ETag 以来卡片未变化。 |
+| `404` | 未找到 Agent,或该 Agent 没有托管的 AgentCard。 |
+
+## Notes
+
+- 此端点有意**不使用** `success` 信封 — 响应体就是 AgentCard 本身,遵循 A2A 发现约定。
+- 卡片要么由 Agent 创建者在铸造时编写,要么从 Agent 的注册元数据合成。
diff --git a/src/pages/zh/api/get-agent.md b/src/pages/zh/api/get-agent.md
new file mode 100644
index 00000000..54f5e2df
--- /dev/null
+++ b/src/pages/zh/api/get-agent.md
@@ -0,0 +1,183 @@
+---
+title: 获取 Agent
+metaTitle: Metaplex API - 获取 Agent | REST API | Metaplex
+description: 通过 Core 资产地址获取单个已注册的 Agent,包括其 EIP-8004 注册数据、已创建的代币和主 Agent 代币。
+method: GET
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - agent detail
+ - EIP-8004
+ - agent registry
+about:
+ - API endpoint
+ - Agent data
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+ - Rust
+---
+
+通过 Core 资产地址获取单个已注册的 Agent。返回 Agent 的身份信息、EIP-8004 注册元数据、其已创建的代币及其主 Agent 代币。 {% .lead %}
+
+## Summary
+
+检索单个 Agent 的完整详情,将链上身份与已索引的元数据结合。
+
+- Agent 身份:名称、描述、图像、所有者、权限方和签名者 PDA 钱包
+- EIP-8004 注册 JSON 字段合并到响应中
+- `tokens` — Agent 发行过的每个代币,以 `BaseToken` 对象表示
+- `agentTokenInfo` — Agent 的主代币,从发行记录或链上元数据解析
+
+## Quick Reference
+
+| 项目 | 值 |
+|------|-------|
+| **方法** | `GET` |
+| **路径** | `/agents/{address}` |
+| **认证** | 无需 |
+| **响应** | Agent 详情对象 |
+| **分页** | 无 |
+
+## 端点
+
+```
+GET /agents/{address}
+```
+
+## 路径参数
+
+| 参数 | 类型 | 必填 | 描述 |
+|-----------|------|----------|-------------|
+| `address` | `string` | 是 | Agent 的 Core 资产铸造地址(base58)。 |
+
+## 查询参数
+
+| 参数 | 类型 | 必填 | 描述 |
+|-----------|------|----------|-------------|
+| `network` | `string` | 否 | 查询的网络。默认:`solana-mainnet`。使用 `solana-devnet` 查询 devnet。 |
+
+## 请求示例
+
+```bash
+curl "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+```
+
+## 响应
+
+```json
+{
+ "success": true,
+ "address": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN",
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "image": "https://example.com/agent.png",
+ "walletAddress": "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
+ "owner": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "authority": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "agentMetadataUri": "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json",
+ "agentToken": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "a2aCard": { "…": "A2A AgentCard (spec §4.4), when hosted" },
+ "verifiedAt": null,
+ "tokens": [
+ {
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "name": "Agent Token",
+ "symbol": "AGT",
+ "image": "https://example.com/token.png",
+ "description": "The agent's primary token."
+ }
+ ],
+ "agentTokenInfo": {
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "name": "Agent Token",
+ "symbol": "AGT",
+ "image": "https://example.com/token.png",
+ "description": "The agent's primary token."
+ }
+}
+```
+
+## 响应类型
+
+### TypeScript
+
+```ts
+interface AgentResponse {
+ success: true;
+ /** Core asset address (the NFT representing this agent) */
+ address: string;
+ name: string;
+ description: string;
+ image?: string;
+ /** The agent's signer PDA wallet (derived from the Core asset) */
+ walletAddress: string;
+ /** Owner of the Core asset */
+ owner: string;
+ /** Update authority of the Core asset */
+ authority?: string;
+ agentMetadataUri?: string;
+ /** Primary token mint from on-chain agent identity */
+ agentToken?: string;
+ /** Hosted A2A AgentCard (spec §4.4) — only when hosted by Metaplex */
+ a2aCard?: Record | null;
+ /** When an admin verified this agent */
+ verifiedAt?: string | null;
+ /** Tokens the agent has launched */
+ tokens: BaseToken[];
+ /** The agent's primary token, when set */
+ agentTokenInfo?: BaseToken;
+ // …plus any additional EIP-8004 registration fields
+}
+
+interface BaseToken {
+ address: string;
+ name: string;
+ symbol: string;
+ image: string;
+ description: string;
+}
+```
+
+## 使用示例
+
+### TypeScript
+
+```ts
+const response = await fetch(
+ "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+);
+const agent: AgentResponse = await response.json();
+if (agent.success) {
+ console.log(agent.name, agent.walletAddress);
+ console.log(`${agent.tokens.length} tokens launched`);
+}
+```
+
+### Rust
+
+```rust
+let agent = reqwest::get(
+ "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+)
+.await?
+.json::()
+.await?;
+
+println!("{} — wallet {}", agent["name"], agent["walletAddress"]);
+```
+
+## 错误
+
+| 状态码 | 响应体 | 含义 |
+|--------|------|---------|
+| `404` | `{ "success": false, "error": "Agent not found" }` | 在指定网络的该地址上没有注册的 Agent。 |
+| `500` | `{ "success": false, "error": "Failed to fetch agent" }` | 服务器错误。 |
+
+## Notes
+
+- 响应将链上 Agent 身份与该 Agent 的 EIP-8004 注册 JSON 合并,因此除已记录的字段外,还可能出现额外的元数据字段。
+- 当 Agent 代币不在该 Agent 自己的发行之中时,`agentTokenInfo` 会回退到链上代币元数据。
+- 响应会被缓存;最近的链上变更可能需要短暂延迟后才会显示。
diff --git a/src/pages/zh/smart-contracts/genesis/integration-apis/get-launch.md b/src/pages/zh/api/get-launch.md
similarity index 93%
rename from src/pages/zh/smart-contracts/genesis/integration-apis/get-launch.md
rename to src/pages/zh/api/get-launch.md
index 351f3149..7f5a68df 100644
--- a/src/pages/zh/smart-contracts/genesis/integration-apis/get-launch.md
+++ b/src/pages/zh/api/get-launch.md
@@ -1,6 +1,6 @@
---
-title: Get Launch
-metaTitle: Genesis - Get Launch | REST API | Metaplex
+title: 获取发行
+metaTitle: Metaplex API - 获取发行 | REST API | Metaplex
description: 通过Genesis地址获取发行数据。返回发行信息、代币元数据和社交链接。
method: GET
created: '01-15-2025'
@@ -97,7 +97,7 @@ curl https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaS
## 响应类型
-请参阅[共享类型](/smart-contracts/genesis/integration-apis#shared-types)了解 `Launch`、`BaseToken` 和 `Socials` 的定义。
+请参阅[共享类型](/zh/api#shared-types)了解 `Launch`、`BaseToken` 和 `Socials` 的定义。
### TypeScript
@@ -157,6 +157,6 @@ println!("{}", response.data.base_token.name); // "My Token"
## Notes
-- 查找 Genesis 公钥需要索引或 `getProgramAccounts`。如果您只有代币铸造地址,请改用[按代币获取发行](/smart-contracts/genesis/integration-apis/get-launches-by-token)端点。
+- 查找 Genesis 公钥需要索引或 `getProgramAccounts`。如果您只有代币铸造地址,请改用[按代币获取发行](/zh/api/get-launches-by-token)端点。
- 如果 Genesis 地址未找到或没有有效发行,返回 `404`。
- `mechanic` 字段表示分配机制(例如 `launchpoolV2`、`presaleV2`)。`type` 字段表示底层发行机制(`launchpool` 或 `presale`)。
diff --git a/src/pages/zh/smart-contracts/genesis/integration-apis/get-launches-by-token.md b/src/pages/zh/api/get-launches-by-token.md
similarity index 94%
rename from src/pages/zh/smart-contracts/genesis/integration-apis/get-launches-by-token.md
rename to src/pages/zh/api/get-launches-by-token.md
index f884dfc9..b18dd6b8 100644
--- a/src/pages/zh/smart-contracts/genesis/integration-apis/get-launches-by-token.md
+++ b/src/pages/zh/api/get-launches-by-token.md
@@ -1,6 +1,6 @@
---
-title: Get Launches by Token
-metaTitle: Genesis - Get Launches by Token | REST API | Metaplex
+title: 按代币获取发行
+metaTitle: Metaplex API - 按代币获取发行 | REST API | Metaplex
description: 获取与代币铸造地址关联的所有发行。返回发行信息、代币元数据和社交链接。
method: GET
created: '01-15-2025'
@@ -99,7 +99,7 @@ curl https://api.metaplex.com/v1/tokens/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyT
## 响应类型
-请参阅[共享类型](/smart-contracts/genesis/integration-apis#shared-types)了解 `Launch`、`BaseToken` 和 `Socials` 的定义。
+请参阅[共享类型](/zh/api#shared-types)了解 `Launch`、`BaseToken` 和 `Socials` 的定义。
### TypeScript
diff --git a/src/pages/zh/smart-contracts/genesis/integration-apis/get-spotlight.md b/src/pages/zh/api/get-spotlight.md
similarity index 94%
rename from src/pages/zh/smart-contracts/genesis/integration-apis/get-spotlight.md
rename to src/pages/zh/api/get-spotlight.md
index 083e05c0..a751c0cf 100644
--- a/src/pages/zh/smart-contracts/genesis/integration-apis/get-spotlight.md
+++ b/src/pages/zh/api/get-spotlight.md
@@ -1,6 +1,6 @@
---
-title: Get Spotlight
-metaTitle: Genesis - Get Spotlight | REST API | Metaplex
+title: 获取聚焦发行
+metaTitle: Metaplex API - 获取聚焦发行 | REST API | Metaplex
description: "获取 Genesis 精选聚焦发行。返回平台策划的精选发行。"
method: GET
created: '01-15-2025'
@@ -99,7 +99,7 @@ curl "https://api.metaplex.com/v1/launches?spotlight=true"
## 响应类型
-请参阅[共享类型](/smart-contracts/genesis/integration-apis#shared-types)了解 `Launch`、`BaseToken` 和 `Socials` 的定义。
+请参阅[共享类型](/zh/api#shared-types)了解 `Launch`、`BaseToken` 和 `Socials` 的定义。
### TypeScript
diff --git a/src/pages/zh/api/index.md b/src/pages/zh/api/index.md
new file mode 100644
index 00000000..875f6abd
--- /dev/null
+++ b/src/pages/zh/api/index.md
@@ -0,0 +1,272 @@
+---
+title: Metaplex API
+metaTitle: Metaplex API - 公开 REST API 参考 | Metaplex
+description: api.metaplex.com 上的 Metaplex 公开 REST API — Genesis 发行数据、发行创建、Agent 注册表以及 Agent 钱包交易。无需认证。
+created: '01-15-2025'
+updated: '08-01-2026'
+keywords:
+ - Metaplex API
+ - Genesis API
+ - agent registry API
+ - launch data
+ - token queries
+ - REST API
+about:
+ - API integration
+ - Data aggregation
+ - Launch information
+ - Agent registry
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+ - Rust
+---
+
+Metaplex API 是位于 `api.metaplex.com` 的公开 REST API。它提供 Genesis 发行数据、构建发行创建交易,并对外提供 Metaplex Agent 注册表 — 浏览 Agent、提供 A2A AgentCard 以及构建 Agent 钱包交易。为 [metaplex.com](https://www.metaplex.com) 发行平台提供支持的也是同一个 API — 此处记录的端点正是网站自身所使用的。 {% .lead %}
+
+## Summary
+
+Metaplex API 提供对 Genesis 发行数据、发行创建和 Agent 注册表的公开 HTTP 访问 — 无需 SDK,也无需认证。
+
+- 通过 Genesis 地址、代币铸造地址查询发行,或浏览所有活跃发行
+- 创建并注册新的 Genesis 发行
+- 浏览和搜索 Agent 注册表;获取每个 Agent 的 A2A AgentCard
+- 构建 Agent 铸造、注资和提款交易
+- `https://api.metaplex.com/v1` 的公开 REST API — 无需认证
+- 为 [metaplex.com](https://www.metaplex.com) 发行平台提供支持 — 集成方使用的端点与平台本身相同
+- 通过 `network` 查询参数支持 Solana 主网(默认)和开发网
+- 机器可读的 OpenAPI 3.1 规范:[YAML](https://api.metaplex.com/v1/openapi.yaml)(规范版本)/ [JSON](https://api.metaplex.com/v1/openapi.json),可通过 [RFC 9727 API 目录](https://api.metaplex.com/.well-known/api-catalog)发现
+
+## 基础 URL
+
+```
+https://api.metaplex.com/v1
+```
+
+## 网络选择
+
+默认情况下,API 返回 Solana 主网的数据。要查询开发网发行,请添加 `network` 查询参数:
+
+```
+?network=solana-devnet
+```
+
+**示例:**
+
+```bash
+# Mainnet (default)
+curl https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN
+
+# Devnet
+curl "https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN?network=solana-devnet"
+```
+
+## 认证
+
+无需认证。API 公开访问,有速率限制。
+
+## 发行端点
+
+| 方法 | 端点 | 描述 |
+|--------|----------|-------------|
+| `GET` | [`/launches/{genesis_pubkey}`](/zh/api/get-launch) | 通过 Genesis 地址获取发行数据 |
+| `GET` | [`/tokens/{mint}`](/zh/api/get-launches-by-token) | 获取代币铸造的所有发行 |
+| `GET` | [`/launches`](/zh/api/list-launches) | 使用可选过滤器获取发行列表 |
+| `GET` | [`/launches?spotlight=true`](/zh/api/get-spotlight) | 获取精选推荐发行 |
+| `POST` | [`/launches/create`](/zh/api/create-launch) | 为新发行构建链上交易 |
+| `POST` | [`/launches/register`](/zh/api/register) | 注册已确认的发行以进行展示 |
+| `POST` | [`/twitter/verify`](/zh/api/verify-twitter) | 验证 Twitter 账户所有权(用于发行注册) |
+| `POST` | [`/creator-rewards/claim`](/zh/api/claim-creator-rewards) | 构建创作者奖励领取交易 |
+
+{% callout type="note" %}
+`POST` 端点(`/launches/create` 和 `/launches/register`)配合使用以创建新的代币发行。对于大多数用例,[SDK API 客户端](/zh/smart-contracts/genesis/sdk/api-client)提供了更简洁的接口,它封装了这两个端点。实时链上发行状态可通过 SDK 链方法 [`fetchBucketState`](/zh/smart-contracts/genesis/integration-apis/fetch-bucket-state) 和 [`fetchDepositState`](/zh/smart-contracts/genesis/integration-apis/fetch-deposit-state) 直接读取。
+{% /callout %}
+
+## Agent 端点
+
+| 方法 | 端点 | 描述 |
+|--------|----------|-------------|
+| `GET` | [`/agents`](/zh/api/list-agents) | 列出并搜索已注册的 Agent(分页) |
+| `GET` | [`/agents/{address}`](/zh/api/get-agent) | 获取单个 Agent 及其代币和元数据 |
+| `GET` | [`/agents/{address}/agent-card.json`](/zh/api/get-agent-card) | 获取托管的 A2A AgentCard |
+| `POST` | [`/agents/mint`](/zh/api/mint-agent) | 构建 Agent 铸造 + 注册交易 |
+| `POST` | [`/agents/{address}/fund`](/zh/api/fund-agent) | 构建向 Agent 钱包转入 SOL 的交易 |
+| `POST` | [`/agents/{address}/withdraw`](/zh/api/withdraw-agent) | 构建从 Agent 钱包提款的交易(仅限所有者) |
+
+有关铸造 Agent 的引导式演练,请参阅[铸造 Agent](/zh/agents/mint-agent)。
+
+## 交易构建端点
+
+构建交易的 `POST` 端点绝不持有用户密钥,也绝不提交交易。每个端点返回一个或多个 base64 序列化的交易以及构建时所依据的区块哈希;您的应用程序对其进行反序列化,由用户的钱包签名,然后提交到网络。
+
+## 错误码
+
+| 状态码 | 描述 |
+| --- | --- |
+| `400` | 错误请求 - 无效参数 |
+| `403` | 无权执行该操作(例如从您不拥有的 Agent 提款) |
+| `404` | 未找到发行、代币或 Agent |
+| `429` | 超出速率限制 |
+| `500` | 内部服务器错误 |
+
+## 响应信封
+
+由于 API 的演进,目前存在两种信封约定:
+
+**发行读取端点**(`/launches*`、`/tokens/*`、`/creator-rewards/claim`)将结果包装在 `data` 中,错误包装在 `error.message` 中:
+
+```json
+{ "data": { "…": "…" } }
+```
+
+```json
+{ "error": { "message": "Launch not found" } }
+```
+
+**Agent 端点、发行写入端点和 `/twitter/verify`** 使用 `success` 判别字段:
+
+```json
+{ "success": true, "…": "…" }
+```
+
+```json
+{ "success": false, "error": "Agent not found" }
+```
+
+例外是 [`/agents/{address}/agent-card.json`](/zh/api/get-agent-card),它返回不带信封的原始 AgentCard JSON,以便 A2A 客户端可以直接使用。每个端点页面都记录了其确切的响应结构,[OpenAPI 规范](https://api.metaplex.com/v1/openapi.json)中也有记录。
+
+## 机器可读规范
+
+完整的 API 契约以 OpenAPI 3.1 文档的形式发布,直接从 API 的请求验证器生成(因此不会与实现产生偏差):
+
+| 格式 | URL |
+|--------|-----|
+| YAML(规范版本) | `https://api.metaplex.com/v1/openapi.yaml` |
+| JSON | `https://api.metaplex.com/v1/openapi.json` |
+| 当前版本别名 | `https://api.metaplex.com/openapi.json` / `openapi.yaml` |
+| RFC 9727 API 目录 | `https://api.metaplex.com/.well-known/api-catalog` |
+
+将该规范导入 Postman、Swagger UI、代码生成器或 Agent 框架,即可为每个端点获得类型化客户端和可调用工具。
+
+## Notes
+
+- API 有速率限制。如果收到 `429` 响应,请降低请求频率。
+- 所有日期字段(`startTime`、`endTime`、`graduatedAt`、`lastActivityAt`)以 ISO 8601 字符串返回。
+- 默认网络为 `solana-mainnet`。可通过 `?network=solana-devnet` 获取开发网数据。
+- 对于 `POST` 端点,建议使用 [SDK API 客户端](/zh/smart-contracts/genesis/sdk/api-client),它封装了 `/launches/create` 和 `/launches/register`。
+
+## 共享类型 {% #shared-types %}
+
+### TypeScript
+
+```ts
+interface Launch {
+ launchPage: string;
+ mechanic: string;
+ genesisAddress: string;
+ spotlight: boolean;
+ startTime: string;
+ endTime: string;
+ status: 'upcoming' | 'live' | 'graduated' | 'ended';
+ heroUrl: string | null;
+ graduatedAt: string | null;
+ lastActivityAt: string;
+ type: 'launchpool' | 'presale';
+}
+
+interface BaseToken {
+ address: string;
+ name: string;
+ symbol: string;
+ image: string;
+ description: string;
+}
+
+interface Socials {
+ x?: string;
+ telegram?: string;
+ discord?: string;
+}
+
+interface ErrorResponse {
+ error: {
+ message: string;
+ };
+}
+```
+
+### Rust
+
+```rust
+use serde::{Deserialize, Serialize};
+
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Launch {
+ pub launch_page: String,
+ pub mechanic: String,
+ pub genesis_address: String,
+ pub spotlight: bool,
+ pub start_time: String,
+ pub end_time: String,
+ pub status: String,
+ pub hero_url: Option,
+ pub graduated_at: Option,
+ pub last_activity_at: String,
+ #[serde(rename = "type")]
+ pub launch_type: String,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct BaseToken {
+ pub address: String,
+ pub name: String,
+ pub symbol: String,
+ pub image: String,
+ pub description: String,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct Socials {
+ pub x: Option,
+ pub telegram: Option,
+ pub discord: Option,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct ApiError {
+ pub message: String,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct ErrorResponse {
+ pub error: ApiError,
+}
+```
+
+{% callout type="note" %}
+将以下依赖项添加到您的 `Cargo.toml`:
+```toml
+[dependencies]
+reqwest = { version = "0.12", features = ["json"] }
+tokio = { version = "1", features = ["full"] }
+serde = { version = "1", features = ["derive"] }
+```
+{% /callout %}
+
+## Glossary
+
+| 术语 | 定义 |
+|------|------------|
+| **Genesis Address** | 唯一标识特定发行活动的 PDA(Program Derived Address) |
+| **Base Token** | 通过铸造地址标识的待发行代币 |
+| **Launch Page** | 用户可以参与发行的 URL |
+| **Mechanic** | 发行使用的分配机制(例如 `launchpoolV2`、`presaleV2`、`auction`) |
+| **Launch Type** | 发行的底层机制:`launchpool` 或 `presale` |
+| **Spotlight** | 平台策划的精选发行标志 |
+| **Status** | 发行的当前状态:`upcoming`、`live`、`graduated` 或 `ended` |
+| **Socials** | 与代币关联的社交媒体链接(X/Twitter、Telegram、Discord) |
+| **LaunchData** | 包含 `launch`、`baseToken`、`website` 和 `socials` 的响应包装器 |
+| **TokenData** | 代币查询的响应包装器,包含 `launches` 数组以及 `baseToken`、`website` 和 `socials` |
diff --git a/src/pages/zh/api/list-agents.md b/src/pages/zh/api/list-agents.md
new file mode 100644
index 00000000..35346c81
--- /dev/null
+++ b/src/pages/zh/api/list-agents.md
@@ -0,0 +1,188 @@
+---
+title: 列出 Agent
+metaTitle: Metaplex API - 列出 Agent | REST API | Metaplex
+description: 浏览并搜索已注册的 AI Agent。返回带有元数据、过滤器和排序的分页 Agent 记录。
+method: GET
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - agent registry
+ - agent search
+ - agent listings
+about:
+ - API endpoint
+ - Agent listings
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+ - Rust
+---
+
+浏览并搜索 Agent 注册表。返回来自索引数据库的分页 Agent 记录,默认按最新注册时间排序。 {% .lead %}
+
+## Summary
+
+列出已注册的 Agent,支持可选的全文搜索、过滤器和排序。结果始终分页。
+
+- 通过 `query` 按名称搜索
+- 通过 `activeOnly`、`hasAgentToken`、`hasServices` 和 `spotlight` 过滤
+- 按注册时间以 `latest`(默认)或 `oldest` 排序
+- 默认为第 1 页,每页 24 条结果(`pageSize` 最大为 100)
+
+## Quick Reference
+
+| 项目 | 值 |
+|------|-------|
+| **方法** | `GET` |
+| **路径** | `/agents` |
+| **认证** | 无需 |
+| **响应** | 分页的 `AgentRecord[]` |
+| **分页** | `page` / `pageSize` |
+
+## 端点
+
+```
+GET /agents
+```
+
+## 查询参数
+
+| 参数 | 类型 | 必填 | 描述 |
+|-----------|------|----------|-------------|
+| `network` | `string` | 否 | 查询的网络。默认:`solana-mainnet`。使用 `solana-devnet` 查询 devnet。 |
+| `page` | `number` | 否 | 页码,从 `1` 开始。默认:`1`。 |
+| `pageSize` | `number` | 否 | 每页结果数,`1`–`100`。默认:`24`。 |
+| `query` | `string` | 否 | 对 Agent 名称进行自由文本搜索。 |
+| `sort` | `string` | 否 | `latest`(默认)或 `oldest` — 按注册时间。 |
+| `activeOnly` | `boolean` | 否 | 仅返回 EIP-8004 元数据标记为活跃的 Agent。 |
+| `hasAgentToken` | `boolean` | 否 | 仅返回已设置主 Agent 代币的 Agent。 |
+| `hasServices` | `boolean` | 否 | 仅返回声明了服务端点的 Agent。 |
+| `spotlight` | `boolean` | 否 | 仅返回在发现页面被精选推荐的 Agent。 |
+
+## 请求示例
+
+```bash
+curl "https://api.metaplex.com/v1/agents?pageSize=10&sort=latest&activeOnly=true"
+```
+
+## 响应
+
+```json
+{
+ "success": true,
+ "data": {
+ "agents": [
+ {
+ "mintAddress": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN",
+ "network": "solana-mainnet",
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "image": "https://example.com/agent.png",
+ "walletAddress": "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
+ "authority": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "agentToken": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
+ "agentMetadataUri": "https://api.metaplex.com/v1/agents/7nE9.../agent-card.json",
+ "metadata": { "…": "EIP-8004 registration JSON" },
+ "a2aCard": { "…": "A2A AgentCard (spec §4.4)" },
+ "isActive": true,
+ "registrationSignature": "5J8…",
+ "indexedAt": "2026-07-01T12:00:00.000Z",
+ "spotlightedAt": null,
+ "verifiedAt": null,
+ "createdAt": "2026-07-01T11:59:58.000Z",
+ "updatedAt": "2026-07-15T09:30:00.000Z"
+ }
+ ],
+ "total": 132,
+ "page": 1,
+ "pageSize": 10,
+ "totalPages": 14
+ }
+}
+```
+
+## 响应类型
+
+### TypeScript
+
+```ts
+interface PaginatedAgentsResponse {
+ success: true;
+ data: {
+ agents: AgentRecord[];
+ total: number;
+ page: number;
+ pageSize: number;
+ totalPages: number;
+ };
+}
+
+interface AgentRecord {
+ /** Core asset mint address (the NFT representing this agent) */
+ mintAddress: string;
+ network: string;
+ name: string;
+ description: string;
+ image: string | null;
+ /** The agent's signer PDA wallet, derived from the Core asset */
+ walletAddress: string;
+ /** Update authority of the Core asset */
+ authority: string | null;
+ /** Primary token mint, set via the setAgentToken instruction */
+ agentToken: string | null;
+ agentMetadataUri: string | null;
+ /** EIP-8004 agent registration JSON */
+ metadata: Record | null;
+ /** Hosted A2A AgentCard (spec §4.4) */
+ a2aCard: Record | null;
+ isActive: boolean;
+ registrationSignature: string | null;
+ indexedAt: string | null;
+ spotlightedAt: string | null;
+ verifiedAt: string | null;
+ createdAt: string;
+ updatedAt: string;
+}
+```
+
+## 使用示例
+
+### TypeScript
+
+```ts
+const response = await fetch(
+ "https://api.metaplex.com/v1/agents?pageSize=10&activeOnly=true"
+);
+const result: PaginatedAgentsResponse = await response.json();
+if (result.success) {
+ const { agents, total, totalPages } = result.data;
+ console.log(`${agents.length} of ${total} agents (${totalPages} pages)`);
+}
+```
+
+### Rust
+
+```rust
+let response = reqwest::get(
+ "https://api.metaplex.com/v1/agents?pageSize=10&activeOnly=true"
+)
+.await?
+.json::()
+.await?;
+
+if response["success"].as_bool() == Some(true) {
+ if let Some(agents) = response["data"]["agents"].as_array() {
+ println!("{} agents on this page", agents.len());
+ }
+} else {
+ eprintln!("API error: {}", response["error"]);
+}
+```
+
+## Notes
+
+- 结果来自索引数据库,而非实时链上扫描;新铸造的 Agent 在其注册交易被索引后才会出现。
+- 布尔过滤器接受 `true`/`false` 字符串值。
+- 响应使用 `success` 信封格式 — 详见 [Agent API 概览](/zh/api)。
diff --git a/src/pages/zh/smart-contracts/genesis/integration-apis/list-launches.md b/src/pages/zh/api/list-launches.md
similarity index 95%
rename from src/pages/zh/smart-contracts/genesis/integration-apis/list-launches.md
rename to src/pages/zh/api/list-launches.md
index 8c7a903a..8b48dbb3 100644
--- a/src/pages/zh/smart-contracts/genesis/integration-apis/list-launches.md
+++ b/src/pages/zh/api/list-launches.md
@@ -1,6 +1,6 @@
---
title: 发行列表
-metaTitle: Genesis - 发行列表 | REST API | Metaplex
+metaTitle: Metaplex API - 发行列表 | REST API | Metaplex
description: "获取活跃和即将到来的 Genesis 发行列表。返回带有元数据的列表。"
method: GET
created: '01-15-2025'
@@ -102,7 +102,7 @@ curl "https://api.metaplex.com/v1/launches?status=live"
## 响应类型
-请参阅[共享类型](/smart-contracts/genesis/integration-apis#shared-types)了解 `Launch`、`BaseToken` 和 `Socials` 的定义。
+请参阅[共享类型](/zh/api#shared-types)了解 `Launch`、`BaseToken` 和 `Socials` 的定义。
### TypeScript
diff --git a/src/pages/zh/api/mint-agent.md b/src/pages/zh/api/mint-agent.md
new file mode 100644
index 00000000..d665df6d
--- /dev/null
+++ b/src/pages/zh/api/mint-agent.md
@@ -0,0 +1,127 @@
+---
+title: 铸造 Agent
+metaTitle: Metaplex API - 铸造 Agent | REST API | Metaplex
+description: 构建一个部分签名的交易,用于铸造 Agent Core 资产并注册其链上身份。
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - mint agent
+ - agent registration
+ - EIP-8004
+about:
+ - API endpoint
+ - Agent minting
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+构建一个交易,一步完成为您的 Agent 铸造 MPL Core 资产并在 Agent 注册表中注册其身份。API 在链下存储 Agent 元数据,并返回一个部分签名的交易,由钱包作为付款方共同签名。 {% .lead %}
+
+## Summary
+
+这是[铸造 Agent](/zh/agents/mint-agent) 指南背后的端点。
+
+- 在单笔交易中创建 Core 资产并调用 `registerIdentity`
+- 资产密钥对在服务端生成并预先签名,因此响应包含最终的 `assetAddress`
+- 存储 EIP-8004 元数据和托管的 [A2A AgentCard](/zh/api/get-agent-card)(您提供的,或从元数据合成的)
+- 调用方的钱包作为付款方签名并提交交易
+
+## Quick Reference
+
+| 项目 | 值 |
+|------|-------|
+| **方法** | `POST` |
+| **路径** | `/agents/mint` |
+| **认证** | 无需 |
+| **响应** | 序列化交易 + `assetAddress` |
+
+## 端点
+
+```
+POST /agents/mint
+```
+
+## 请求体
+
+| 字段 | 类型 | 必填 | 描述 |
+|-------|------|----------|-------------|
+| `wallet` | `string` | 是 | 将支付并拥有该 Agent 的钱包(base58)。 |
+| `network` | `string` | 是 | `solana-mainnet` 或 `solana-devnet`。 |
+| `name` | `string` | 是 | Core 资产的 Agent 名称。 |
+| `uri` | `string` | 是 | 资产链下 JSON 元数据的 URI。 |
+| `agentMetadata` | `object` | 是 | EIP-8004 Agent 注册 JSON(name、description、image、services、registrations、active 等)。 |
+| `collectionAddress` | `string` | 否 | 将 Agent 铸造到其中的 Core 集合。 |
+| `a2aCard` | `object` | 否 | 预先构建的 A2A AgentCard。省略时会从 `agentMetadata` 合成一个。 |
+
+## 请求示例
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/agents/mint" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "wallet": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "network": "solana-devnet",
+ "name": "Example Agent",
+ "uri": "https://example.com/agent-metadata.json",
+ "agentMetadata": {
+ "name": "Example Agent",
+ "description": "An autonomous trading agent.",
+ "active": true,
+ "services": [],
+ "registrations": []
+ }
+ }'
+```
+
+## 响应
+
+```json
+{
+ "success": true,
+ "tx": "",
+ "blockhash": {
+ "blockhash": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
+ "lastValidBlockHeight": 123456789
+ },
+ "assetAddress": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
+}
+```
+
+## 签名和提交 {% #signing-and-submitting %}
+
+返回的交易已由资产密钥对签名;您的钱包作为付款方共同签名并提交:
+
+```ts
+import { base64 } from "@metaplex-foundation/umi/serializers";
+
+const res = await fetch("https://api.metaplex.com/v1/agents/mint", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify(input),
+});
+const result = await res.json();
+if (!result.success) throw new Error(result.error);
+
+const tx = umi.transactions.deserialize(base64.serialize(result.tx));
+const signed = await umi.identity.signTransaction(tx);
+await umi.rpc.sendTransaction(signed);
+```
+
+## 错误
+
+| 状态码 | 响应体 | 含义 |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "Invalid input data", "details": [...] }` | 请求体验证失败;`details` 列出具体问题。 |
+| `400` | `{ "success": false, "error": "" }` | 构建失败(例如未找到集合)。 |
+| `500` | `{ "success": false, "error": "Failed to prepare mint agent" }` | 服务器错误。 |
+
+## Notes
+
+- Metaplex 注册表条目(`solana:101:metaplex`)会自动添加到 `agentMetadata.registrations` 的最前面。
+- 一个托管的 A2A 服务条目会被插入到 `services[]` 中,以便 EIP-8004 消费者可以发现 [AgentCard 端点](/zh/api/get-agent-card);如果您已经自行编写了一个,此操作不产生任何变化。
+- 调用此端点时会存储 Agent 记录,但只有在已签名的交易被确认并索引后,它才会出现在[列出 Agent](/zh/api/list-agents) 中。
+- 有关使用 SDK 的引导式演练,请参阅[铸造 Agent](/zh/agents/mint-agent)。
diff --git a/src/pages/zh/smart-contracts/genesis/integration-apis/register.md b/src/pages/zh/api/register.md
similarity index 80%
rename from src/pages/zh/smart-contracts/genesis/integration-apis/register.md
rename to src/pages/zh/api/register.md
index 4881fac8..54904ad7 100644
--- a/src/pages/zh/smart-contracts/genesis/integration-apis/register.md
+++ b/src/pages/zh/api/register.md
@@ -1,6 +1,6 @@
---
title: 注册发行
-metaTitle: Genesis - 注册发行 | REST API | Metaplex
+metaTitle: Metaplex API - 注册发行 | REST API | Metaplex
description: 在链上交易确认后注册 Genesis 发行。验证链上状态并创建发行列表。
method: POST
created: '01-15-2025'
@@ -19,10 +19,10 @@ programmingLanguage:
- TypeScript
---
-在[创建发行](/smart-contracts/genesis/integration-apis/create-launch)的链上交易确认后注册 Genesis 发行。该端点验证链上状态、创建发行列表并返回发行页面 URL。{% .lead %}
+在[创建发行](/zh/api/create-launch)的链上交易确认后注册 Genesis 发行。该端点验证链上状态、创建发行列表并返回发行页面 URL。{% .lead %}
{% callout type="warning" title="建议使用 SDK" %}
-大多数集成方应使用 SDK 中的 [`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client),它在一次调用中处理创建交易、签名、发送和注册发行的全部流程。只有在需要不依赖 SDK 直接进行 HTTP 访问时才需要使用此端点。
+大多数集成方应使用 SDK 中的 [`createAndRegisterLaunch`](/zh/smart-contracts/genesis/sdk/api-client),它在一次调用中处理创建交易、签名、发送和注册发行的全部流程。只有在需要不依赖 SDK 直接进行 HTTP 访问时才需要使用此端点。
{% /callout %}
## 端点
@@ -127,8 +127,8 @@ curl -X POST https://api.metaplex.com/v1/launches/register \
## 推荐:使用 SDK
-我们建议使用 [`createAndRegisterLaunch`](/smart-contracts/genesis/sdk/api-client) 而非直接调用此端点,该函数在一次调用中处理整个流程——创建交易、签名、发送和注册:
+我们建议使用 [`createAndRegisterLaunch`](/zh/smart-contracts/genesis/sdk/api-client) 而非直接调用此端点,该函数在一次调用中处理整个流程——创建交易、签名、发送和注册:
{% code-tabs-imported from="genesis/api_easy_mode" frameworks="umi" filename="createAndRegisterLaunch" /%}
-请参阅 [API 客户端](/smart-contracts/genesis/sdk/api-client)获取完整的 SDK 文档,包括全部三种集成模式。
+请参阅 [API 客户端](/zh/smart-contracts/genesis/sdk/api-client)获取完整的 SDK 文档,包括全部三种集成模式。
diff --git a/src/pages/zh/api/verify-twitter.md b/src/pages/zh/api/verify-twitter.md
new file mode 100644
index 00000000..30511b2b
--- /dev/null
+++ b/src/pages/zh/api/verify-twitter.md
@@ -0,0 +1,82 @@
+---
+title: 验证 Twitter
+metaTitle: Metaplex API - 验证 Twitter | REST API | Metaplex
+description: 将 Twitter OAuth 访问令牌兑换为验证令牌,用于在注册发行时证明 Twitter 账户的所有权。
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Genesis API
+ - Twitter verification
+ - social verification
+ - launch registration
+about:
+ - API endpoint
+ - Social verification
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+将 Twitter(X)OAuth 访问令牌兑换为短期有效的验证令牌,用于证明 Twitter 账户的所有权。将该令牌传给[注册发行](/zh/api/register),即可将发行的 Twitter 链接标记为已验证。 {% .lead %}
+
+## Summary
+
+- 对照 X API 验证用户提供的 Twitter OAuth 2.0 访问令牌
+- 返回账户的用户名和已签名的验证令牌
+- 该令牌由 `POST /launches/register` 通过其可选的 `twitterVerificationToken` 字段消费
+
+## Quick Reference
+
+| 项目 | 值 |
+|------|-------|
+| **方法** | `POST` |
+| **路径** | `/twitter/verify` |
+| **认证** | 无需(Twitter 访问令牌即为凭证) |
+| **响应** | 用户名 + 验证令牌 |
+
+## 端点
+
+```
+POST /twitter/verify
+```
+
+## 请求体
+
+| 字段 | 类型 | 必填 | 描述 |
+|-------|------|----------|-------------|
+| `accessToken` | `string` | 是 | 由您的应用程序获取的 Twitter OAuth 2.0 用户访问令牌(必须已授权 `users.read`)。 |
+
+## 请求示例
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/twitter/verify" \
+ -H "Content-Type: application/json" \
+ -d '{ "accessToken": "" }'
+```
+
+## 响应
+
+```json
+{
+ "success": true,
+ "username": "mytoken",
+ "token": ""
+}
+```
+
+调用[注册发行](/zh/api/register)时,将 `token` 作为 `twitterVerificationToken` 传入。API 会将令牌中的用户名与 `launch.externalLinks.twitter` 中的账号名进行比对,匹配时将该链接标记为已验证。
+
+## 错误
+
+| 状态码 | 响应体 | 含义 |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "accessToken is required" }` | `accessToken` 缺失或为空。 |
+| `401` | `{ "success": false, "error": "Could not verify Twitter account" }` | X API 拒绝了该访问令牌。 |
+| `502` | `{ "success": false, "error": "Could not retrieve Twitter username" }` | X API 的响应中没有用户名。 |
+
+## Notes
+
+- 获取 OAuth 访问令牌(用户授权流程)是您的应用程序的责任;此端点仅验证令牌并签发验证令牌。
+- 验证是可选的 — 未验证的发行也能成功注册,只是其 Twitter 链接会保持未验证状态。
diff --git a/src/pages/zh/api/withdraw-agent.md b/src/pages/zh/api/withdraw-agent.md
new file mode 100644
index 00000000..1bdcd8f9
--- /dev/null
+++ b/src/pages/zh/api/withdraw-agent.md
@@ -0,0 +1,98 @@
+---
+title: 从 Agent 提款
+metaTitle: Metaplex API - 从 Agent 钱包提款 | REST API | Metaplex
+description: 构建一个从 Agent 钱包向其所有者提取 SOL 的交易。仅限所有者。
+method: POST
+created: '08-01-2026'
+updated: '08-01-2026'
+keywords:
+ - Agent API
+ - withdraw
+ - agent wallet
+ - execute
+about:
+ - API endpoint
+ - Agent finance
+proficiencyLevel: Intermediate
+programmingLanguage:
+ - JavaScript
+ - TypeScript
+---
+
+构建一个交易,将 SOL 从 Agent 的签名者 PDA 钱包转回给 Agent 的所有者。只有 Agent Core 资产的当前所有者可以提款。 {% .lead %}
+
+## Summary
+
+- 将 SOL 转账包装在 `execute` 指令中,使 Agent 的钱包 PDA 能够签名
+- 在构建交易之前,服务端会对照 Core 资产验证所有权
+- 返回未签名的交易,由所有者签名并提交
+
+## Quick Reference
+
+| 项目 | 值 |
+|------|-------|
+| **方法** | `POST` |
+| **路径** | `/agents/{address}/withdraw` |
+| **认证** | 无需(所有权在链上和构建时强制验证) |
+| **响应** | 序列化交易 |
+
+## 端点
+
+```
+POST /agents/{address}/withdraw
+```
+
+## 路径参数
+
+| 参数 | 类型 | 必填 | 描述 |
+|-----------|------|----------|-------------|
+| `address` | `string` | 是 | Agent 的 Core 资产铸造地址(base58)。 |
+
+## 请求体
+
+| 字段 | 类型 | 必填 | 描述 |
+|-------|------|----------|-------------|
+| `sender` | `string` | 是 | Agent 所有者的钱包(base58)。接收 SOL 并为交易签名。 |
+| `amount` | `number` | 是 | 以 SOL 为单位的金额。必须为正数。 |
+| `network` | `string` | 否 | `solana-mainnet`(默认)或 `solana-devnet`。 |
+
+## 请求示例
+
+```bash
+curl -X POST "https://api.metaplex.com/v1/agents/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN/withdraw" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "sender": "4Nd1mYvJ9jVexjIXG5oJhanoGWyF7Cz6XkY8dEc4RsyG",
+ "amount": 0.25
+ }'
+```
+
+## 响应
+
+```json
+{
+ "success": true,
+ "tx": "",
+ "blockhash": {
+ "blockhash": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
+ "lastValidBlockHeight": 123456789
+ }
+}
+```
+
+所有者对交易进行反序列化、签名并提交 — 请参阅[签名和提交](/zh/api/mint-agent#signing-and-submitting)。
+
+## 错误
+
+| 状态码 | 响应体 | 含义 |
+|--------|------|---------|
+| `400` | `{ "success": false, "error": "Invalid input data" }` | 请求体或地址验证失败。 |
+| `403` | `{ "success": false, "error": "Only the agent owner can withdraw funds" }` | `sender` 不拥有该 Agent 的 Core 资产。 |
+| `404` | `{ "success": false, "error": "Agent not found" }` | 在指定网络的该地址上没有 Core 资产。 |
+| `500` | `{ "success": false, "error": "Failed to prepare withdraw transaction" }` | 服务器错误。 |
+
+## Notes
+
+- 构建时的所有权检查只是一种便利;`execute` 指令无论如何都会在链上强制验证所有权,因此伪造的请求无法转移资金。
+- 提款目标始终是 `sender`(所有者)— 资金无法被重定向到第三方。
+- 要添加资金,请参阅[为 Agent 注资](/zh/api/fund-agent)。
diff --git a/src/pages/zh/smart-contracts/genesis/bonding-curve-parameters.md b/src/pages/zh/smart-contracts/genesis/bonding-curve-parameters.md
new file mode 100644
index 00000000..8f11f9c6
--- /dev/null
+++ b/src/pages/zh/smart-contracts/genesis/bonding-curve-parameters.md
@@ -0,0 +1,177 @@
+---
+title: 绑定曲线 — 协议参数
+metaTitle: Genesis 绑定曲线协议参数 | Metaplex
+description: Genesis 绑定曲线的具体协议参数 — 代币供应量默认值、虚拟储备金、费用计划和毕业目标。
+created: '08-03-2026'
+updated: '08-05-2026'
+keywords:
+ - bonding curve
+ - protocol parameters
+ - virtual reserves
+ - fee schedule
+ - graduation
+ - genesis
+ - Metaplex
+ - token supply
+ - program ID
+about:
+ - Bonding Curve
+ - Genesis
+ - Protocol Parameters
+proficiencyLevel: Intermediate
+faqs:
+ - q: Genesis 绑定曲线代币的起始价格是多少?
+ a: 起始价格(每 SOL 兑换的代币数)= (virtualTokens / 10^decimals) / (virtualSol / 10^9)。virtualTokens 以原始单位计价,virtualSol 以 lamports 计价,因此在以每 SOL 兑换代币数报价之前必须先转换两者。使用协议默认值时,无论曲线何时开放,起始价格都是固定的。
+ - q: 曲线毕业时会筹集多少 SOL?
+ a: 毕业时累积的真实 lamports 等于 (k / virtualTokens) − virtualSol,其中 k = virtualSol × (virtualTokens + baseTokenAllocation);除以 10^9 即可换算为 SOL。实际上这等于协议参数表中列出的毕业目标 SOL。
+ - q: 创作者可以更改虚拟储备金或代币供应量吗?
+ a: 不可以。虚拟储备金、代币供应量和小数位数由协议默认值设定,无法通过 API 按发行覆盖。
+ - q: 创作者费包含在 0.50% 的协议费中吗?
+ a: 不包含。创作者费是独立且额外的。两者均针对每次交换的总 SOL 金额独立计算,不复合。每次交换的最大总费用为协议费 + 创作者费。
+ - q: 毕业后绑定曲线费用还适用吗?
+ a: 不适用。毕业后,交易转移到 Raydium CPMM 池。改为适用毕业后交易费用计划 — 0.40% 协议费、0.60% 创作者收益、0.21% LP 费用和 0.04% Raydium 费用。
+---
+
+Genesis 绑定曲线的具体协议参数 — 定义通过 Metaplex API 创建的每个发行的固定数值。 {% .lead %}
+
+## Summary
+
+所有 Genesis 绑定曲线发行共享相同的协议级参数。这些值由 Metaplex API 设定,无法按发行覆盖。
+
+- **固定的供应量和小数位数** — 每条曲线都以 1,000,000,000 个代币、6 位小数起始
+- **不可变的虚拟储备金** — `virtualSol` 和 `virtualTokens` 在曲线创建时设定,定义了从首次交易到毕业的完整价格轨迹
+- **两层费用结构** — 每次交换收取 0.50% 协议费加可选的创作者费;毕业后 Raydium CPMM 池适用单独的费用计划
+- **自动毕业** — 当 `baseTokenBalance` 降为零时触发;无需手动触发
+
+有关使用这些参数的 AMM 定价模型,请参阅[工作原理](/smart-contracts/genesis/bonding-curve-theory)。有关原始交换公式,请参阅[高级内部机制](/smart-contracts/genesis/bonding-curve-internals)。
+
+## 协议参数
+
+每个 Genesis 绑定曲线发行都使用以下固定的协议值创建。
+
+| 参数 | 值 | 备注 |
+|-----------|-------|-------|
+| **程序 ID** | `GNS1S5J5AspKXgpjz6SvKL66kPaKWAhaGRhCqPRxii2B` | Solana 主网 |
+| **代币供应量** | 1,000,000,000 | 小数位换算前的原始单位 |
+| **小数位数** | 6 | SPL 代币小数位 |
+| **代币供应量(含小数位)** | 1,000,000,000,000,000 | `supply × 10^decimals` |
+| **`virtualSol`** | [TBD] lamports | 虚拟 SOL 储备金 — 设定起始价格 |
+| **`virtualTokens`** | [TBD] 原始单位 | 虚拟代币储备金 — 与 `virtualSol` 配对 |
+| **毕业目标** | [TBD] SOL | 完全售罄时累积的真实 SOL |
+| **`baseTokenAllocation`** | 1,000,000,000,000,000 | 所有代币均分配给曲线 |
+
+{% callout type="note" %}
+`virtualSol` 和 `virtualTokens` 在曲线创建后不可变。程序发出的每个事件都包含这两个值,因此链下价格计算永远不需要单独获取账户。请参阅[索引与事件](/smart-contracts/genesis/bonding-curve-indexing)。
+{% /callout %}
+
+## 费用计划
+
+代币生命周期内适用两种不同的费用计划:绑定曲线活跃期间的计划,以及毕业到 Raydium 之后的计划。
+
+### 绑定曲线(活跃阶段)
+
+费用适用于每次交换的 **SOL 侧**。两种费用均针对总 SOL 金额独立计算,不复合。净流入或流出的 SOL = 总额 − 协议费 − 创作者费。
+
+| 费用 | 费率 | 接收方 |
+|-----|------|-----------|
+| **协议费** | 0.50% | Metaplex 费用钱包 — 每次交换时转账 |
+| **创作者费** | 0.60%(上限) | 配置的 `creatorFeeWallet` — 在桶中累积,通过 `claimBondingCurveCreatorFeeV2` 领取 |
+
+{% callout type="note" %}
+创作者费是可选的。如果未配置 `creatorFeeWallet`,则不收取创作者费。配置后,0.60% 是协议定义的上限。使用首次购买机制时,首次购买免除两种费用。请参阅[创作者费用](/smart-contracts/genesis/creator-fees)。
+{% /callout %}
+
+### 毕业后(Raydium CPMM 池) {% #post-graduation-raydium-cpmm-pool %}
+
+曲线毕业后,交易转移到 Raydium CPMM 池。适用不同的费用计划:
+
+| 费用 | 费率 | 接收方 |
+|-----|------|-----------|
+| **协议费** | 0.40% | Metaplex |
+| **创作者收益** | 0.60% | 创作者费用钱包 — 通过 `claimRaydiumCreatorFeeV2` 领取 |
+| **LP 费用** | 0.21% | 流动性提供者 |
+| **Raydium 费用** | 0.04% | Raydium 协议 |
+
+## 价格与毕业计算
+
+使用协议默认值时,以下数值在曲线创建时即完全确定。
+
+### 起始价格
+
+起始价格是虚拟储备金的比率,从链上单位(原始代币单位和 lamports)换算为人类可读单位(代币和 SOL)。
+
+```
+startingPrice (tokens per SOL) = (virtualTokens / 10^decimals) / (virtualSol / 10^9)
+```
+
+`virtualTokens` 以原始单位存储,`virtualSol` 以 lamports 存储,因此在以每 SOL 兑换代币数报价之前,需分别除以 `10^decimals`(协议默认值下为 10^6)和 `10^9`。这是买家在第一笔交换时(任何真实 SOL 进入池之前)看到的价格。
+
+### 毕业时的市值
+
+毕业时 `baseTokenBalance = 0`,所有真实代币均已售出。累积的真实 SOL 等于毕业目标。毕业时的完全稀释市值:
+
+```
+graduationLamports = (k / virtualTokens) − virtualSol
+ where k = virtualSol × (virtualTokens + baseTokenAllocation)
+graduationSOL = graduationLamports / 10^9
+
+priceAtGraduation (lamports per raw unit) = k / virtualTokens^2
+fdvAtGraduation (SOL) = totalSupply (raw units) × priceAtGraduation / 10^9
+```
+
+### 恒定乘积不变量
+
+不变量 `k` 在曲线创建时固定,并在曲线活跃期间保持不变。
+
+```
+k = virtualSol × (virtualTokens + baseTokenAllocation)
+```
+
+`k` 在曲线的整个生命周期中保持恒定(每次交换时向上取整)。
+
+## Notes
+
+- 虚拟储备金包含在每个 `BondingCurveSwapEvent` 中 — 链下价格计算不需要单独的 RPC 调用来获取桶账户
+- 协议费率和虚拟储备金值由 Metaplex 设定,无法通过 `createAndRegisterLaunch` API 按发行覆盖
+- 毕业在耗尽 `baseTokenBalance` 的那笔交换中自动触发 — 清空最后一个代币的同一笔交易也会触发向 Raydium 的迁移
+- 创作者费在 `creatorFeeAccrued` 中累积(不会按交换转账);`creatorFeeClaimed` 跟踪累计领取额;两者在每次调用 `claimBondingCurveCreatorFeeV2` 时相对于累积额重置
+
+## Quick Reference
+
+| 项目 | 值 |
+|------|-------|
+| 程序 ID | `GNS1S5J5AspKXgpjz6SvKL66kPaKWAhaGRhCqPRxii2B` |
+| 默认供应量 | `1,000,000,000`(10 亿代币,6 位小数) |
+| `baseTokenAllocation` | `1,000,000,000,000,000` |
+| 协议交换费 | `0.50%` |
+| 创作者费(上限) | `0.60%` |
+| 毕业后协议费 | `0.40%` |
+| 毕业后 LP 费用 | `0.21%` |
+| 毕业后 Raydium 费用 | `0.04%` |
+| `virtualSol` | `[TBD]` |
+| `virtualTokens` | `[TBD]` |
+| 毕业目标 | `[TBD] SOL` |
+| JS SDK | `@metaplex-foundation/genesis` |
+| 源代码 | [GitHub](https://github.com/metaplex-foundation/mpl-genesis) |
+
+## FAQ
+
+### Genesis 绑定曲线代币的起始价格是多少?
+
+以每 SOL 兑换代币数表示的起始价格 = `(virtualTokens / 10^decimals) / (virtualSol / 10^9)` — `virtualTokens` 以原始单位计价,`virtualSol` 以 lamports 计价,报价前需先转换。它完全由协议默认值决定 — 创作者无法设置自定义起始价格。
+
+### 曲线毕业时会筹集多少 SOL?
+
+售罄时累积的真实 SOL 等于上方协议参数表中列出的毕业目标。这直接由恒定乘积公式得出:`graduationLamports = (k / virtualTokens) − virtualSol`,除以 `10^9` 即为 SOL。
+
+### 创作者可以更改虚拟储备金或代币供应量吗?
+
+不可以。`virtualSol`、`virtualTokens`、代币供应量和小数位数是由 Metaplex API 设定的协议默认值。没有任何 API 参数可以按发行覆盖它们。
+
+### 创作者费包含在 0.50% 的协议费中吗?
+
+不包含。协议费(0.50%)和创作者费(最高 0.60%)是相互独立的。两者均针对交换的总 SOL 金额计算并分别扣除。它们不复合。
+
+### 毕业后绑定曲线费用还适用吗?
+
+不适用。毕业后,绑定曲线账户被关闭,交易转移到 Raydium CPMM 池。改为适用毕业后交易费用计划 — 请参阅上方的[毕业后费用计划](#post-graduation-raydium-cpmm-pool)表。
diff --git a/src/pages/zh/smart-contracts/genesis/creator-fees.md b/src/pages/zh/smart-contracts/genesis/creator-fees.md
index 81e3b48b..0fd811b9 100644
--- a/src/pages/zh/smart-contracts/genesis/creator-fees.md
+++ b/src/pages/zh/smart-contracts/genesis/creator-fees.md
@@ -108,7 +108,7 @@ faqs:
| `collectRaydiumCpmmFeesWithCreatorFeeV2` | 毕业后——收割 LP 费用 | Genesis 账户、Raydium 池 PDA、Raydium bucket PDA | LP 费用从 Raydium 池移至 Genesis bucket |
| `claimRaydiumCreatorFeeV2` | 毕业后——认领 bucket 余额 | Genesis 账户、Raydium bucket PDA、base/quote mint、创作者费钱包 | Bucket 余额转移到创作者钱包 |
-**跳转至:** [发行时配置](#发行时配置创作者费) · [重定向到钱包](#将创作者费重定向到特定钱包) · [Agent PDA](#agent-发行自动-pda-路由) · [与首次购买组合](#将创作者费与首次购买组合) · [检查累积费用(曲线)](#检查累积的创作者费) · [通过 API 认领](#通过-metaplex-api-认领推荐) · [无奖励情况](#处理无奖励情况) · [活跃曲线期间认领](#在活跃曲线期间认领创作者费) · [检查 Raydium 费用](#检查累积的-raydium-创作者费) · [从 Raydium 收集](#步骤-1--从-raydium-cpmm-池收集费用) · [毕业后认领](#步骤-2--认领费用到创作者钱包)
+**跳转至:** [发行时配置](#发行时配置创作者费) · [重定向到钱包](#将创作者费重定向到特定钱包) · [Agent PDA](#agent-发行自动-pda-路由) · [与首次购买组合](#将创作者费与首次购买组合) · [检查累积费用(曲线)](#检查累积的创作者费) · [通过 API 认领](#通过-metaplex-api-认领推荐) · [无奖励情况](#handling-the-no-rewards-case) · [活跃曲线期间认领](#在活跃曲线期间认领创作者费) · [检查 Raydium 费用](#检查累积的-raydium-创作者费) · [从 Raydium 收集](#步骤-1--从-raydium-cpmm-池收集费用) · [毕业后认领](#步骤-2--认领费用到创作者钱包)
1. 调用 `createAndRegisterLaunch` 时在 `launch` 对象中设置 `creatorFeeWallet`
2. 发行后读取 `bucket.creatorFeeAccrued` 监控累积费用
@@ -209,9 +209,9 @@ console.log('Creator fee wallet:', creatorFeeWallet?.toString() ?? 'none configu
| `network` | `SvmNetwork` | 否 | `'solana-mainnet'`(默认)或 `'solana-devnet'`。 |
| `payer` | `PublicKey \| string` | 否 | 承担返回交易的费用和租金的钱包。默认为 `wallet`。当创作者费钱包不持有 SOL 时使用——例如 agent PDA 或冷钱包。 |
-SDK 返回反序列化的 Umi `Transaction` 以及构建它们时使用的区块哈希。始终使用返回的区块哈希确认每个交易——不要用新获取的区块哈希替换它,否则会出现确认竞争。完整的 HTTP schema 请参阅 [Claim Creator Rewards (API)](/smart-contracts/genesis/integration-apis/claim-creator-rewards)。
+SDK 返回反序列化的 Umi `Transaction` 以及构建它们时使用的区块哈希。始终使用返回的区块哈希确认每个交易——不要用新获取的区块哈希替换它,否则会出现确认竞争。完整的 HTTP schema 请参阅 [Claim Creator Rewards (API)](/zh/api/claim-creator-rewards)。
-### 处理无奖励情况
+### 处理无奖励情况 {% #handling-the-no-rewards-case %}
当钱包没有可认领内容时,端点返回 HTTP `400` 和 `{ "error": { "message": "No rewards available to claim" } }`——它**不会**返回带有空 `transactions` 数组的成功响应。SDK 将其呈现为 `GenesisApiError`,因此调用方必须捕获错误并基于 `err.message`(或 `err.statusCode === 400`)进行分支,而非让错误向上传播。
@@ -461,7 +461,7 @@ console.log('Raydium creator fees collected and claimed to:', creatorFeeWallet.t
### 没有可认领的奖励时会发生什么?
-`claimCreatorRewards` 端点返回 HTTP `400` 和 `{"error":{"message":"No rewards available to claim"}}`。SDK 将其呈现为 `GenesisApiError`。将其视为非异常结果——检查 `err.message`(或 `err.statusCode === 400`)并进行分支处理,而非让错误向上传播。请参阅[处理无奖励情况](#处理无奖励情况)。
+`claimCreatorRewards` 端点返回 HTTP `400` 和 `{"error":{"message":"No rewards available to claim"}}`。SDK 将其呈现为 `GenesisApiError`。将其视为非异常结果——检查 `err.message`(或 `err.statusCode === 400`)并进行分支处理,而非让错误向上传播。请参阅[处理无奖励情况](#handling-the-no-rewards-case)。
### 可选的 `payer` 字段有什么用?
diff --git a/src/pages/zh/smart-contracts/genesis/getting-started.md b/src/pages/zh/smart-contracts/genesis/getting-started.md
index 7e9debac..160a780d 100644
--- a/src/pages/zh/smart-contracts/genesis/getting-started.md
+++ b/src/pages/zh/smart-contracts/genesis/getting-started.md
@@ -257,7 +257,7 @@ Finalize 后,发行活动根据您的 Bucket 时间条件激活。当前时间
| **Genesis Account** | 协调发行并持有代币的 PDA |
| **Inflow Bucket** | 从用户处收集存款的 Bucket |
| **Outflow Bucket** | 通过结束行为接收资金的 Bucket |
-| **发行类型** | 发行的底层机制(`launchpool` 或 `presale`)。创建后由后端 crank 追溯设置在链上。可通过 [SDK](/zh/smart-contracts/genesis/sdk/javascript#genesis-account) 或 [REST API](/zh/smart-contracts/genesis/integration-apis) 查询 |
+| **发行类型** | 发行的底层机制(`launchpool` 或 `presale`)。创建后由后端 crank 追溯设置在链上。可通过 [SDK](/zh/smart-contracts/genesis/sdk/javascript#genesis-account) 或 [REST API](/zh/api) 查询 |
| **Finalize** | 锁定配置并激活发行 |
| **Time Condition** | 控制 Bucket 阶段的 Unix 时间戳 |
| **End Behavior** | 存款期结束时的自动操作 |
diff --git a/src/pages/zh/smart-contracts/genesis/index.md b/src/pages/zh/smart-contracts/genesis/index.md
index 289e113c..8f138e9e 100644
--- a/src/pages/zh/smart-contracts/genesis/index.md
+++ b/src/pages/zh/smart-contracts/genesis/index.md
@@ -89,7 +89,7 @@ Genesis 支持三种可以组合使用的机制:
| **Launch Pool** (`launchpool`) | 通过存款窗口实现按比例分配与价格发现 | 公平发射、社区代币、众筹 |
| **Presale** (`presale`) | 以预定价格进行的固定价格代币销售 | 代币销售、已知估值 |
-发行类型在创建后由后端 crank 记录到 [Genesis Account](#genesis-account) 的链上数据中。交易者和聚合器可以通过 [JavaScript SDK](/smart-contracts/genesis/sdk/javascript#genesis-account)(`fetchGenesisAccountV2`)或 [Integration APIs](/smart-contracts/genesis/integration-apis)(REST 响应中的 `type` 字段)以编程方式查询类型。
+发行类型在创建后由后端 crank 记录到 [Genesis Account](#genesis-account) 的链上数据中。交易者和聚合器可以通过 [JavaScript SDK](/zh/smart-contracts/genesis/sdk/javascript#genesis-account)(`fetchGenesisAccountV2`)或 [Metaplex API](/zh/api)(REST 响应中的 `type` 字段)以编程方式查询类型。
### Genesis Account
diff --git a/src/pages/zh/smart-contracts/genesis/integration-apis/index.md b/src/pages/zh/smart-contracts/genesis/integration-apis/index.md
deleted file mode 100644
index 2fcb0b48..00000000
--- a/src/pages/zh/smart-contracts/genesis/integration-apis/index.md
+++ /dev/null
@@ -1,219 +0,0 @@
----
-title: 集成 API
-metaTitle: Genesis - 集成 API | 发行数据 | Metaplex
-description: 通过 HTTP REST 端点和链上 SDK 方法访问 Genesis 发行数据。无需认证的公开 API。
-created: '01-15-2025'
-updated: '02-26-2026'
-keywords:
- - Genesis API
- - integration API
- - launch data
- - token queries
- - on-chain state
-about:
- - API integration
- - Data aggregation
- - Launch information
-proficiencyLevel: Intermediate
-programmingLanguage:
- - JavaScript
- - TypeScript
- - Rust
----
-
-Genesis 集成 API 允许聚合器和应用程序查询 Genesis 代币发行的发行数据。通过 REST 端点访问元数据,或使用 SDK 获取实时链上状态。{% .lead %}
-
-## Summary
-
-Genesis 集成 API 提供对 Solana 上 Genesis 代币发行数据的只读访问。
-
-- 通过 Genesis 地址、代币铸造地址查询或浏览所有活跃发行
-- `https://api.metaplex.com/v1` 的公开 REST API — 无需认证
-- 返回发行元数据、代币信息、网站和社交链接
-- 通过 `network` 查询参数支持 Solana 主网(默认)和开发网
-
-## 基础 URL
-
-```
-https://api.metaplex.com/v1
-```
-
-## 网络选择
-
-默认情况下,API 返回 Solana 主网的数据。要查询开发网发行,请添加 `network` 查询参数:
-
-```
-?network=solana-devnet
-```
-
-**示例:**
-
-```bash
-# Mainnet (default)
-curl https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN
-
-# Devnet
-curl "https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN?network=solana-devnet"
-```
-
-## 认证
-
-无需认证。API 公开访问,有速率限制。
-
-## 可用端点
-
-| 方法 | 端点 | 描述 |
-|--------|----------|-------------|
-| `GET` | [`/launches/{genesis_pubkey}`](/smart-contracts/genesis/integration-apis/get-launch) | 通过 Genesis 地址获取发行数据 |
-| `GET` | [`/tokens/{mint}`](/smart-contracts/genesis/integration-apis/get-launches-by-token) | 获取代币铸造的所有发行 |
-| `GET` | [`/launches`](/smart-contracts/genesis/integration-apis/list-launches) | 使用过滤器获取发行列表 |
-| `GET` | [`/launches?spotlight=true`](/smart-contracts/genesis/integration-apis/get-spotlight) | 获取精选推荐发行 |
-| `POST` | [`/launches/create`](/smart-contracts/genesis/integration-apis/create-launch) | 为新发行构建链上交易 |
-| `POST` | [`/launches/register`](/smart-contracts/genesis/integration-apis/register) | 注册已确认的发行以进行展示 |
-| `CHAIN` | [`fetchBucketState`](/smart-contracts/genesis/integration-apis/fetch-bucket-state) | 从链上获取 bucket 状态 |
-| `CHAIN` | [`fetchDepositState`](/smart-contracts/genesis/integration-apis/fetch-deposit-state) | 从链上获取存款状态 |
-
-{% callout type="note" %}
-`POST` 端点(`/launches/create` 和 `/launches/register`)配合使用以创建新的代币发行。对于大多数用例,[SDK API 客户端](/smart-contracts/genesis/sdk/api-client)提供了更简洁的接口,它封装了这两个端点。
-{% /callout %}
-
-## 错误码
-
-| 状态码 | 描述 |
-| --- | --- |
-| `400` | 错误请求 - 无效参数 |
-| `404` | 未找到发行或代币 |
-| `429` | 超出速率限制 |
-| `500` | 内部服务器错误 |
-
-错误响应格式:
-
-```json
-{
- "error": {
- "message": "Launch not found"
- }
-}
-```
-
-## Notes
-
-- API 有速率限制。如果收到 `429` 响应,请降低请求频率。
-- 所有日期字段(`startTime`、`endTime`、`graduatedAt`、`lastActivityAt`)以 ISO 8601 字符串返回。
-- 默认网络为 `solana-mainnet`。可通过 `?network=solana-devnet` 获取开发网数据。
-- 对于 `POST` 端点,建议使用 [SDK API 客户端](/smart-contracts/genesis/sdk/api-client),它封装了 `/launches/create` 和 `/launches/register`。
-
-## 共享类型
-
-### TypeScript
-
-```ts
-interface Launch {
- launchPage: string;
- mechanic: string;
- genesisAddress: string;
- spotlight: boolean;
- startTime: string;
- endTime: string;
- status: 'upcoming' | 'live' | 'graduated' | 'ended';
- heroUrl: string | null;
- graduatedAt: string | null;
- lastActivityAt: string;
- type: 'launchpool' | 'presale';
-}
-
-interface BaseToken {
- address: string;
- name: string;
- symbol: string;
- image: string;
- description: string;
-}
-
-interface Socials {
- x?: string;
- telegram?: string;
- discord?: string;
-}
-
-interface ErrorResponse {
- error: {
- message: string;
- };
-}
-```
-
-### Rust
-
-```rust
-use serde::{Deserialize, Serialize};
-
-#[derive(Debug, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct Launch {
- pub launch_page: String,
- pub mechanic: String,
- pub genesis_address: String,
- pub spotlight: bool,
- pub start_time: String,
- pub end_time: String,
- pub status: String,
- pub hero_url: Option,
- pub graduated_at: Option,
- pub last_activity_at: String,
- #[serde(rename = "type")]
- pub launch_type: String,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct BaseToken {
- pub address: String,
- pub name: String,
- pub symbol: String,
- pub image: String,
- pub description: String,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct Socials {
- pub x: Option,
- pub telegram: Option,
- pub discord: Option,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct ApiError {
- pub message: String,
-}
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct ErrorResponse {
- pub error: ApiError,
-}
-```
-
-{% callout type="note" %}
-将以下依赖项添加到您的 `Cargo.toml`:
-```toml
-[dependencies]
-reqwest = { version = "0.12", features = ["json"] }
-tokio = { version = "1", features = ["full"] }
-serde = { version = "1", features = ["derive"] }
-```
-{% /callout %}
-
-## Glossary
-
-| 术语 | 定义 |
-|------|------------|
-| **Genesis Address** | 唯一标识特定发行活动的 PDA(Program Derived Address) |
-| **Base Token** | 通过铸造地址标识的待发行代币 |
-| **Launch Page** | 用户可以参与发行的 URL |
-| **Mechanic** | 发行使用的分配机制(例如 `launchpoolV2`、`presaleV2`、`auction`) |
-| **Launch Type** | 发行的底层机制:`launchpool` 或 `presale` |
-| **Spotlight** | 平台策划的精选发行标志 |
-| **Status** | 发行的当前状态:`upcoming`、`live`、`graduated` 或 `ended` |
-| **Socials** | 与代币关联的社交媒体链接(X/Twitter、Telegram、Discord) |
-| **LaunchData** | 包含 `launch`、`baseToken`、`website` 和 `socials` 的响应包装器 |
-| **TokenData** | 代币查询的响应包装器,包含 `launches` 数组以及 `baseToken`、`website` 和 `socials` |
diff --git a/src/pages/zh/smart-contracts/genesis/launch-pool.md b/src/pages/zh/smart-contracts/genesis/launch-pool.md
index 521c27d1..83e3a8dd 100644
--- a/src/pages/zh/smart-contracts/genesis/launch-pool.md
+++ b/src/pages/zh/smart-contracts/genesis/launch-pool.md
@@ -467,4 +467,4 @@ Launch Pool 根据存款有机发现价格,按比例分配。Presale 则是预
- [Presale](/zh/smart-contracts/genesis/presale) - 固定价格代币销售
- [Uniform Price Auction](/zh/smart-contracts/genesis/uniform-price-auction) - 基于出价的代币发售
- [发行代币](/zh/tokens/launch-token) - 端到端代币发行指南
-- [Integration APIs](/zh/smart-contracts/genesis/integration-apis) - 通过 API 查询发射和代币销售数据
+- [Metaplex API](/zh/api) - 通过 API 查询发射和代币销售数据
diff --git a/src/pages/zh/smart-contracts/genesis/sdk/javascript.md b/src/pages/zh/smart-contracts/genesis/sdk/javascript.md
index 1d05fb72..02355572 100644
--- a/src/pages/zh/smart-contracts/genesis/sdk/javascript.md
+++ b/src/pages/zh/smart-contracts/genesis/sdk/javascript.md
@@ -322,7 +322,7 @@ if (account2.data.launchType === LaunchType.LaunchPoolV1) {
**Genesis 账户字段:** `authority`、`baseMint`、`quoteMint`、`totalSupplyBaseToken`、`totalAllocatedSupplyBaseToken`、`totalProceedsQuoteToken`、`fundingMode`、`launchType`、`bucketCount`、`finalized`
-### GPA 构建器 — 按发行类型查询
+### GPA 构建器 — 按发行类型查询 {% #gpa-builder-query-by-launch-type %}
使用 `getGenesisAccountV2GpaBuilder()` 查询按链上字段过滤的所有 Genesis 账户。这使用 Solana 的字节级过滤器 `getProgramAccounts` RPC 方法进行高效查找。
@@ -389,7 +389,7 @@ enum LaunchType {
}
```
-[Integration APIs](/zh/smart-contracts/genesis/integration-apis) 以字符串形式返回(`'launchpool'`),而链上 SDK 使用上述数字枚举。
+[Metaplex API](/zh/api) 以字符串形式返回(`'launchpool'`),而链上 SDK 使用上述数字枚举。
### GenesisAccountV2
@@ -472,7 +472,7 @@ Umi 是 Metaplex 的 Solana JavaScript 框架。它提供了统一的接口来
`fetch` 在账户不存在时会抛出错误。`safeFetch` 则返回 `null`,适用于检查账户是否存在。
### 如何获取代币的发行类型?
-使用代币的铸币地址通过 `fetchGenesisAccountV2FromSeeds()` 获取 `GenesisAccountV2` 账户。`launchType` 字段返回 `0`(未初始化)或 `3`(LaunchPoolV1)。要查询特定类型的所有发行,请使用 [GPA 构建器](#gpa-构建器--按发行类型查询)。或者,[Integration APIs](/zh/smart-contracts/genesis/integration-apis) 在 REST 响应中以字符串形式返回发行类型。
+使用代币的铸币地址通过 `fetchGenesisAccountV2FromSeeds()` 获取 `GenesisAccountV2` 账户。`launchType` 字段返回 `0`(未初始化)或 `3`(LaunchPoolV1)。要查询特定类型的所有发行,请使用 [GPA 构建器](#gpa-builder-query-by-launch-type)。或者,[Metaplex API](/zh/api) 在 REST 响应中以字符串形式返回发行类型。
### 如何处理交易错误?
将 `sendAndConfirm` 调用包装在 try/catch 块中。检查错误消息以了解具体的失败原因。
diff --git a/src/pages/zh/tokens/launch-token.md b/src/pages/zh/tokens/launch-token.md
index fe18e242..f5512b39 100644
--- a/src/pages/zh/tokens/launch-token.md
+++ b/src/pages/zh/tokens/launch-token.md
@@ -176,4 +176,4 @@ userTokens = (userDeposit / totalDeposits) * totalTokenSupply
- [Genesis 概述](/zh/smart-contracts/genesis) - 了解有关 Solana 代币发射台的更多信息
- [Launch Pool](/zh/smart-contracts/genesis/launch-pool) - 公平发射详细文档
- [预售](/zh/smart-contracts/genesis/presale) - 以固定价格进行代币预售
-- [Integration APIs](/zh/smart-contracts/genesis/integration-apis) - 通过 API 查询发行和代币销售数据
+- [Metaplex API](/zh/api) - 通过 API 查询发行和代币销售数据