๐Ÿ“ŠData API

Overview

The Data API provides read-only access to query and browse intellectual property assets across the Molecule Protocol. Use these queries to build marketplaces, token screeners, portfolio trackers, and discovery interfaces for decentralized science projects.

Features:

  • Query IP-NFTs (Intellectual Property NFTs) and their project details

  • Browse IP Tokens (IPTs) with market data

  • Access trading metrics and liquidity information

  • Query users, research leads, chains, and agreements

  • Filter, sort, and paginate results

  • Build data-driven applications


Authentication

All Data API requests require an API key.

Obtaining an API Key

To request an API key:

  1. Contact the Molecule team

  2. Provide your intended use case

  3. You'll receive your API key

Using Your API Key

Include the API key in all requests using the x-api-key header:


API Endpoint


Queries

List IP-NFTs

Query and browse all IP-NFTs on the platform with filtering, sorting, and pagination.

GraphQL Query:

Parameters:

Parameter
Type
Description

limit

Int

Maximum number of results (recommended: 20-50)

skip

Int

Number of results to skip (for pagination)

sortBy

IPNFTSortBy

Field to sort by (e.g., createdAt, mintedAt, name, topic, fundingAmountValue)

sortOrder

SortOrder

Sort direction: asc or desc

filterBy

IPNFTFilterBy

Filter criteria (owner, chainId, topic, etc.)

Example Request (curl):

Response Example:


Get Single IP-NFT

Retrieve detailed information about a specific IP-NFT by its ID.

GraphQL Query:

Example Request:


List IP Tokens (IPTs)

Query and browse all IP Tokens with their associated IP-NFTs and market data.

GraphQL Query:

Parameters:

Parameter
Type
Description

limit

Int

Maximum number of results

skip

Int

Number of results to skip (for pagination)

sortBy

IPTSortBy

Field to sort by (e.g., createdAt, holderCount, name, symbol)

sortOrder

SortOrder

Sort direction: asc or desc

filterBy

IPTFilterBy

Filter criteria (ipnftId, symbol, originalOwnerId, etc.)

Example Request (curl):

Response Example:


Get Single IP Token

Retrieve detailed information about a specific IPT by its ID.

GraphQL Query:


Query Markets

Access trading and market data for IP Tokens.

GraphQL Query:

Example - Get Markets by Trading Volume:


Query Users

Query users and their associated IP-NFTs and IPTs.

GraphQL Query:

Get Single User:


Query Research Leads

Query research leads associated with IP-NFTs.

GraphQL Query:

Get Single Research Lead:


Query Chains

Query blockchain networks where markets are deployed.

GraphQL Query:

Get Single Chain:


Query Agreements

Query legal agreements associated with IP-NFTs.

GraphQL Query:

Get Single Agreement:


Common Patterns

Pagination

Use skip and limit for pagination:

Sorting

Sort results by any field:

Filtering

Filter results by specific criteria. The API supports both direct field filtering and nested relation filtering.

Basic Filtering

Filter IP-NFTs by topic:

Filter by owner (using user ID):

Filter by chain:

Filter IPTs by symbol:

Filter IPTs by IPNFT:

Nested Relation Filtering

The API supports filtering by nested relation properties for more flexible queries.

Filter IP-NFTs by owner address:

Filter IP-NFTs by owner ID:

Filter IP-NFTs by research lead:

Filter IP-NFTs by agreement properties:

Filter IPTs by original owner:

Filter IPTs by parent IPNFT properties:

Filter markets by chain properties:

Filter markets by token properties:

Filter IPTs by IPNFT owner (deeply nested):

Combining Filters

You can combine multiple filters in a single query. All filters are combined with AND logic - results must match all criteria.

Combine scalar and relation filters:

Combine multiple field filters:

Combine nested relation filters (IPT query):


Response Types

IPNFT Type

IPT Type

Market Type

User Type

ResearchLead Type

Chain Type

Agreement Type


Example Use Cases

Building a Marketplace UI

Token Screener / Price Tracker

Portfolio Tracker


Advanced Filtering

Relation Filtering vs Direct Filtering

The Data API supports two approaches to filtering:

  1. Direct Field Filtering: Filter by the ID of a related entity

  2. Relation Filtering: Filter by properties of related entities

Both approaches work and can be used based on your needs.

Example - Finding IP-NFTs by Owner:

Multi-Level Nested Filtering

You can filter through multiple levels of relations:

Available Relation Filters

Query Type
Relation Field
Supported Filters
Example

ipnfts

owner

id, address

owner: { address: "0x..." }

ipnfts

researchLead

id, name, email

researchLead: { email: "..." }

ipnfts

agreements

id, contentHash, mimeType, type, url

agreements: { mimeType: "application/pdf" }

ipts

ipnft

All IPNFT filter fields

ipnft: { topic: "Oncology" }

ipts

originalOwner

id, address

originalOwner: { address: "0x..." }

markets

chain

id, chainId, name

chain: { chainId: 1 }

markets

token

All IPT filter fields

token: { symbol: "VITA" }

Filter Matching

All filters use exact equality matching by default. For example:


Error Handling

Common Errors

Status Code
Error
Description

401

Unauthorized

Missing or invalid API key

400

Bad Request

Invalid query syntax or parameters

404

Not Found

Requested resource doesn't exist

500

Internal Server Error

Server error - retry the request

Troubleshooting

401 Unauthorized Error:

  • Verify x-api-key header is included

  • Check that your API key is valid and not expired

  • Ensure no typos in the API key

Empty Results:

  • Check filter criteria - may be too restrictive

  • Verify the chainId if filtering by chain

  • Try removing filters to see all results

GraphQL Errors:

  • Check query syntax is valid

  • Ensure field names match the schema

  • Verify variable types match parameter types


Getting Support

For questions or issues with the Data API:


Recent Updates (February 2026)

Breaking Changes

Schema Flattening โ€” metadata wrapper removed from IPNFT and IPT

The intermediate metadata wrapper objects (IPNFTMetadata, IPTMetadata) have been removed. All metadata fields now live directly on the IPNFT and IPT types.

Migration: Remove all metadata { ... } wrappers and access fields directly on the parent type.

fundingAmount JSON field decomposed into 4 typed fields

The fundingAmount JSON field on IPNFT has been replaced with 4 strongly-typed fields:

Migration example:

agreements changed from JSON array to typed relation

The agreements field on IPNFT has changed from a JSON array to a queryable typed relation with sub-field selection:

Migration: Update your queries to select specific agreement fields instead of receiving a raw JSON array.

Filter changes โ€” nested metadata filters removed

All filter paths that previously went through metadata are now direct fields:

researchLead and originalOwner filter paths changed

These relation filters are now direct on the parent type instead of nested inside metadata context:

New Features

New query types

The following new top-level queries are now available:

Query
Description

user(id) / users(...)

Query users by address, list associated IP-NFTs and IPTs

researchLead(id) / researchLeads(...)

Query research leads and their associated IP-NFTs

chain(id) / chains(...)

Query blockchain networks and their markets

agreement(id) / agreements(...)

Query legal agreements associated with IP-NFTs

All new queries support limit, skip, sortBy, sortOrder, and filterBy parameters.

New fields on IPNFT

  • updatedAt โ€” Last update timestamp

  • tokenUri โ€” Token metadata URI

  • symbol โ€” Token symbol

  • schemaVersion โ€” Metadata schema version

  • userId โ€” Owner user ID (for direct filtering)

  • researchLeadId โ€” Research lead ID (for direct filtering)

  • fundingAmountCurrency, fundingAmountValue, fundingAmountDecimals, fundingAmountCurrencyType โ€” Decomposed funding amount fields

New fields on IPT

  • updatedAt โ€” Last update timestamp

  • mintedAt โ€” Minting timestamp

  • agreementMimeType โ€” Agreement file MIME type

  • originalOwner โ€” Full User type (with id, address)

  • originalOwnerId โ€” Original owner user ID (for direct filtering)

  • ipnftId โ€” Parent IP-NFT ID (for direct filtering)

  • links โ€” Related links

  • capped โ€” Whether token issuance is capped

New fields on Market

  • createdAt, updatedAt โ€” Timestamps

  • inverted โ€” Whether the pair is inverted

  • iptId โ€” Associated IPT ID (for direct filtering)

  • chain.logoUrl โ€” Chain logo URL now available

agreements queryable as typed relation

Agreements on IP-NFTs are now a fully queryable relation with sub-field selection, filtering, sorting, and pagination:


Last updated: February 2026

Last updated