GraveMarket SDK — method reference
@solanadeads/gravemarket · version 0.3.0 · install with npm i @solanadeads/gravemarket
Every public method in this version, with its signature and types. For how to put them together, start with the GraveMarket SDK guide.
import { GravemarketClient } from "@solanadeads/gravemarket";
const client = new GravemarketClient();Contents
client.collections— 18 methodsclient.creators— 3 methodsclient.items— 8 methodsclient.orders— 5 methodsclient.activity— 2 methodsclient.search— 2 methodsclient.analytics— 5 methodsclient.recommendations— 1 methodclient.platform— 9 methodsclient.affiliates— 2 methodsclient.config— 1 methodclient.smartMoney— 3 methodsclient.walletAnalytics— 2 methodsclient.trust— 2 methods- Functions — 13
- Classes — 5
- Types — 158
client.collections
collections.meta()
meta(): Promise<CollectionMeta>;collections.launches()
launches(query?: LaunchesQuery): Promise<CollectionLaunchesResponse>;collections.sparklines()
sparklines(query: SparklinesQuery): Promise<CollectionSparklines>;collections.list()
list(query?: ListCollectionsQuery): Promise<CollectionsListResponse>;collections.get()
get(id: string): Promise<CollectionDetail>;collections.items()
items(id: string, query?: CollectionItemsQuery): Promise<CollectionItemsResponse>;collections.activity()
activity(id: string, query?: CollectionActivityQuery): Promise<CursorPaginatedResponse<ActivityEvent>>;collections.stats()
stats(id: string, query?: CollectionStatsQuery): Promise<CollectionStatsResponse>;collections.traits()
traits(id: string): Promise<CollectionTraitsResponse>;collections.holders()
holders(id: string, query?: HoldersQuery): Promise<CollectionHoldersResponse>;collections.offers()
offers(id: string, query?: {
limit?: number;
}): Promise<CollectionOffersResponse>;collections.traitFloors()
traitFloors(id: string): Promise<CollectionTraitFloorsResponse>;collections.traitPricingSummary()
traitPricingSummary(id: string): Promise<CollectionTraitPricingSummary>;collections.crossChain()
crossChain(id: string): Promise<CollectionCrossChainResponse>;collections.analytics()
analytics(id: string, query?: {
period?: string;
}): Promise<CollectionAnalyticsResponse>;collections.floor()
floor(id: string): Promise<number | null>;collections.listAll()
listAll(query?: ListCollectionsQuery): AsyncGenerator<import("../index.js").CollectionSummary[], void, void>;collections.activityAll()
activityAll(id: string, query?: CollectionActivityQuery): AsyncGenerator<ActivityEvent[], void, void>;client.creators
Public creator pages — brand pages (e.g. /creators/buxdao) grouping multiple collections under one creator. Read-only; only published pages are visible.
creators.list()
Paginated list of published creator pages.
list(query?: CreatorPagesQuery): Promise<CreatorPagesResponse>;creators.get()
A creator page (by slug) with its member collections and stats.
get(slug: string): Promise<CreatorPageResponse>;creators.byCollection()
The published creator page housing a collection (UUID), or null.
byCollection(collectionId: string): Promise<CreatorPageByCollectionResponse>;client.items
items.get()
Fetch an item by Solana mint address or EVM contract:token_id.
get(id: string): Promise<MarketItem>;items.activity()
activity(id: string, query?: ItemActivityQuery): Promise<ItemActivityResponse<Record<string, unknown>>>;items.offers()
offers(id: string, query?: ItemOffersQuery): Promise<ItemOrderListResponse<MarketOrder>>;items.listings()
listings(id: string, query?: ItemListingsQuery): Promise<ItemOrderListResponse<MarketOrder>>;items.traits()
traits(id: string): Promise<ItemTraitsResponse>;items.neighbors()
neighbors(id: string, query?: ItemNeighborsQuery): Promise<ItemNeighborsResponse>;items.priceHistory()
priceHistory(id: string, query?: ItemPriceHistoryQuery): Promise<PriceHistoryResponse>;items.rarity()
Convenience wrapper for rarity rank/score/tier. Resolves to { rank, score, tier, total_supply }.
rarity(id: string): Promise<ItemRarity>;client.orders
orders.aggregatedListings()
aggregatedListings(collectionId: string, query?: AggregatedListingsQuery): Promise<AggregatedListingsResponse>;orders.bestPrice()
bestPrice(tokenAddress: string, query: {
chain: string;
}): Promise<BestPriceResponse>;orders.aggregatedFloor()
aggregatedFloor(collectionId: string): Promise<AggregatedFloorResponse>;orders.offersSummary()
offersSummary(collectionId: string): Promise<OffersSummaryResponse>;orders.onchainStatus()
onchainStatus(assetId: string): Promise<OnchainStatusResponse>;client.activity
activity.list()
list(query?: ActivityQuery): Promise<CursorPaginatedResponse<ActivityEvent>>;activity.listAll()
listAll(query?: ActivityQuery): AsyncGenerator<ActivityEvent[], void, void>;client.search
search.query()
query(query: SearchQuery): Promise<SearchResponse>;search.traits()
traits(query: TraitSearchQuery): Promise<TraitSearchResponse>;client.analytics
analytics.platform()
platform(query?: AnalyticsQuery): Promise<PlatformAnalyticsResponse>;analytics.collection()
collection(id: string, query?: AnalyticsQuery): Promise<Record<string, unknown>>;analytics.compare()
compare(query: CompareCollectionsQuery): Promise<CompareCollectionsResponse>;analytics.heatmap()
heatmap(query: LiquidityHeatmapQuery): Promise<LiquidityHeatmapResponse>;analytics.flow()
flow(collectionId: string, query?: CollectionFlowQuery): Promise<CollectionFlowResponse>;client.recommendations
recommendations.similar()
similar(itemId: string, query?: SimilarItemsQuery): Promise<SimilarItemsResponse>;client.platform
platform.tokenPrices()
tokenPrices(query?: TokenPricesQuery): Promise<TokenPricesResponse>;platform.price()
price(query: PriceQuery): Promise<PricesResponse>;platform.fees()
fees(): Promise<FeesResponse>;platform.fee()
fee(feeType: string): Promise<Fee>;platform.chains()
chains(): Promise<ChainsResponse>;platform.branding()
branding(): Promise<BrandingResponse>;platform.analyticsConfig()
analyticsConfig(): Promise<AnalyticsConfigResponse>;platform.status()
status(): Promise<PlatformStatusResponse>;platform.tokenPrice()
Convenience: look up a single token's USD price by symbol.
tokenPrice(symbol: string): Promise<number | null>;client.affiliates
affiliates.config()
config(): Promise<AffiliateConfigResponse>;affiliates.leaderboard()
leaderboard(query?: AffiliateLeaderboardQuery): Promise<AffiliateLeaderboardResponse>;client.config
config.client()
client(): Promise<ClientConfigResponse>;client.smartMoney
smartMoney.feed()
feed(query?: SmartMoneyFeedQuery): Promise<SmartMoneyFeedResponse>;smartMoney.leaderboard()
leaderboard(query?: SmartMoneyLeaderboardQuery): Promise<SmartMoneyLeaderboardResponse>;smartMoney.inflows()
inflows(query?: SmartMoneyInflowsQuery): Promise<SmartMoneyInflowsResponse>;client.walletAnalytics
walletAnalytics.pnl()
pnl(address: string, query?: WalletPnLQuery): Promise<WalletPnLResponse>;walletAnalytics.pnlLots()
pnlLots(address: string, query?: WalletPnLLotsQuery): Promise<WalletPnLLotsResponse>;client.trust
trust.collections()
collections(query?: TrustCollectionsQuery): Promise<TrustCollectionsResponse>;trust.wallet()
wallet(address: string): Promise<TrustWalletResponse>;Functions
createHttp
export declare function createHttp(opts: HttpOptions): Http;isUuid
export declare function isUuid(s: string): boolean;looksLikeAddress
export declare function looksLikeAddress(s: string): boolean;paginate
export declare function paginate<T>(fetchPage: (cursor: string | null) => Promise<PaginatedResponse<T>>): AsyncGenerator<T[], void, void>;sanitizeResponse
export declare function sanitizeResponse<T>(input: T): T;validateAffiliateCode
Affiliate code — alphanumeric/_/-.
export declare function validateAffiliateCode(code: unknown): string;validateChain
Chain slug like "solana-mainnet".
export declare function validateChain(chain: unknown): string;validateCollectionIdentifier
Collection identifier: slug or on-chain contract address.
export declare function validateCollectionIdentifier(id: unknown): string;validateFeeType
Fee-type slug like "marketplace_v1".
export declare function validateFeeType(feeType: unknown): string;validateItemIdentifier
Item identifier: Solana mint, EVM contract:tokenId, or numeric token id.
export declare function validateItemIdentifier(id: unknown): string;validateLimit
Clamp a numeric limit to [1, max].
export declare function validateLimit(limit: unknown, max: number, fallback: number): number;validateTokenSymbol
Token-symbol shape: 1-20 alphanumerics.
export declare function validateTokenSymbol(symbol: unknown): string;validateWalletAddress
Wallet address (Solana / EVM / Sui).
export declare function validateWalletAddress(addr: unknown): string;Classes
GraveyardApiError
export declare class GraveyardApiError extends Error {
readonly code: string;
readonly status: number;
readonly details?: unknown;
constructor(code: string, message: string, status: number, details?: unknown);
}GraveyardNetworkError
export declare class GraveyardNetworkError extends GraveyardApiError {
constructor(message: string, cause?: unknown);
}GraveyardRateLimitError
Thrown when the API responds with HTTP 429. Exposes retryAfterMs if the server set a Retry-After header. Falls back to limit / remaining from X-RateLimit-* headers when available.
export declare class GraveyardRateLimitError extends GraveyardApiError {
readonly retryAfterMs?: number;
readonly limit?: number;
readonly remaining?: number;
constructor(message: string, opts?: {
retryAfterMs?: number;
limit?: number;
remaining?: number;
});
}GraveyardTimeoutError
export declare class GraveyardTimeoutError extends GraveyardApiError {
readonly timeoutMs: number;
constructor(timeoutMs: number);
}GraveyardValidationError
export declare class GraveyardValidationError extends GraveyardApiError {
constructor(message: string);
}Types
ActivityEvent
export interface ActivityEvent {
chain: Chain;
event_type: EventType;
from_address: string | null;
to_address: string | null;
price: number | null;
currency: string | null;
tx_hash: string | null;
event_time: string;
marketplace?: string | null;
market_collections?: {
name: string | null;
slug: string | null;
image_url: string | null;
custom_image_url: string | null;
} | null;
market_items?: {
name: string | null;
image_url: string | null;
thumbnail_url: string | null;
listing_price: number | null;
listing_currency: string | null;
} | null;
}ActivityQuery
export interface ActivityQuery extends CursorPaginationQuery {
chain?: Chain;
type?: EventType | string;
wallet?: string;
mint?: string;
}AffiliateConfigResponse
export interface AffiliateConfigResponse {
is_enabled: boolean;
commission_percent: number;
commission_bps: number;
show_leaderboard: boolean;
leaderboard_size: number;
}AffiliateLeaderboardEntry
export interface AffiliateLeaderboardEntry {
affiliate_code: string;
total_referred_volume: number;
total_referred_sales: number;
total_earned_usd: number;
}AffiliateLeaderboardQuery
export interface AffiliateLeaderboardQuery {
limit?: number;
}AffiliateLeaderboardResponse
export interface AffiliateLeaderboardResponse {
leaderboard: AffiliateLeaderboardEntry[];
}AggregatedFloorBest
export interface AggregatedFloorBest {
price: number;
currency: string;
marketplace: string;
token_address: string;
seller: string;
source: 'live_api' | 'database';
}AggregatedFloorResponse
export interface AggregatedFloorResponse {
best: AggregatedFloorBest | null;
external_tracking_enabled: boolean;
}AggregatedListingsQuery
export interface AggregatedListingsQuery {
limit?: number;
offset?: number;
sort?: 'price_asc' | 'price_desc' | 'newest';
marketplace?: string;
}AggregatedListingsResponse
export interface AggregatedListingsResponse {
listings: AggregatedListingsRow[];
total: number;
marketplace_counts: Record<string, number>;
offset: number;
limit: number;
sort: 'price_asc' | 'price_desc' | 'newest' | string;
}AggregatedListingsRow
export interface AggregatedListingsRow {
chain: Chain;
maker: string;
token_address: string;
token_id: string;
price: number;
currency: string;
price_usd: number | null;
expiration_at: string | null;
protocol: string;
source_marketplace: string;
created_at: string;
updated_at: string;
market_items: {
name: string | null;
image_url: string | null;
thumbnail_url: string | null;
} | null;
}AnalyticsConfigResponse
export interface AnalyticsConfigResponse {
analytics_enabled: boolean;
}AnalyticsQuery
export interface AnalyticsQuery {
period?: '24h' | '7d' | '30d' | '90d' | '1y' | 'all';
/** Reported (raw) vs Adjusted (wash-filtered) volume mode. Default: 'adjusted'. */
volume?: 'reported' | 'adjusted';
}ApiEnvelope
export type ApiEnvelope<T> = ApiResponse<T> | ApiErrorBody;ApiErrorBody
export interface ApiErrorBody {
success: false;
error: {
code: string;
message: string;
};
}ApiResponse
export interface ApiResponse<T> {
success: true;
data: T;
}BestPriceListing
export interface BestPriceListing {
price: number;
currency: string;
source_marketplace: string;
maker: string;
protocol: string;
protocol_data: unknown | null;
expiration_at: string | null;
}BestPriceResponse
export interface BestPriceResponse {
best: BestPriceListing | null;
all_listings: BestPriceListing[];
count: number;
token_address?: string;
chain?: Chain;
}BrandingResponse
export interface BrandingResponse {
branding: Record<string, unknown>;
}Chain
export type Chain = string;ChainInfo
export interface ChainInfo {
id: string;
name: string;
shortName: string;
family: string;
chainId: number | string;
nativeCurrency: string;
nativeCurrencyDecimals: number;
coingeckoId: string;
explorerUrl: string;
explorerTxUrl: string;
explorerAddressUrl: string;
logo: string | null;
color: string | null;
}ChainsResponse
export interface ChainsResponse {
chains: ChainInfo[];
}ClientConfigResponse
export interface ClientConfigResponse {
ios_external_marketplace_enabled: boolean;
ios_external_marketplace_min_app_version: string | null;
ios_external_marketplace_flows: string[] | null;
}CollectionActivityQuery
export interface CollectionActivityQuery extends CursorPaginationQuery {
type?: string;
wallet?: string;
mint?: string;
}CollectionAnalyticsDaily
export interface CollectionAnalyticsDaily {
date: string;
sales: number;
volume: number;
avg_price: number | null;
floor: number | null;
listed_count: number | null;
holder_count: number | null;
new_listings: number | null;
unique_sellers: number | null;
unique_buyers: number | null;
[key: string]: unknown;
}CollectionAnalyticsResponse
export interface CollectionAnalyticsResponse {
stats: CollectionAnalyticsStats | null;
daily: CollectionAnalyticsDaily[];
holder_history: HolderHistoryRow[];
wash_trade_count_7d: number;
period: string;
period_stats: {
avg_price: number | null;
unique_buyers: number;
unique_sellers: number;
};
deltas: {
floor: number | null;
volume: number | null;
sales: number | null;
listed: number | null;
holders: number | null;
top_bid: number | null;
market_cap: number | null;
} | null;
}CollectionAnalyticsStats
export interface CollectionAnalyticsStats {
floor_price: number | null;
floor_currency: string | null;
volume_24h: number | null;
volume_7d: number | null;
volume_30d: number | null;
sales_24h: number | null;
sales_7d: number | null;
sales_30d: number | null;
top_bid_24h: number | null;
top_bid_7d: number | null;
top_bid_30d: number | null;
owner_count: number | null;
listed_count: number | null;
market_cap: number | null;
updated_at: string;
created_at: string;
[key: string]: unknown;
}CollectionCrossChainResponse
export interface CollectionCrossChainResponse {
mappings: CrossChainMapping[];
collections: CrossChainCollection[];
}CollectionDetail
export interface CollectionDetail extends CollectionSummary {
description: string | null;
banner_url: string | null;
royalty_bps: number | null;
royalty_recipients: Array<{
address: string;
share: number;
}> | null;
categories: string[] | null;
created_at: string;
market_collection_stats: MarketCollectionStatsRow | null;
}CollectionFlowParty
export interface CollectionFlowParty {
address: string;
volume_usd: number;
}CollectionFlowQuery
export interface CollectionFlowQuery {
period?: '7d' | '30d';
}CollectionFlowResponse
export interface CollectionFlowResponse {
collection_id: string;
period: string;
net_flow_usd: number;
total_buy_volume_usd: number;
total_sell_volume_usd: number;
buyer_count: number;
seller_count: number;
new_buyer_count: number;
returning_buyer_count: number;
hold_time_histogram: Record<string, number>;
top_buyers: CollectionFlowParty[];
top_sellers: CollectionFlowParty[];
}CollectionHolder
Top holders for a collection — wallet addresses only, no profile join.
export interface CollectionHolder {
address: string;
count: number;
}CollectionHoldersResponse
export interface CollectionHoldersResponse {
holders: CollectionHolder[];
unique_holders: number;
cursor: string | null;
hasMore: boolean;
}CollectionItemsQuery
export interface CollectionItemsQuery extends CursorPaginationQuery {
sort?: 'price_asc' | 'price_desc' | 'rarity_asc' | 'rarity_desc' | 'token_id_asc' | 'token_id_desc' | 'recently_listed';
listed?: boolean;
min_price?: number;
max_price?: number;
marketplace?: string;
owner?: string;
traits?: string;
rarity_tier?: string;
with_offers?: boolean;
search?: string;
}CollectionItemsResponse
export interface CollectionItemsResponse extends CursorPaginatedResponse<MarketItem> {
marketplace_counts: Record<string, number>;
total?: number;
}CollectionLaunch
export interface CollectionLaunch {
name: string;
slug: string;
chain: Chain;
contract_address: string | null;
image_url: string | null;
custom_image_url: string | null;
banner_url: string | null;
is_verified: boolean;
total_supply: number | null;
description: string | null;
created_at: string;
source: string | null;
floor_price: number | null;
floor_currency: string | null;
volume_24h: number | null;
volume_7d: number | null;
volume_30d: number | null;
listed_count: number | null;
owner_count: number | null;
sales_24h: number | null;
sales_7d: number | null;
sales_30d: number | null;
is_gravemint: boolean;
}CollectionLaunchesResponse
export interface CollectionLaunchesResponse {
data: CollectionLaunch[];
total: number;
limit: number;
offset: number;
hasMore: boolean;
}CollectionMeta
export interface CollectionMeta {
chains: Array<{
chain: Chain;
count: number;
}>;
categories: string[];
}CollectionOfferRow
export interface CollectionOfferRow {
price: number;
currency: string;
floor_diff_pct: number | null;
fillable_offers: number;
total_size: number;
bidders: number;
marketplace: string;
}CollectionOffersResponse
GET /collections/:id/offers returns { data } only.
export interface CollectionOffersResponse {
data: MarketOrder[];
}CollectionsListResponse
export interface CollectionsListResponse extends CursorPaginatedResponse<CollectionSummary> {
timeframe?: string;
}CollectionSparklines
export type CollectionSparklines = Record<string, number[]>;CollectionStatsDailyRow
export interface CollectionStatsDailyRow {
date: string;
sales: number;
volume: number;
avg_price: number | null;
floor: number | null;
listed_count: number | null;
holder_count: number | null;
new_listings: number | null;
unique_sellers: number | null;
unique_buyers: number | null;
[extra: string]: unknown;
}CollectionStatsQuery
export interface CollectionStatsQuery {
period?: '24h' | '7d' | '30d' | '90d' | '1y' | 'all';
}CollectionStatsResponse
export interface CollectionStatsResponse {
stats: MarketCollectionStatsRow | null;
daily: CollectionStatsDailyRow[];
wash_trade_count_7d: number;
}CollectionSummary
Collection row. Reference a collection by slug or contract_address.
export interface CollectionSummary {
name: string;
image_url: string | null;
chain: Chain;
contract_address: string;
slug?: string;
is_verified: boolean;
floor_price: number | null;
total_volume: number | null;
total_listed: number | null;
total_supply: number | null;
[extra: string]: unknown;
}CollectionTrait
export interface CollectionTrait {
trait_type: string;
count: number;
values: CollectionTraitValue[];
}CollectionTraitFloor
export interface CollectionTraitFloor {
trait_type: string;
trait_value: string;
floor_price: number;
currency: string;
listed_count: number;
}CollectionTraitFloorsResponse
export interface CollectionTraitFloorsResponse {
trait_floors: CollectionTraitFloor[];
}CollectionTraitPricingSummary
export interface CollectionTraitPricingSummary {
generated_at: string;
per_trait: TraitPricingRow[];
marketplace_has_data: boolean;
}CollectionTraitsResponse
export interface CollectionTraitsResponse {
traits: CollectionTrait[];
total_items: number;
}CollectionTraitValue
export interface CollectionTraitValue {
value: string;
count: number;
percentage: number;
}CompareCollectionEntry
export interface CompareCollectionEntry {
id: string;
meta: {
id: string;
name: string;
slug: string;
chain: Chain;
image_url: string | null;
is_verified: boolean;
contract_address: string | null;
} | null;
stats: Record<string, unknown> | null;
daily: CompareDailyRow[];
holders: CompareHolderRow[];
}CompareCollectionsQuery
export interface CompareCollectionsQuery {
collection_ids: string;
period?: '24h' | '7d' | '30d' | '90d';
}CompareCollectionsResponse
export interface CompareCollectionsResponse {
collections: CompareCollectionEntry[];
period: string;
}CompareDailyRow
export interface CompareDailyRow {
collection_id: string;
date: string;
volume: number;
volume_usd: number | null;
sales: number;
avg_price: number | null;
floor_close: number | null;
}CompareHolderRow
export interface CompareHolderRow {
collection_id: string;
date: string;
unique_holders: number | null;
top_10_pct_concentration: number | null;
}CreatorPageByCollectionResponse
export interface CreatorPageByCollectionResponse {
/** Null when the collection is not on any published creator page. */
page: CreatorPageRef | null;
}CreatorPageCollection
export interface CreatorPageCollection {
id: string;
slug: string | null;
name: string;
chain: Chain;
contract_address: string | null;
image_url: string | null;
custom_image_url: string | null;
banner_url: string | null;
is_verified: boolean;
total_supply: number | null;
description: string | null;
/** Display order on the creator page (0-based). */
position: number;
added_by: 'admin' | 'owner';
market_collection_stats: CreatorPageCollectionStats | CreatorPageCollectionStats[] | null;
}CreatorPageCollectionStats
export interface CreatorPageCollectionStats {
floor_price: number | null;
floor_currency: string | null;
volume_24h: number | null;
total_volume_all_time: number | null;
listed_count: number | null;
owner_count: number | null;
sales_24h: number | null;
total_items: number | null;
}CreatorPageDetail
export interface CreatorPageDetail {
id: string;
slug: string;
name: string;
bio: string | null;
logo_url: string | null;
banner_url: string | null;
website_url: string | null;
twitter_url: string | null;
discord_url: string | null;
is_published: boolean;
created_at: string;
updated_at: string;
}CreatorPageRef
export interface CreatorPageRef {
slug: string;
name: string;
logo_url: string | null;
}CreatorPageResponse
export interface CreatorPageResponse {
page: CreatorPageDetail;
collections: CreatorPageCollection[];
}CreatorPagesQuery
export interface CreatorPagesQuery {
/** Page size — default 24, max 100. */
limit?: number;
offset?: number;
}CreatorPagesResponse
export interface CreatorPagesResponse {
items: CreatorPageSummary[];
/** Offset for the next page, or null when this is the last page. */
nextOffset: number | null;
}CreatorPageSummary
export interface CreatorPageSummary {
id: string;
slug: string;
name: string;
bio: string | null;
logo_url: string | null;
banner_url: string | null;
created_at: string;
collection_count: number;
}CrossChainCollection
export interface CrossChainCollection {
name: string;
slug: string;
chain: Chain;
contract_address: string | null;
image_url: string | null;
is_verified: boolean;
total_supply: number | null;
floor_price: number | null;
floor_currency: string | null;
total_volume: number | null;
mapping: CrossChainMapping;
}CrossChainMapping
export interface CrossChainMapping {
mapping_type: string | null;
confidence: number | null;
verified: boolean;
}CursorPaginatedResponse
Cursor-paginated envelope used by activity feeds, listings, etc.
export interface CursorPaginatedResponse<T> {
data: T[];
cursor: string | null;
hasMore: boolean;
total?: number;
}CursorPaginationQuery
export interface CursorPaginationQuery {
limit?: number;
cursor?: string | null;
}EventType
export type EventType = 'sale' | 'list' | 'listing' | 'delist' | 'offer' | 'transfer' | 'mint' | 'burn';Fee
export interface Fee {
fee_type: string;
fee_bps: number;
description: string;
}FeesResponse
export interface FeesResponse {
fees: Fee[];
}GraveyardClientOptions
export interface GraveyardClientOptions extends HttpOptions {
}HeatmapCell
export interface HeatmapCell {
dow: number;
hour: number;
value: number;
}HolderHistoryRow
export interface HolderHistoryRow {
date: string;
unique_holders: number | null;
top_10_pct_concentration: number | null;
holder_distribution: unknown | null;
}HoldersQuery
export interface HoldersQuery extends CursorPaginationQuery {
}Http
export type Http = <T>(path: string, init?: RequestInit) => Promise<T>;HttpOptions
export interface HttpOptions {
/** Defaults to `https://api.deads.io` (`https://api.solanadeads.com` serves the same API). */
baseUrl?: string;
/**
* API key for higher rate limits and per-key usage tracking. If omitted,
* requests fall through to the anonymous (per-IP) rate limit tier.
*/
apiKey?: string;
timeoutMs?: number;
fetch?: typeof fetch;
headers?: Record<string, string>;
/** @internal Trusted server-side use only. */
disableSanitize?: boolean;
}ItemActivityQuery
export interface ItemActivityQuery {
limit?: number;
}ItemActivityResponse
export interface ItemActivityResponse<T = Record<string, unknown>> {
data: T[];
hasMore: boolean;
}ItemListingsQuery
export interface ItemListingsQuery extends CursorPaginationQuery {
}ItemNeighbor
export interface ItemNeighbor {
name: string | null;
image_url: string | null;
thumbnail_url: string | null;
media_type: MediaType | string | null;
rarity_rank: number | null;
rarity_tier: string | null;
token_id: string;
token_address: string;
chain: Chain;
listing_price: number | null;
listing_currency: string | null;
}ItemNeighborsQuery
export interface ItemNeighborsQuery {
limit?: number;
sort?: 'rank' | 'token_id' | 'price_asc' | 'price_desc';
listed?: boolean;
}ItemNeighborsResponse
export interface ItemNeighborsResponse {
current_index: number | null;
total: number;
sort: string;
listed: boolean;
before: ItemNeighbor[];
current: {
rarity_rank: number | null;
token_id: string;
listing_price: number | null;
};
after: ItemNeighbor[];
}ItemOffersQuery
export interface ItemOffersQuery extends CursorPaginationQuery {
}ItemOrderListResponse
export interface ItemOrderListResponse<T = unknown> {
data: T[];
}ItemPriceHistoryQuery
export interface ItemPriceHistoryQuery {
period?: '24h' | '7d' | '30d' | '90d' | '1y' | 'all';
}ItemRarity
export interface ItemRarity {
rank: number | null;
score: number | null;
tier: string | null;
total_supply: number;
}ItemTrait
export interface ItemTrait {
trait_type: string;
value: string;
percentage: number | null;
floor_price: number | null;
floor_currency: string | null;
total_count: number;
listed_count: number;
}ItemTraitsResponse
export interface ItemTraitsResponse {
traits: ItemTrait[];
rarity_rank: number | null;
rarity_score: number | null;
rarity_tier: string | null;
total_supply: number;
}LaunchesQuery
export interface LaunchesQuery {
period?: '24h' | '7d' | '30d';
chain?: Chain;
limit?: number;
offset?: number;
}LiquidityHeatmapQuery
export interface LiquidityHeatmapQuery {
chain: Chain;
metric?: 'volume' | 'sales';
days?: 30 | 90;
}LiquidityHeatmapResponse
export interface LiquidityHeatmapResponse {
/** Active metric (volume | sales) as a 7×24 grid — drives the color gradient. */
matrix: number[][];
/** All three metrics at once so click-detail panels can render every stat
* for a slot without a second round-trip. */
matrices: {
volume: number[][];
sales: number[][];
avg_price: number[][];
};
chain: Chain;
metric: 'volume' | 'sales';
days: 30 | 90;
best: HeatmapCell;
worst: HeatmapCell;
}ListCollectionsQuery
export interface ListCollectionsQuery extends CursorPaginationQuery {
sort?: 'volume_24h' | 'volume_7d' | 'volume_30d' | 'floor_price' | 'created_at' | 'name';
chain?: Chain;
verified?: boolean;
category?: string;
timeframe?: '24h' | '7d' | '30d' | 'all';
search?: string;
}MarketCollectionStatsRow
export interface MarketCollectionStatsRow {
floor_price: number | null;
floor_currency: string | null;
volume_24h: number | null;
volume_7d: number | null;
volume_30d: number | null;
sales_24h: number | null;
sales_7d: number | null;
sales_30d: number | null;
top_bid_24h: number | null;
top_bid_7d: number | null;
top_bid_30d: number | null;
owner_count: number | null;
listed_count: number | null;
market_cap: number | null;
updated_at: string;
created_at: string;
[extra: string]: unknown;
}MarketItem
Market item (NFT) shape. Reference items by token_address (Solana mint) or ${contract_address}:${token_id} (EVM).
export interface MarketItem {
token_address: string;
token_id: string | null;
chain: Chain;
name: string | null;
image_url: string | null;
animation_url: string | null;
media_type: MediaType | string | null;
thumbnail_url: string | null;
/**
* BENEFICIAL owner. **Nullable**: null means no beneficial owner is
* known — typically the asset is held by a marketplace escrow, a stake pool or
* a draw escrow. The raw on-chain holder is exposed separately as `raw_owner`.
*/
owner: string | null;
/** The raw on-chain holder — an escrow, pool or draw account when `owner` is null. */
raw_owner?: string | null;
listing_price: number | null;
listing_currency: string | null;
listing_marketplace: string | null;
rarity_rank: number | null;
rarity_score: number | null;
rarity_tier: string | null;
is_burned: boolean;
/** Extra row fields (attributes, last_sale_price, etc.) may be present. */
[extra: string]: unknown;
}MarketOrder
export interface MarketOrder {
chain: Chain;
order_type: OrderType;
status: OrderStatus;
maker: string;
taker: string | null;
token_address: string;
token_id: string | null;
price: number;
currency: string;
currency_contract: string | null;
price_usd: number | null;
expiration_at: string | null;
protocol: string | null;
source_marketplace: string;
created_at: string;
updated_at: string;
}MediaType
export type MediaType = 'image' | 'gif' | 'video' | 'audio' | '3d_model' | 'html';OffersSummaryResponse
export interface OffersSummaryResponse {
floor_price: number | null;
top_offer: CollectionOfferRow | null;
collection_offers: CollectionOfferRow[];
trait_offers: TraitOfferRow[];
}OffsetPaginatedResponse
Offset-paginated envelope used by follows, comments, bundles.
export interface OffsetPaginatedResponse<T> {
data: T[];
total?: number;
limit: number;
offset: number;
}OffsetPaginationQuery
export interface OffsetPaginationQuery {
limit?: number;
offset?: number;
}OnchainListingStatus
export interface OnchainListingStatus {
status: string;
statusCode: number;
seller: string;
price: number;
priceLamports: string;
currency: string;
collectionKey: string;
assetStandard: string;
platformFeeBps: number;
royaltyBps: number;
createdAt: number;
expiresAt: number;
filledAt: number;
}OnchainStatusResponse
export interface OnchainStatusResponse {
assetId: string;
onchain: boolean;
listing: OnchainListingStatus | null;
}OrderStatus
export type OrderStatus = 'active' | 'filled' | 'cancelled' | 'expired';OrderType
export type OrderType = 'listing' | 'offer' | 'counter_offer' | 'collection_offer' | 'trait_offer' | 'item_offer';PaginatedResponse
export type PaginatedResponse<T> = CursorPaginatedResponse<T>;PaginationQuery
export type PaginationQuery = CursorPaginationQuery;PlatformAnalyticsOverview
export interface PlatformAnalyticsOverview {
total_collections: number;
total_items: number;
active_orders: number;
total_users: number;
period_volume: number;
period_sales: number;
}PlatformAnalyticsResponse
export interface PlatformAnalyticsResponse {
overview: PlatformAnalyticsOverview;
top_collections: TopCollectionRow[];
daily: PlatformDailyRow[];
period: string;
}PlatformDailyRow
export interface PlatformDailyRow {
date: string;
volume: number;
sales: number;
listings: number;
active_wallets: number;
}PlatformStatusResponse
export interface PlatformStatusResponse {
maintenance: boolean;
maintenanceMessage: string;
allowReads: boolean;
minAppVersionIos: string | null;
minAppVersionAndroid: string | null;
updateMessage: string | null;
}PriceHistoryPoint
export interface PriceHistoryPoint {
t: string;
price: number;
currency: string;
price_usd: number | null;
}PriceHistoryResponse
export interface PriceHistoryResponse {
data: PriceHistoryPoint[];
}PriceQuery
export interface PriceQuery {
symbol: string;
currency?: string;
}PricesResponse
GET /platform/prices returns { prices: { [coingeckoId]: priceUsd|null } }.
export interface PricesResponse {
prices: Record<string, number | null>;
}RequestInit
export interface RequestInit {
query?: object;
signal?: AbortSignal;
}SearchCollectionHit
export interface SearchCollectionHit {
name: string;
slug: string;
image_url: string | null;
custom_image_url: string | null;
chain: Chain;
is_verified: boolean;
contract_address: string;
description: string | null;
}SearchItemHit
export interface SearchItemHit {
name: string | null;
image_url: string | null;
animation_url: string | null;
media_type: string | null;
thumbnail_url: string | null;
chain: Chain;
token_address: string;
listing_price: number | null;
listing_currency: string | null;
rarity_rank: number | null;
royalty_bps?: number;
}SearchQuery
export interface SearchQuery {
q: string;
limit?: number;
chain?: Chain;
type?: 'collection' | 'item' | 'trait';
}SearchResponse
SDK-facing search response. Profiles and wallet-arrays are removed from the public API surface — only collection/item/trait results are returned.
export interface SearchResponse {
collections: SearchCollectionHit[];
items: SearchItemHit[];
traits: SearchTraitHit[];
}SearchTraitHit
export interface SearchTraitHit {
chain: Chain;
trait_type: string;
trait_value: string;
}SimilarItem
export interface SimilarItem {
name: string;
image_url: string | null;
animation_url: string | null;
media_type: string | null;
thumbnail_url: string | null;
token_address: string;
token_id: string;
listing_price: number | null;
listing_currency: string | null;
last_sale_price: number | null;
last_sale_currency: string | null;
rarity_rank: number | null;
rarity_tier: string | null;
chain: Chain;
owner: string | null;
is_burned: boolean;
market_collections: {
name: string;
image_url: string | null;
chain: Chain;
royalty_bps: number;
};
}SimilarItemsQuery
export interface SimilarItemsQuery {
limit?: number;
}SimilarItemsResponse
export type SimilarItemsResponse = SimilarItem[];SmartMoneyFeedQuery
export interface SmartMoneyFeedQuery {
chain?: Chain;
cursor?: string;
limit?: number;
}SmartMoneyFeedResponse
export interface SmartMoneyFeedResponse {
feed: SmartMoneyFeedRow[];
next_cursor: string | null;
}SmartMoneyFeedRow
export interface SmartMoneyFeedRow {
id: string;
chain: Chain;
collection_id: string | null;
item_id: string | null;
from_address: string;
to_address: string;
price: number | null;
price_usd: number | null;
currency: string | null;
marketplace: string | null;
event_time: string;
tx_hash: string | null;
side: 'buy' | 'sell';
collection: {
id: string;
name: string;
slug: string;
image_url: string | null;
} | null;
item: {
id: string;
name: string;
image_url: string | null;
} | null;
}SmartMoneyInflowRow
export interface SmartMoneyInflowRow {
collection_id: string;
inflow_usd: number;
buys: number;
sells: number;
last_event_at: string;
collection: {
id: string;
name: string;
slug: string;
image_url: string | null;
chain: Chain;
} | null;
}SmartMoneyInflowsQuery
export interface SmartMoneyInflowsQuery {
period?: '24h' | '7d';
chain?: Chain | '__global__';
limit?: number;
}SmartMoneyInflowsResponse
export interface SmartMoneyInflowsResponse {
inflows: SmartMoneyInflowRow[];
period: string;
chain: string;
}SmartMoneyLeaderboardQuery
export interface SmartMoneyLeaderboardQuery {
metric?: SmartMoneyMetric;
period?: '24h' | '7d' | '30d';
chain?: Chain;
limit?: number;
}SmartMoneyLeaderboardResponse
export interface SmartMoneyLeaderboardResponse {
rankings: SmartMoneyLeaderboardRow[];
metric: SmartMoneyMetric;
period: string;
}SmartMoneyLeaderboardRow
export interface SmartMoneyLeaderboardRow {
address: string;
chain: Chain;
volume_usd?: number;
realized_pnl_usd?: number;
trades?: number;
}SmartMoneyMetric
export type SmartMoneyMetric = 'volume' | 'realized_pnl' | 'trades';SparklinesQuery
export interface SparklinesQuery {
ids?: string[];
contract_addresses?: string[];
slugs?: string[];
hours?: number;
days?: number;
}TokenPricesQuery
export interface TokenPricesQuery {
symbols?: string[];
}TokenPricesResponse
GET /platform/token-prices returns { [symbol]: priceUsd } (e.g. { SOL: 84.52 }).
export type TokenPricesResponse = Record<string, number>;TopCollectionRow
export interface TopCollectionRow {
floor_price: number | null;
floor_currency: string | null;
volume_24h: number | null;
volume_7d: number | null;
volume_30d: number | null;
sales_24h: number | null;
sales_7d: number | null;
sales_30d: number | null;
owner_count: number | null;
listed_count: number | null;
name: string;
slug: string;
image_url: string | null;
chain: Chain;
is_verified: boolean;
contract_address: string | null;
}TraitOfferRow
export interface TraitOfferRow {
trait_type: string;
trait_value: string;
price: number;
currency: string;
fillable_offers: number;
total_size: number;
bidders: number;
marketplace: string;
}TraitPricingRow
export interface TraitPricingRow {
trait_type: string;
trait_value: string;
floor_price: number | null;
currency: string | null;
top_trait_offer: number | null;
offer_currency: string | null;
listed_count: number;
sales_7d: number;
}TraitSearchGroup
export interface TraitSearchGroup {
chain: Chain;
items: SearchTraitHit[];
count: number;
collection_name?: string;
collection_image?: string;
is_verified?: boolean;
}TraitSearchQuery
export interface TraitSearchQuery {
q: string;
limit?: number;
chain?: Chain;
}TraitSearchResponse
export interface TraitSearchResponse {
results: TraitSearchGroup[];
total_matches: number;
}TrustCollectionRow
export interface TrustCollectionRow {
id: string;
name: string;
slug: string;
chain: Chain;
image_url: string | null;
is_verified: boolean;
contract_address: string | null;
wash_pct: number;
wash_volume_usd: number;
total_volume_usd: number;
clean_volume_usd: number;
flagged_trade_count: number;
}TrustCollectionsQuery
export interface TrustCollectionsQuery {
sort?: TrustSort;
period?: '24h' | '7d' | '30d';
chain?: Chain;
limit?: number;
}TrustCollectionsResponse
export interface TrustCollectionsResponse {
collections: TrustCollectionRow[];
period: string;
sort: TrustSort;
}TrustSort
export type TrustSort = 'cleanest' | 'most_suspicious';TrustWalletResponse
export interface TrustWalletResponse {
address: string;
wash_pct_7d: number | null;
wash_pct_30d: number | null;
wash_pct_all: number | null;
total_trades_30d: number;
total_trades_all: number;
in_cluster: boolean;
/** Verified-treasury memberships — present when the wallet is on the
* admin-approved allowlist. UI uses this to render the green badge and to
* link to the scoped collection page when length === 1. */
verified_treasury: TrustWalletTreasuryEntry[];
/** Auto-classified distributor flag — true when this wallet's recent
* activity is dominated by buys + outgoing transfers (treasury-like
* pattern) but no admin approval exists. UI renders a quieter cyan chip. */
is_distributor: boolean;
}TrustWalletTreasuryEntry
Verified-treasury entry surfaced on a wallet. Empty array when the wallet is not on the allowlist. collection_id null = global treasury (every collection); non-null = scoped to that specific collection.
export interface TrustWalletTreasuryEntry {
label: string | null;
collection_id: string | null;
collection_name: string | null;
collection_slug: string | null;
}WalletLotRow
export interface WalletLotRow {
id: string;
item_id: string;
collection_id: string | null;
chain: Chain;
acquired_at: string;
cost_basis_usd: number | null;
disposed_at: string | null;
disposed_price_usd: number | null;
realized_pnl_usd: number | null;
holding_period_seconds: number | null;
}WalletLotSummary
export interface WalletLotSummary {
item_id: string;
collection_id: string | null;
realized_pnl_usd: number | null;
disposed_at: string;
holding_period_seconds: number | null;
}WalletPnLDailyRow
export interface WalletPnLDailyRow {
date: string;
realized_pnl_usd: number;
volume_usd: number;
realized_trade_count: number;
}WalletPnLLotsQuery
export interface WalletPnLLotsQuery {
closed_only?: boolean;
cursor?: string;
limit?: number;
}WalletPnLLotsResponse
export interface WalletPnLLotsResponse {
lots: WalletLotRow[];
next_cursor: string | null;
}WalletPnLQuery
export interface WalletPnLQuery {
period?: '7d' | '30d' | '90d' | 'ytd' | 'all';
}WalletPnLResponse
export interface WalletPnLResponse {
address: string;
period: string;
realized_pnl_usd: number;
unrealized_pnl_usd: number;
volume_usd: number;
total_trades: number;
win_rate_pct: number;
open_lots_count: number;
open_lots_value_usd: number;
daily: WalletPnLDailyRow[];
best_trades: WalletLotSummary[];
worst_trades: WalletLotSummary[];
}