Integration APIs
Integration APIs
Last updated February 26, 2026
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.
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
networkquery 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:
# 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} | Get launch data by genesis address |
GET | /tokens/{mint} | Get all launches for a token mint |
GET | /launches | List launches with optional filters |
GET | /launches?spotlight=true | Get featured spotlight launches |
POST | /launches/create | Build on-chain transactions for a new launch |
POST | /launches/register | Register a confirmed launch for listing |
CHAIN | fetchBucketState | Fetch bucket state from on-chain |
CHAIN | fetchDepositState | Fetch deposit state from on-chain |
The POST endpoints (/launches/create and /launches/register) are used together to create new token launches. For most use cases, the SDK API Client provides a simpler interface that wraps both endpoints.
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:
{
"error": {
"message": "Launch not found"
}
}
Notes
- The API is rate limited. If you receive a
429response, 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
POSTendpoints, the SDK API Client is recommended as it wraps both/launches/createand/launches/register.
Shared Types
TypeScript
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: 'project' | 'memecoin' | 'custom';
}
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
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<String>,
pub graduated_at: Option<String>,
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<String>,
pub telegram: Option<String>,
pub discord: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ApiError {
pub message: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ErrorResponse {
pub error: ApiError,
}
Add these dependencies to your Cargo.toml:
[dependencies]
reqwest = { version = "0.12", features = ["json"] }
tokio = { version = "1", features = ["full"] }
serde = { version = "1", features = ["derive"] }
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 category of the launch: project, memecoin, or custom |
| 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 |
