Skip to Content
ResourcesOpen API

Open API

WBTC exposes a set of public, read-only REST APIs for transparency data, supported chains, mint and burn history, participants, providers, and ecosystem projects. All endpoints are free to use, require no API key, and support CORS.


1. Common - Network & Auth

ItemValue
Base URLhttps://openapi.wbtc.network
API prefix/public/v1
MethodGET only
AuthenticationNone - all endpoints are public, no API key
Content-Typeapplication/json
CORSEnabled - callable directly from browsers
Rate limitBest-effort public service. Cache where possible and avoid unnecessary polling
OpenAPI schemaGET /public/v1/openapi.json

All request examples below use the absolute Base URL, so they are copy-pasteable without consulting this table.


2. Common - Conventions

2.1 Response format

All API endpoints return the following JSON format:

{ "data": { }, "meta": { "updatedAt": "2026-06-24T04:00:49.863904Z", "version": "v1" } }
FieldTypeExistenceDescription
dataobjectalwaysReturned data. The structure depends on the endpoint
metaobjectalwaysResponse information
meta.updatedAtstringalwaysISO-8601 UTC timestamp associated with the returned data. When the data source does not provide an update time, this may be the response generation time
meta.versionstringalwaysPublic API version. Current value is v1

2.2 Data conventions

TopicConvention
Number typesFinancial amounts and decimal values are returned as strings to preserve precision. Use a decimal library instead of JavaScript Number for calculations
Amount scaleSupply, mint, burn, and reserve amounts are human-readable decimal strings. WBTC and BTC values use BTC-style decimal precision, up to 8 decimal places
TimestampsDate and time fields are ISO-8601 UTC strings when present
Chain keyschainKey is a stable lowercase identifier, for example eth, bsc, sol, trx, base, kava, or osmo
Field stabilityPublished field names are not renamed within a version. New fields may be added in a backward-compatible way
ExamplesResponse examples use illustrative values and do not represent live production balances or current WBTC state

2.3 Response Field Meanings

The following response field units and meanings apply:

Where it appearsUnitHow to read it
circulatingSupply, supply, amountWBTCHuman-readable WBTC decimal string, up to 8 decimal places
nativeBtcReserve, balanceBtcBTCHuman-readable native BTC decimal string, up to 8 decimal places
btcPriceUsd, reserveValueUsdUSDHuman-readable US dollar decimal string
reserveRatioratioReserve ratio as a decimal string. Precision is not fixed
updatedAt, datedatetimeISO-8601 UTC timestamp
address, contractAddressaddressBlockchain address
explorerUrl, website, urlurlPublic URL
type, role, action, status, network, category, chainKeyenumOne of the supported values documented for the field
chain, name, description, merchantNametextHuman-readable text
addressCount, pageIndex, pageSize, totalcountInteger count

2.4 Existence column

Response field tables include an Existence column so clients can tell whether a missing or empty value is expected:

ExistenceMeaning
alwaysThe field is always present
nullableThe field is always present, but its value may be null
conditionalThe field is present only when the stated condition holds

2.5 Empty result is not an error

An empty array is a successful response, not an error.

Examples: /participants?tag=no-match may return an empty participants array; /providers?q=no-match may return an empty providers array. Do not treat these as failures or retry them aggressively.

2.6 Caching and conditional requests

Responses may include ETag and Cache-Control headers.

Clients should preserve and reuse ETag values where possible:

If-None-Match: "previous-etag-value"

When the data has not changed, the API may return:

HTTP/1.1 304 Not Modified

A 304 response has no response body. Continue using the cached representation from the previous 200 response.


3. Common - Errors

Error format. The WBTC Public API uses standard HTTP status codes for request and service errors. Error responses are JSON objects containing error.code, error.message, and error.requestId.

{ "error": { "code": "INVALID_PARAM", "message": "Invalid category. Expected defi, chains, wallet, or bridge.", "requestId": "req_01HZY..." } }

3.1 Error response fields

FieldTypeExistenceDescription
error.codestringalwaysStable error code for client handling
error.messagestringalwaysHuman-readable error message
error.requestIdstringalwaysRequest identifier for troubleshooting

3.2 Code table

HTTP statuscodeMeaning
400INVALID_PARAMA pagination parameter is malformed, for example a non-integer pageIndex or pageSize
404NOT_FOUNDThe requested public API resource does not exist
405METHOD_NOT_ALLOWEDThe HTTP method is not supported
422INVALID_PARAMOne or more query parameters are invalid
503UPSTREAM_UNAVAILABLEThe requested data is temporarily unavailable
503INSTANCE_OVERLOADEDThe service is temporarily busy or rate limited

3.3 Common error cases

CaseTriggerResponse
Unsupported parameter valueUnsupported type, role, or categoryHTTP 422, code: "INVALID_PARAM"
Invalid paginationInvalid pageIndex or pageSize on /mint-burnHTTP 400 or 422, code: "INVALID_PARAM"
Unknown pathRequest a public API path that does not existHTTP 404, code: "NOT_FOUND"
Data unavailable or service busyThe requested data is temporarily unavailable, or the service is busyHTTP 503

4. Endpoint Index

#GroupNamePath
5.1TransparencyProof of ReserveGET /public/v1/proof-of-reserve
5.2TransparencySupported ChainsGET /public/v1/chains
5.3TransparencyMint and Burn HistoryGET /public/v1/mint-burn
5.4ParticipantsParticipantsGET /public/v1/participants
5.5EcosystemProvidersGET /public/v1/providers
5.6EcosystemEcosystem ProjectsGET /public/v1/ecosystem
5.7ReferenceOpenAPI DocumentGET /public/v1/openapi.json

5. Endpoint Reference


5.1 Proof of Reserve

Overview. WBTC transparency summary, including circulating supply by chain, native BTC reserve information, reserve addresses, and collateralization ratio.

Typical use. Build a transparency dashboard, show reserve ratio, or verify public reserve addresses.

When not to use. For mint and burn history, use section 5.3. For chain contract information only, use section 5.2.

Endpoint. GET /public/v1/proof-of-reserve - Base URL & auth see section 1.

Request parameters. None.

Request example.

curl "https://openapi.wbtc.network/public/v1/proof-of-reserve"

Response fields.

FieldTypeExistenceUnitDescription
supplyobjectalways-Supply summary
supply.circulatingSupplystringalwaysWBTCTotal circulating WBTC supply
supply.byChain[]arrayalways-Circulating supply grouped by chain
supply.byChain[].chainstringalwaystextChain display name
supply.byChain[].chainKeystringalwaysenumStable chain key
supply.byChain[].supplystringalwaysWBTCSupply on the chain
reservesobjectalways-Native BTC reserve summary
reserves.nativeBtcReservestringalwaysBTCTotal native BTC reserve balance
reserves.btcPriceUsdstringalwaysUSDBTC price in USD used for reserve valuation
reserves.reserveValueUsdstringalwaysUSDNative BTC reserve value in USD
reserves.addressCountintegeralwayscountNumber of reserve addresses returned
reserves.addresses[]arrayalways-Public reserve address details
reserves.addresses[].addressstringalwaysaddressBTC reserve address
reserves.addresses[].balanceBtcstringalwaysBTCBTC balance for the address
reserves.addresses[].explorerUrlstringalwaysurlBlock explorer URL for the address
collateralizationobjectalways-Collateralization summary
collateralization.reserveRatiostringalwaysratioReserve ratio. Precision is not fixed

Response example.

{ "data": { "supply": { "circulatingSupply": "155000.00000000", "byChain": [ { "chain": "Ethereum", "chainKey": "eth", "supply": "100000.00000000" }, { "chain": "BNB Chain", "chainKey": "bsc", "supply": "55000.00000000" } ] }, "reserves": { "nativeBtcReserve": "155010.00000000", "btcPriceUsd": "65000.00", "reserveValueUsd": "10075650000.00", "addressCount": 1, "addresses": [ { "address": "bc1qwbtcreserveexample0000000000000000000", "balanceBtc": "155010.00000000", "explorerUrl": "https://mempool.space/address/bc1qwbtcreserveexample0000000000000000000" } ] }, "collateralization": { "reserveRatio": "1.000064516129032258064516129" } }, "meta": { "updatedAt": "2026-06-24T04:00:49.863904Z", "version": "v1" } }

Errors. See section 3. This endpoint takes no parameters, so errors are generally limited to an unknown path, rate limiting, temporary data unavailability, or a service error.


5.2 Supported Chains

Overview. Native and bridge chain support information for WBTC, including token contract and explorer links.

Typical use. Display supported networks, contract addresses, or chain availability.

When not to use. For circulating supply by chain, use section 5.1.

Endpoint. GET /public/v1/chains - Base URL & auth see section 1.

Request parameters.

ParameterTypeRequiredDescription
typestringNoFilter by support type. Allowed values: native, bridge

Request example.

curl "https://openapi.wbtc.network/public/v1/chains" curl "https://openapi.wbtc.network/public/v1/chains?type=native"

Response fields.

FieldTypeExistenceUnitDescription
natives[]arrayconditional-Native WBTC chain entries. Returned when type is omitted or type=native
bridges[]arrayconditional-Bridge chain entries. Returned when type is omitted or type=bridge
chainstringalwaystextChain display name
chainKeystringalwaysenumStable chain key
typestringalwaysenumChain support type: native or bridge
isNewbooleanalways-Whether the chain is marked as newly supported
contract.contractTypestringalwaystextToken or contract standard for native chains; bridge technology name for bridge chains
contract.contractAddressstringalwaysaddressPublic token or contract address
contract.explorerUrlstringalwaysurlExplorer URL for the contract
deploymentstringconditionaltextBridge solution name, returned for bridge chains when available

Response example.

The example below shows a type=native response.

{ "data": { "natives": [ { "chain": "BNB Chain", "chainKey": "bsc", "type": "native", "isNew": true, "contract": { "contractType": "BEP-20", "contractAddress": "0x39665e85a68a4d7328b8799135E2ff301a0Ca86f", "explorerUrl": "https://bscscan.com/token/0x39665e85a68a4d7328b8799135E2ff301a0Ca86f" } } ] }, "meta": { "updatedAt": "2026-06-24T04:00:49.863904Z", "version": "v1" } }

Errors. See section 3. Invalid type values return an INVALID_PARAM error.


5.3 Mint and Burn History

Overview. Paginated WBTC mint and burn records.

Typical use. Build a mint/burn activity table or filter recent records by action, network, status, or merchant.

When not to use. For aggregate supply and reserves, use section 5.1.

Endpoint. GET /public/v1/mint-burn - Base URL & auth see section 1.

Request parameters.

ParameterTypeRequiredDescription
pageIndexintegerNoPage index, starting from 1. Default: 1
pageSizeintegerNoNumber of records per page. Default: 20; minimum: 1; values above 200 are capped to 200
actionstringNoFilter by action. Supported values: mint, burn
statusstringNoFilter by record status. Supported values: pending, canceled, rejected, completed
networkstringNoFilter by chain key. Supported values: eth, sol, trx, bsc, base, kava, osmo. Common aliases such as tron, bnb, and osmosis are also supported
merchantNamestringNoFilter by merchant name. Maximum length: 128 characters

Request example.

curl "https://openapi.wbtc.network/public/v1/mint-burn?pageIndex=1&pageSize=20"

Response fields.

FieldTypeExistenceUnitDescription
records[]arrayalways-Mint and burn records
records[].actionstringalwaysenumRecord action
records[].statusstringalwaysenumCurrent record status
records[].networkstringalwaysenumNetwork or chain key
records[].amountstringalwaysWBTCAmount of WBTC minted or burned
records[].merchantNamestringalwaystextMerchant display name
records[].datestringalwaysdatetimeRecord timestamp
records[].txHashstringalwaystextPublic transaction hash. May be an empty string when no transaction hash is available
pagination.pageIndexintegeralwayscountCurrent page index
pagination.pageSizeintegeralwayscountCurrent page size
pagination.totalintegeralwayscountTotal number of matching records

Response example.

{ "data": { "records": [ { "action": "mint", "status": "pending", "network": "eth", "amount": "10.00000000", "merchantName": "Unknown", "date": "2026-06-23T07:05:25.168000Z", "txHash": "0xfe830751bd2bb181595258a1948752436c4ba9b85b2d839483d93276f4855156" } ], "pagination": { "pageIndex": 1, "pageSize": 20, "total": 1666 } }, "meta": { "updatedAt": "2026-06-22T15:20:48Z", "version": "v1" } }

Errors. See section 3. Invalid pagination parameters return INVALID_PARAM. Use the supported filter values listed above for consistent results.


5.4 Participants

Overview. Public WBTC participants, such as custodians and merchants.

Typical use. Display WBTC participant lists or filter participants by role or tag.

When not to use. For exchanges, wallets, bridges, DeFi integrations, and other service providers, use sections 5.5 and 5.6.

Endpoint. GET /public/v1/participants - Base URL & auth see section 1.

Request parameters.

ParameterTypeRequiredDescription
rolestringNoFilter by participant role. Allowed values: merchant, custodian
tagstringNoFilter by participant tag. Maximum length: 64 characters

Request example.

curl "https://openapi.wbtc.network/public/v1/participants" curl "https://openapi.wbtc.network/public/v1/participants?role=custodian"

Response fields.

FieldTypeExistenceUnitDescription
participants[]arrayalways-Public participant entries
participants[].rolestringalwaysenumParticipant role
participants[].namestringalwaystextParticipant name
participants[].descriptionstringalwaystextPublic participant description
participants[].tags[]arrayalwaystextPublic participant tags
participants[].websitestringalwaysurlParticipant website

Response example.

{ "data": { "participants": [ { "role": "custodian", "name": "BitGo", "description": "BitGo is the market leader in institutional cryptocurrency financial services, providing security, compliance, and custodial solutions.", "tags": ["Custodian"], "website": "https://www.bitgo.com/" } ] }, "meta": { "updatedAt": "2026-06-24T04:00:49.863904Z", "version": "v1" } }

Errors. See section 3. Invalid filter parameters return INVALID_PARAM.


5.5 Providers

Overview. Public Get WBTC providers, such as centralized and decentralized exchanges.

Typical use. Show where users can access or trade WBTC.

When not to use. For protocol participants such as custodians and merchants, use section 5.4.

Endpoint. GET /public/v1/providers - Base URL & auth see section 1.

Request parameters.

ParameterTypeRequiredDescription
typestringNoFilter by provider type. Allowed values: cex, dex
networkstringNoFilter by supported network display name, for example Ethereum. Maximum length: 64 characters
qstringNoCase-insensitive text search by provider name. Maximum length: 64 characters

Request example.

curl "https://openapi.wbtc.network/public/v1/providers" curl "https://openapi.wbtc.network/public/v1/providers?type=cex" curl "https://openapi.wbtc.network/public/v1/providers?network=Ethereum&q=binance"

Response fields.

FieldTypeExistenceUnitDescription
providers[]arrayalways-Public provider entries
providers[].namestringalwaystextProvider name
providers[].typestringalwaysenumProvider category or type
providers[].networks[]arrayalwaystextSupported networks
providers[].urlstringalwaysurlProvider URL

Response example.

{ "data": { "providers": [ { "name": "Binance", "type": "CEX", "networks": ["Ethereum", "KAVA"], "url": "https://www.binance.com" } ] }, "meta": { "updatedAt": "2026-06-24T04:00:49.863904Z", "version": "v1" } }

Errors. See section 3. Invalid filter parameters return INVALID_PARAM.


5.6 Ecosystem Projects

Overview. Ecosystem projects that integrate or support WBTC.

Typical use. Display WBTC integrations grouped by category or network.

When not to use. For provider-oriented listings such as exchanges and wallets, use section 5.5.

Endpoint. GET /public/v1/ecosystem - Base URL & auth see section 1.

Request parameters.

ParameterTypeRequiredDescription
categorystringNoFilter by project category. Allowed values: defi, chains, wallet, bridge
networkstringNoFilter by supported network display name, for example Ethereum. Maximum length: 64 characters

Request example.

curl "https://openapi.wbtc.network/public/v1/ecosystem" curl "https://openapi.wbtc.network/public/v1/ecosystem?category=defi" curl "https://openapi.wbtc.network/public/v1/ecosystem?network=Ethereum"

Response fields.

FieldTypeExistenceUnitDescription
projects[]arrayalways-Public ecosystem project entries
projects[].namestringalwaystextProject name
projects[].categorystringalwaysenumProject category
projects[].networks[]arrayalwaystextSupported networks
projects[].urlstringalwaysurlProject URL

Response example.

{ "data": { "projects": [ { "name": "AAVE", "category": "DeFi", "networks": ["Ethereum", "Arbitrum", "Polygon", "Optimism"], "url": "https://app.aave.com/reserve-overview/?underlyingAsset=0x2260fac5e5542a773aa44fbcfedf7c193bc2c599&marketName=proto_mainnet_v3" } ] }, "meta": { "updatedAt": "2026-06-24T04:00:49.863904Z", "version": "v1" } }

Errors. See section 3. Invalid filter parameters return INVALID_PARAM.


5.7 OpenAPI Document

Overview. An OpenAPI JSON document describing the WBTC Public API.

Typical use. Generate API clients or inspect request and response definitions.

When not to use. For live WBTC data, call the relevant endpoint directly.

Endpoint. GET /public/v1/openapi.json - Base URL & auth see section 1.

Request parameters. None.

Request example.

curl "https://openapi.wbtc.network/public/v1/openapi.json"

Response. OpenAPI JSON document.

Errors. See section 3.