API Reference
Endpoint reference for Turnqey API v2026.04.1, rendered from the public OpenAPI spec.
openapi/turnqey.yaml.Servers
https://api.turnqey.xyz- Turnqey API - Production (use /v1/api/* paths)https://qscore.turnqey.xyz- QScore API - Production (use /api/* paths)https://sandbox.turnqey.xyz- Sandbox
Auth
Bearer-token issuance for the Turnqey API.
/v1/api/tokenAuthGenerate authentication token
Creates a new JWT token using client credentials. Tokens are valid for one hour - call this endpoint hourly to rotate.
Request body
{
"clientId": "tnq_client_01HVYX",
"clientSecret": "••••••••"
}Responses
{
"isError": false,
"message": "Success",
"result": {
"accessToken": "eyJhbGciOiJIUzI1Ni…",
"expiresIn": 3600,
"tokenType": "Bearer"
},
"statusCode": 200
}Accounts
Cryptoasset accounts, identity lookups, transactions, and balances.
/v1/api/account/collection/{collectionId}AccountsGet account collection by ID
Retrieves account information for a specific collection identified by its UUID.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
collectionId | path | string (uuid) | Yes | UUID of the account collection. |
Responses
{
"isError": false,
"message": "Success",
"result": {
"accountId": "12345678-e89b-12d3-a456-426614174000",
"collectionId": "98765432-e89b-12d3-a456-426614174000",
"platform": "coinbase",
"createdOn": "2024-08-01T00:00:00Z"
},
"statusCode": 200
}/v1/api/account/identity/{identity}AccountsGet account by identity
Retrieves account information for a specific identity string (e.g. external advisor identifier).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
identity | path | string | Yes | Identity string used by the partner system. |
Responses
{
"isError": false,
"message": "Success",
"result": {
"accountId": "12345678-e89b-12d3-a456-426614174000",
"identity": "advisor_42",
"platform": "kraken"
},
"statusCode": 200
}/v1/api/account/{accountId}/transactionsAccountsGet account transactions
Retrieves transaction history for a specific account identified by its UUID.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
accountId | path | string (uuid) | Yes | UUID of the account. |
from | query | string (date) | No | Inclusive start date (ISO-8601). |
to | query | string (date) | No | Inclusive end date (ISO-8601). |
Responses
{
"isError": false,
"message": "Success",
"result": {
"transactions": [
{
"transactionId": "tx_01HVYX",
"symbol": "BTC",
"direction": "buy",
"amount": "0.5",
"price": "49000.00",
"timestamp": "2024-09-12T15:04:05Z"
}
]
},
"statusCode": 200
}/v1/api/account/{accountId}/balancesAccountsGet account balances
Retrieves current balances for a specific account identified by its UUID.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
accountId | path | string (uuid) | Yes | UUID of the account. |
forceRefresh | query | boolean | No | Force a refresh from the source if cached data is older than 30 minutes. |
Responses
{
"isError": false,
"message": "Success",
"result": {
"balances": [
{
"symbol": "BTC",
"balance": "0.5",
"costBasis": "24500.00",
"marketValue": "25000.00",
"realizedGainLoss": "500.00",
"unrealizedGainLoss": "500.00"
}
],
"lastUpdatedOn": "2024-09-12T15:04:05Z",
"marketValue": "25000.00",
"realizedGainLoss": "500.00",
"unrealizedGainLoss": "500.00"
},
"statusCode": 200
}Integrity
Data checksum endpoints used for partner reconciliation.
/v1/api/checksumIntegrityGet data checksum
Retrieves a checksum for data verification, filtered by platform, collection, or identity.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
platform | query | string | No | Filter by source platform (e.g. coinbase, kraken). |
collectionId | query | string (uuid) | No | Filter by account collection. |
identity | query | string | No | Filter by external identity string. |
Responses
{
"isError": false,
"message": "Success",
"result": {
"checksum": "f3a1c0b9d4e8…",
"computedAt": "2024-09-12T15:04:05Z",
"rowCount": 4218
},
"statusCode": 200
}Cryptoassets
Market data, prices, and reference info for tracked cryptocurrencies.
/api/crypto-data/{symbols}CryptoassetsGet cryptocurrency market data
Fetch current market data for the specified cryptocurrencies. `symbols` is a comma-separated list of CoinGecko IDs (e.g. `bitcoin,ethereum,solana`).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
symbols | path | string | Yes | Comma-separated list of cryptocurrency symbols. |
Responses
[
{
"id": 1,
"symbol": "BTC",
"name": "Bitcoin",
"price": 64321.12,
"marketCap": 1268000000000,
"marketCapRank": 1,
"circulatingSupply": 19712000,
"totalSupply": 21000000,
"maxSupply": 21000000,
"volume24h": 32100000000,
"volatility": 0.62,
"communityScore": 87.4,
"developerScore": 92.1,
"liquidityScore": 95,
"publicInterestScore": 88.6,
"lastUpdated": "2024-09-12T15:04:05Z"
}
]QScore
Portfolio risk and credit-style scoring (Q, F, R scores).
/api/calculate-portfolio-scoreQScoreCalculate portfolio Q Score
Calculate the overall Q Score, F Score, and R Score for a cryptocurrency portfolio described by per-asset allocation percentages.
Request body
{
"btcAllocation": 60,
"ethAllocation": 30,
"solAllocation": 10
}Responses
{
"qScore": 82.4,
"fScore": 78.1,
"rScore": 64.9,
"allocation": {
"BTC": 60,
"ETH": 30,
"SOL": 10
},
"breakdown": {
"BTC": 88,
"ETH": 79,
"SOL": 65
}
}/api/scoresQScoreGet all cryptocurrency Q scores
Retrieve Q scores, F scores, and R scores for all tracked cryptocurrencies.
Responses
[
{
"symbol": "BTC",
"qScore": 88,
"fScore": 90.1,
"rScore": 70.2
},
{
"symbol": "ETH",
"qScore": 79,
"fScore": 81.5,
"rScore": 64
}
]/qscore/evaluateQScoreEvaluate a QScore for a linked account
Compute a QScore for a portfolio snapshot already linked via ByAllAccounts.
Request body
{
"account_id": "acct_01HVYX",
"as_of_date": "2026-04-15"
}Responses
{
"score": 812,
"grade": "A+",
"btc_weight": "64%",
"risk_level": "aggressive"
}Portfolios
Cryptocurrency portfolio CRUD with weighted allocations.
/api/portfoliosPortfoliosGet all portfolios
Retrieve all user portfolios with their allocations.
Responses
[
{
"id": "pf_01HVYX",
"name": "Conservative Crypto",
"allocations": {
"BTC": 70,
"ETH": 30
}
}
]/api/portfoliosPortfoliosCreate a new portfolio
Create a new cryptocurrency portfolio.
Request body
{
"name": "Aggressive Growth",
"allocations": {
"BTC": 50,
"ETH": 30,
"SOL": 20
}
}Responses
{
"id": "pf_01HVZY",
"name": "Aggressive Growth",
"allocations": {
"BTC": 50,
"ETH": 30,
"SOL": 20
}
}/api/portfolios/{id}PortfoliosGet portfolio by ID
Retrieve a specific portfolio with its allocations.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Portfolio identifier. |
Responses
{
"id": "pf_01HVYX",
"name": "Conservative Crypto",
"allocations": {
"BTC": 70,
"ETH": 30
},
"qScore": 82.4
}/api/portfolios/{id}PortfoliosUpdate portfolio
Update an existing portfolio (replaces allocations).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Portfolio identifier. |
Request body
{
"name": "Conservative Crypto v2",
"allocations": {
"BTC": 65,
"ETH": 35
}
}Responses
{
"id": "pf_01HVYX",
"name": "Conservative Crypto v2",
"allocations": {
"BTC": 65,
"ETH": 35
}
}/api/portfolios/{id}PortfoliosDelete portfolio
Delete a portfolio and its allocations.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Portfolio identifier. |
Responses
Status
Service status and health probes.
/api/statusStatusGet API status and health information
Check API connectivity, rate limits, and system status.
Responses
{
"status": "ok",
"uptimeSeconds": 481239,
"rateLimitRemaining": 1000,
"version": "2026.04.1"
}ByAllAccounts
Aggregated financial accounts and portfolio summaries.
/portfolio/summaryByAllAccountsPortfolio summary
Returns an aggregated portfolio summary across linked institutions.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
account_id | query | string | No | Restrict the summary to a single linked account. |
Responses
{
"btc_balance": "2.847 BTC",
"usd_value": "$274,318",
"exchanges": [
"Coinbase",
"Kraken"
],
"sync_status": "live"
}TAIP
Cryptoasset tax reporting and Form 8949 generation.
/taip/gains-reportTAIPGains report
Realized and unrealized gains for an account, ready for Form 8949.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
tax_year | query | integer | Yes | Tax year (e.g. 2026). |
Responses
{
"asset": "BTC",
"net_gains": "$98,140",
"transactions": 312,
"form_8949": "ready"
}Qeychain
Wallet-address-based holdings, cost basis, IRS Schedule 1.
/qeychain/walletsQeychainList tracked wallets
Returns a paginated list of wallets tracked under your organization.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
limit | query | integer | No | Page size (default 50, max 200). |
cursor | query | string | No | Cursor returned by a previous page. |
Responses
{
"data": [
{
"address": "bc1qxy2k...",
"chain": "bitcoin",
"btc_holdings": "1.204 BTC",
"cost_basis": "$51,200",
"unrealized_pnl": "+$64,918"
}
],
"next_cursor": null
}Q-Sim
Portfolio simulation and scenario modeling.
/qsim/simulateQ-SimRun a portfolio simulation
Run scenario projections (bull/base/bear) over a target horizon.
Request body
{
"portfolio": [
{
"symbol": "BTC",
"weight": 0.6
},
{
"symbol": "ETH",
"weight": 0.4
}
],
"horizon_years": 5,
"scenarios": [
"bull",
"base",
"bear"
]
}Responses
{
"scenarios": [
{
"name": "bull",
"cagr": "21.4%",
"terminal_usd": "$264,118"
},
{
"name": "base",
"cagr": "9.2%",
"terminal_usd": "$155,402"
},
{
"name": "bear",
"cagr": "-3.1%",
"terminal_usd": "$85,431"
}
]
}ROI
Investment ROI and benchmark projections.
/roi/projectionROIROI projection
Single-shot ROI projection given a principal and horizon.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
principal_usd | query | number | Yes | Principal amount in USD. |
horizon_years | query | integer | Yes | Investment horizon in years. |
Responses
{
"principal_usd": 100000,
"horizon_years": 10,
"terminal_usd": "$248,400",
"cagr": "9.5%",
"benchmark_diff": "+2.1%"
}