cryptotaxedge-com Classify API
The Classify API from cryptotaxedge-com — 1 operation(s) for classify.
The Classify API from cryptotaxedge-com — 1 operation(s) for classify.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/cryptotaxedge-com:cryptotaxedge-com-classify-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: CryptoTaxEdge classification Classify API
version: 1.0.0
summary: 'Per-transaction crypto tax classification: category, treatment, confidence, and per-leg reasoning.'
description: 'Send blockchain transaction hashes; receive the canonical category, a closed five-value tax treatment, a confidence signal, review routing, and per-leg asset movements.
Contract guarantees:
- Within v1 changes are additive only: fields are never renamed or removed, and the treatment enum never gains a value without a version bump. Ignore unknown fields.
- An uncertain transaction is never a silent wrong answer: needs_review true always travels with taxable null and a review_note.
- Errors always use one envelope: { "error": { "code", "message" } }.
Human-readable documentation: https://dashboard.cryptotaxedge.com/api
Category and treatment taxonomy: https://cryptotaxedge.com/taxonomy'
contact:
name: CryptoTaxEdge
email: hello@cryptotaxedge.com
url: https://dashboard.cryptotaxedge.com/api
termsOfService: https://cryptotaxedge.com/legal
license:
name: CC BY 4.0
identifier: CC-BY-4.0
servers:
- url: https://app.cryptotaxedge.com
description: Production
security:
- bearerAuth: []
tags:
- name: Classify
paths:
/v1/classify:
post:
operationId: classifyTransaction
summary: Classify one transaction by hash
description: 'Classifies a single on-chain transaction. chain is optional and auto-detected when omitted; if you pin a chain and the transaction is found on a different supported chain, the response ships the real classification plus a chain_corrected note instead of a 404. Rate limit: 60 requests per minute per key.'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- hash
properties:
hash:
type: string
description: 0x-prefixed 64-hex EVM transaction hash, or a base58 Solana signature.
examples:
- '0x280710a5673a8ff1af7f623ddb5148417ac36539228d0eec8edb8a57b19383c2'
chain:
type: string
description: Optional chain slug (auto-detected when omitted). Supported chains are listed at GET /chains.
examples:
- ethereum
policy:
$ref: '#/components/schemas/Policy'
responses:
'200':
description: Classification verdict.
headers:
X-CTE-Subreq-Spent:
description: Engine fan-out spent on this request (integer). Informational. A single classify that cannot reach a verdict is an HTTP error, never a 200 needs_review. Leg-sensitive verdicts whose receipt legs could not be derived are a real needs_review classification (treatment needs_review), not an unfinished item.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/Classification'
example:
api_version: v1
hash: '0x5739976e4967221076398c4bee97b715c4a31aeecefdc70b68920b55046dca22'
chain: ethereum
category: collateral_supply
treatment: non_taxable
taxable: false
confidence: 99
needs_review: false
ledger_action: Deposit
protocol: Aave V3
description: 'Assets deposited into a lending position: a aToken (aEthWBTC) for the same economic interest was minted, not a cross-asset disposal. Treated as a non-taxable deposit.'
review_note: null
grey_area: null
assets:
sent:
- symbol: WBTC
amount: '0.318217'
decimals: 8
action: transferred
token_address: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599'
to: '0x5ee5bf7ae06d1be5997a1a72006fe6c607ec6de8'
received:
- symbol: aEthWBTC
amount: '0.318251'
decimals: 8
action: received
token_address: '0x5ee5bf7ae06d1be5997a1a72006fe6c607ec6de8'
token_name: Aave Ethereum WBTC
from: '0x0000000000000000000000000000000000000000'
gas: null
'400':
description: 'Malformed body or hash. Fix the request; do not retry unchanged. Codes: invalid_request, invalid_hash.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: 'Missing or invalid API key. Codes: unauthorized.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'402':
description: 'Classification pool exhausted for the period. Repeats of already-classified hashes remain free; check GET /quota-status. Codes: quota_exceeded.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: 'The hash is well-formed but no verdict exists: not found on the searched chain(s), matched no supported chain, or still in the mempool. Never returned as a 200 needs_review. Codes: tx_not_found, chain_not_detected, tx_not_yet_mined.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'429':
description: 'Over the per-key rate limit. Back off and retry. Codes: rate_limited.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
'500':
description: 'Engine fault, logged for review. Retry shortly. Codes: internal_error.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
tags:
- Classify
components:
schemas:
Policy:
type: object
properties:
ruleset:
type: string
custom:
type: boolean
Classification:
type: object
properties:
api_version:
type: string
hash:
type: string
chain:
type: string
category:
type: string
treatment:
type: string
taxable:
type: boolean
confidence:
type: integer
needs_review:
type: boolean
ledger_action:
type: string
protocol:
type: string
description:
type: string
review_note:
type:
- string
- 'null'
grey_area:
type:
- string
- 'null'
assets:
$ref: '#/components/schemas/Assets'
Assets:
type: object
properties:
sent:
type: array
items:
$ref: '#/components/schemas/Asset'
received:
type: array
items:
$ref: '#/components/schemas/Asset'
gas:
type:
- object
- 'null'
ErrorEnvelope:
type: object
properties:
error:
type: object
properties:
code:
type: string
message:
type: string
Asset:
type: object
properties:
symbol:
type: string
amount:
type: string
decimals:
type: integer
action:
type: string
token_address:
type: string
to:
type: string
token_name:
type: string
from:
type: string