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 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:

# 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

MethodEndpointDescription
GET/launches/{genesis_pubkey}Get launch data by genesis address
GET/tokens/{mint}Get all launches for a token mint
GET/launchesList launches with optional filters
GET/launches?spotlight=trueGet featured spotlight launches
POST/launches/createBuild on-chain transactions for a new launch
POST/launches/registerRegister a confirmed launch for listing
CHAINfetchBucketStateFetch bucket state from on-chain
CHAINfetchDepositStateFetch 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

CodeDescription
400Bad request - invalid parameters
404Launch or token not found
429Rate limit exceeded
500Internal server error

Error response format:

{
"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 is recommended as it wraps both /launches/create and /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

TermDefinition
Genesis AddressA PDA (Program Derived Address) that uniquely identifies a specific launch campaign
Base TokenThe token being launched, identified by its mint address
Launch PageThe URL where users can participate in a launch
MechanicThe allocation mechanism used for the launch (e.g., launchpoolV2, presaleV2, auction)
Launch TypeThe category of the launch: project, memecoin, or custom
SpotlightA platform-curated flag indicating a featured launch
StatusThe current state of a launch: upcoming, live, graduated, or ended
SocialsSocial media links (X/Twitter, Telegram, Discord) associated with a token
LaunchDataThe response wrapper containing launch, baseToken, website, and socials
TokenDataThe response wrapper for token queries, containing a launches array plus baseToken, website, and socials