GraphQL API
The Verse Public GraphQL API provides read access to collections, artworks, editions, sales, marketplace data, and more. It is designed for developers building applications, dashboards, or integrations on top of Verse.
Before integrating sale logic, read Release & Sales Mapping and Glossary and Name Mapping.
Endpoint
https://verse.works/query
Authentication
The public API requires no authentication. All queries return publicly available data.
If you need to perform actions on behalf of authenticated users (e.g., checking reserves, purchase eligibility), use the Verse Elements integration instead.
Quick Start
Send a POST request with a JSON body containing your GraphQL query:
curl -X POST https://verse.works/query \
-H "Content-Type: application/json" \
-d '{
"query": "{ collectionsPage(request: { first: 5 }) { nodes { name slug blockchain } } }"
}'
Or use any GraphQL client:
const response = await fetch("https://verse.works/query", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
query: `
query GetCollection($slug: String!) {
collectionsPage(request: {
filter: { slugs: [$slug] }
first: 1
}) {
nodes {
id
name
slug
blockchain
artworks {
id
title
primaryMarketListing {
startsAt
endsAt
}
}
stats {
issuedEditions
ownersCount
floorPrice { value currency }
tradedVolume { value currency }
}
}
}
}
`,
variables: { slug: "fields-by-erik-swahn" },
}),
});
Core Query Types
Collections & Artworks
| Query | Description |
|---|---|
collectionsPage | Paginated list of collections with filtering |
artworksPage | Paginated list of artworks with filtering |
editionByNumber | Single edition by artwork ID and edition number |
editionByContract | Single edition by contract address and token ID |
search | Full-text search across artists, collections, and exhibitions |
explore | Browse collections with market/tab filters |
Sales & Marketplace
| Query | Description |
|---|---|
primaryMarketListing | Active primary sale for an artwork |
primaryMarketListings | All primary sales for an artwork |
primaryMarketSale | Single completed primary sale |
secondaryMarketSale | Single completed secondary sale |
orders | Marketplace orders (listings and offers) |
activityPage | Activity feed (sales, listings, offers, transfers) |
stats | Marketplace statistics by time period |
Users & Assets
| Query | Description |
|---|---|
assetsPage | Paginated assets (editions, bookmarks) with filtering |
asset | Single asset by ID |
userByUsername | User profile by username |
userById | User profile by ID |
userByLinkedWallet | User by wallet address |
Additional
| Query | Description |
|---|---|
artworkFees | Fee structure for an artwork |
estimateSecondaryMarketFees | Estimate fees for a secondary sale |
mintPassConfiguration | Mint pass requirements |
personsPage | Artists, curators, and galleries |
exhibitionsPage | Exhibitions and curated shows |
galleriesPage | Gallery profiles |
Pagination
The API uses cursor-based pagination. All paginated queries accept first (page size) and after (cursor) parameters:
query {
collectionsPage(request: { first: 20, after: "cursor-value" }) {
pageInfo {
endCursor
hasNextPage
}
nodes {
id
name
}
}
}
Filtering
Most page queries support rich filtering. Example for assets:
query {
assetsPage(
filter: {
artworkIds: ["artwork-uuid"]
availability: [BUY_NOW]
features: [{ name: "Color", value: "Blue" }]
}
sorting: { sort: LIST_PRICE, direction: ASC }
first: 20
) {
totalCount
nodes {
id
assetType
asset {
... on Edition {
editionNumber
tokenId
}
}
}
}
}
Supported Blockchains
The ProductChain enum indicates which blockchain a collection or artwork is deployed on:
enum ProductChain {
ETHEREUM
BASE
TEZOS
SOLANA
BITCOIN
PHYSICAL
NONE
}
Primary market releases on Verse are currently available on Ethereum mainnet and off-chain (PHYSICAL / NONE). Other chain values exist in the schema for secondary market data surfaced from external platforms.
Error Handling
The API returns standard GraphQL errors. Check the errors array in the response:
{
"data": null,
"errors": [
{
"message": "artwork not found",
"path": ["artworksPage"]
}
]
}
Working with Media
When you query artwork covers or static assets, the returned baseUrl is a template URL — not a direct link. You must replace {{SIZE}} and {{FORMAT}} placeholders before displaying the image. See Static Assets for the full guide, including which field to use for each asset type and how to handle videos, SVGs, and iframes.
Next Steps
- Try the interactive playground to run queries against the live API
- Browse the full schema reference for all types, inputs, and enums
- See example queries for common use cases
- Read Static Assets for displaying images, videos, and interactive content
- Test queries in the sandbox environment