Tokens
One token's page under a key: its detail and its signals.
The token routes answer with the same views Traktor's token page reads, in the v1 envelope and drawn from your plan's units.
Each answer is the view the server last built for that token, shared with every other reader of it. meta.asOf dates that build, and an answer carrying X-Market-Stale: 1 is the view kept through a rebuild that failed. chain and address are checked before the request is admitted, as is every query key a route takes: a chain or address the route cannot read, or a key it does not take, is a 400 with no X-Traktor-Cost.
GET /v1/tokens/{chain}/{address}
One token's detail and candles, the token page's header and chart.
- Credential
- API key
- REST units
- 5 units
chainenumrequiredpathThe token's chain.
One of:
solana,base,bnb,robinhood,arc,arbitrum,ethereumaddressaddressrequiredpathThe token's contract address; a Solana mint keeps its case.
intervalenumqueryCandle width.
Default
5mOne of:1m,5m,15m,1h,4h,12h,1d
Limits
- Invalid keys30 a minute, per IP
Errors
invalid_parameter, unknown_parameter, duplicate_query_parameter, route_not_found, data_unavailable, market_busy, market_fold_pending, missing_credentials, invalid_key, key_revoked, subscription_inactive, key_in_query, method_not_allowed, rate_limited, quota_exhausted, rate_limit_unavailable, internal_error
curl -s "https://api.traktor.fun/v1/tokens/base/0x4444444444444444444444444444444444444444" \
-H "Authorization: Bearer $TRAKTOR_API_KEY"const response = await fetch("https://api.traktor.fun/v1/tokens/base/0x4444444444444444444444444444444444444444", {
headers: { Authorization: `Bearer ${process.env.TRAKTOR_API_KEY}` },
});
const body = await response.json();import os
import requests
response = requests.get(
"https://api.traktor.fun/v1/tokens/base/0x4444444444444444444444444444444444444444",
headers={"Authorization": f"Bearer {os.environ['TRAKTOR_API_KEY']}"},
)
print(response.json())GET /v1/tokens/{chain}/{address}/signals
One token's signals, newest first.
- Credential
- API key
- REST units
- 2 units
chainenumrequiredpathThe token's chain.
One of:
solana,base,bnb,robinhood,arc,arbitrum,ethereumaddressaddressrequiredpathThe token's contract address; a Solana mint keeps its case.
Limits
- Invalid keys30 a minute, per IP
Errors
invalid_parameter, unknown_parameter, duplicate_query_parameter, route_not_found, data_unavailable, market_busy, market_fold_pending, missing_credentials, invalid_key, key_revoked, subscription_inactive, key_in_query, method_not_allowed, rate_limited, quota_exhausted, rate_limit_unavailable, internal_error
curl -s "https://api.traktor.fun/v1/tokens/base/0x4444444444444444444444444444444444444444/signals" \
-H "Authorization: Bearer $TRAKTOR_API_KEY"const response = await fetch("https://api.traktor.fun/v1/tokens/base/0x4444444444444444444444444444444444444444/signals", {
headers: { Authorization: `Bearer ${process.env.TRAKTOR_API_KEY}` },
});
const body = await response.json();import os
import requests
response = requests.get(
"https://api.traktor.fun/v1/tokens/base/0x4444444444444444444444444444444444444444/signals",
headers={"Authorization": f"Bearer {os.environ['TRAKTOR_API_KEY']}"},
)
print(response.json())The detail warns before a buy.
token.honeypotis the reading that judged the token a honeypot, its day's distinctbuyersandsellersand when (at):falseonce a reading judged it none,nullwhere none has, as on every Solana token.token.transferFeeBpsis a Solana mint's transfer fee in basis points, the rate it charges now or a higher one it has already scheduled, taken from every buy and sale up to the mint's cap on one transfer:0where the mint charges none,nulluntil it is read and on every other chain.token.taxis an EVM token's own buy and sell tax, the share of a buy (buyBps) and of a sale (sellBps) its contract keeps in basis points, read by simulating a small buy and sale through its market pool, and when (at): a side the simulation could not read isnull, never0, and the whole isnullwhere no reading of the last six hours exists, on a token whose market pool is not a v2 pool in the chain's wrapped native, and on every Solana token. The simulated buyer and seller is a contract that sells straight after its buy, so where a token taxes contracts or a quick resale more, the reading is what that contract would pay.token.safetyis what three outside token checkers last said of an EVM token, theflagsthey raised and when (at):goplus_honeypot,goplus_airdrop_scamandgoplus_fake_tokenare the first checker's flags for a honeypot, an airdrop scam and a copy of another token, andhoneypot_is_simulationis a sale the second checker's simulation could not make, asked only where the first raised none, on the chains the second serves. On the EVM chains it does not serve, the third is asked about a token viewed lately that the first raised none on, when Traktor has its budget:serialized_audit_simulationis a sale its simulation could not make, andserialized_audit_sell_blocka contract it finds can stop a sale. An emptyflagsis a reading that raised none, served for a day; a reading that raised a flag is served until a newer one replaces it, however old, soatcan be days back on a token nobody has traded or viewed since; the whole isnullwhere no reading raised a flag and none answered in the last day, and on every Solana token.token.goplusis the first checker's reading of the token's contract, on every chain, and when it was read (at), served however old:checksholds each check it answered,trueorfalse, a check it left out absent, neverfalse(on the EVM chainshoneypot,cannotBuy,cannotSellAll,airdropScam,fakeToken,creatorHoneypots,pausable,blacklist,whitelist,cooldown,antiWhale,antiWhaleChangeable,taxChangeable,walletTax,mintable,balanceChangeable,hiddenOwner,reclaimOwner,selfDestruct,externalCall,proxy,closedSourceandownerRenounced; on SolananonTransferable,freezable,taxChangeable,transferHook,hookChangeable,mintable,balanceChangeable,closableandmetadataChangeable; on bothtrusted, present only astrue). Atrueis a risk but forownerRenouncedandtrusted.buyTax,sellTax,transferTaxandcreatorShareare shares of 0 to 1,lpLockedSharethe share of its pools' liquidity tokens held locked or burned andholderCountits count, eachnullwhere it gave none or, forlpLockedShare, did not say a holder's lock or a locked holder's share. The whole isnullwhere that checker has not read the token or held no reading when asked.token.securityis Traktor's own token checker's last scan, on every chain: averdict(benign,warning,maliciousorspam,nullwhere too little was read to judge), ascorefrom 0 to 1, each check it read under its feature id with afinding(yes,no, orpossiblefor a power the code holds that no simulation proved), aseverityand when it was read (at), thefeesa simulated trade measured in basis points and thelimitsit read in whole tokens (falsewhere the contract holds none). A check it did not read is absent, neverno, and a verdict isbenignonly where a simulated sale went through or the token is on the trusted list. A scan that found harm, or in which a simulated sale failed or found the token unsellable whatever its verdict (a trusted token's among them), is served until the next one, however old; any other for a day; the whole isnullwhere the token has not been scanned or its last clean scan is older. Itsfeesare served for six hours, astoken.taxis, thennullwhatever the verdict.token.codexRiskis the market data provider's last risk read of the token, on every chain it reads, Solana's included: itsverdict(SCAM,HIGH_RISK,CAUTION,NEUTRAL,VERIFIEDorVERIFIED_CONTESTED,nullwhere it sent none or one not listed here), the reason codes it cited (reasons, as it spells them,PROOF_HONEYPOT_SIMorTAX_SELL_HIGHfor example, a code added later kept) and when Traktor stored it (at), served however old.SCAMrests on a proof or a reviewer's label andHIGH_RISKandCAUTIONon the provider's score;NEUTRALis not clean, as it can stand on a token the provider ran no sale check on. The whole isnullwhere the provider has not read the token or sent no risk read, never a clean one.token.quoteControlsis what the issuer of a Solana token's quote can do to it, where the token's market pool is quoted in a coin that is not SOL, USDC or USDT: the quote'smintandsymbol(nullwhere its own record names none), whether the mint can be paused (pausable) and is paused now (paused), a transfer fee its authority can change (feeChangeable) and the fee charged in basis points (feeBps, the rate in force or a higher one already scheduled,nullwhere unread), a permanent delegate that can move or burn any holder's balance (permanentDelegate), and when the mint was read so (at). Traktor reads the quote's mint once a minute and writes the reading onto the tokens quoted in it that it watches, the active ones and up to 2,000 more of those traded in the last day, at least hourly; the detail serves it for three hours from that write while the market pool is still quoted in it. The whole isnullwhere the quote grants none of these powers, where no write of the last three hours stands, and on every other chain; only the market pool's quote is read, sonullsays nothing of the token's other pools. A quote paused now, or keeping 10% or more of a transfer, holds a buy on the token page for the trader's word.
A token's signals carry the wallet behind each trade, and that wallet's year and win rate, as the signal feed's do.
Search
GET /v1/search
The keyless token search's answer under a key: tokens matching a ticker, a stock's company name or a contract address, at most 8 of them.
- Credential
- API key
- REST units
- 1 unit
qstringrequiredqueryA ticker, the start of a stock's company name, a contract address or mint, or the start of an EVM address.
up to 64
Limits
- Invalid keys30 a minute, per IP
- Token directory lookups on each server10 a minute, per account
- Searches building4 at once, per account
Errors
invalid_parameter, unknown_parameter, duplicate_query_parameter, data_unavailable, market_busy, missing_credentials, invalid_key, key_revoked, subscription_inactive, key_in_query, method_not_allowed, rate_limited, quota_exhausted, rate_limit_unavailable, internal_error
curl -s "https://api.traktor.fun/v1/search?q=EXAMPLE" \
-H "Authorization: Bearer $TRAKTOR_API_KEY"const response = await fetch("https://api.traktor.fun/v1/search?q=EXAMPLE", {
headers: { Authorization: `Bearer ${process.env.TRAKTOR_API_KEY}` },
});
const body = await response.json();import os
import requests
response = requests.get(
"https://api.traktor.fun/v1/search",
params={"q": "EXAMPLE"},
headers={"Authorization": f"Bearer {os.environ['TRAKTOR_API_KEY']}"},
)
print(response.json())It answers with what GET /v1/public/search answers, the same rows from the same shared answers, in the v1 envelope and drawn from your plan's units instead of the keyless route's budget per IP. An exact address the index misses is asked of an outside token directory on your account's own allowance, at most 10 lookups a minute on each API server, inside the 30 a minute every reader of that server shares and the 30 of its 40 directory reads a minute that its open pages share with search, and within the 50 a minute every server spends together; past any of them, or when the lookup fails, external.tokens is null and the answer is kept by no cache. A q that is neither a ticker nor an address is 400 invalid_parameter, refused before admission. An account holds at most 4 search builds at once of the pool the keyless route shares, so past that, or when every build is taken, the answer is 503 market_busy, and its unit comes back.
When a read fails
A view still being built, or one that failed with nothing kept, is 503 data_unavailable, with details.reason warming or unavailable. A batch of trades still folding into the view is 503 market_fold_pending, and market reads too busy to take another are 503 market_busy. Each carries Retry-After, and its units come back: X-Traktor-Cost: 0.