Tandom API
One namespace, one auth header, every trade capability. Customs, AD/CVD, classification, documents, screening, monitoring — all under api.tandom.ai/v1.
Free up to per-endpoint limits. No credit card. Sign up and you have a key in 60 seconds.
Authentication
All requests require a Bearer token in the Authorization header. Use tk_live_... for production traffic and tk_test_... for sandbox calls (route to fixture data, no real DB writes, no Claude calls).
Authorization: Bearer tk_live_4f3a9c7e8b1d6f5a2c4e8b1d6f5a2c4e # Test it curl https://api.tandom.ai/v1/hts/search \ -H "Authorization: Bearer tk_live_..." \ -G -d "q=ball+bearings"
Duty calculation
Available nowCompute the full landed-duty stack for any HTS line — MFN, Section 232, Section 301, Section 122, IEEPA, Chapter 99, AD/CVD, MPF, HMF — with every line cited to its legal source.
Endpoints
- GET/v1/duty/calculate
- POST/v1/duty/calculate/batch
Free tier
1,000 calls / month. Upgrade →
Request
curl https://api.tandom.ai/v1/duty/calculate \ -H "Authorization: Bearer tk_live_..." \ -G \ -d "hts=7307.91.50.10" \ -d "origin=CN" \ -d "value=10000" \ -d "date=2026-04-29"
Response
{
"dutyInfo": {
"htsCode": "7307.91.50.10",
"description": "Flanges, stainless steel, forged",
"generalRate": "5.5%",
"specialRates": "Free (A, AU, BH, ...)",
"column2Rate": "45%",
"calculationComplete": true,
"chapter99Sources": [
{
"code": "9903.88.03",
"authority": "Section 301 List 3",
"rate": "25%",
"amount": 2500,
"citation": "83 FR 47974",
"aceReportingOrder": 1
}
],
"matchedExclusions": [
{
"code": "9903.88.45",
"applicationState": "available_unclaimed",
"frCitation": "85 FR 47974"
}
],
"adcvdCases": [{
"caseNumber": "A-570-983",
"rate": "18.42%",
"frCitation": "FR 2024-12345"
}],
"appliedTradeProgram": null,
"availableTradePrograms": ["USMCA", "GSP (BR)"],
"valuationAdjustments": {
"method": "transaction_value",
"declaredValue": 10000,
"dutiableValue": 10000
},
"mfnAmount": 550,
"adcvdAmount": 1842,
"totalDutyAmount": 4892,
"effectiveRate": "48.92%",
"provenance": {
"baseRate": { "matchedHtsno": "7307.91.50.10" },
"chapter99": { "matchedCodes": [/* ... */] },
"adcvd": { "ordersMatched": [/* ... */] }
},
"warnings": []
}
}AD/CVD intelligence
Available nowMatch a shipment against active AD/CVD orders. Returns company-specific rates per 19 CFR 351.107, AI-determined scope analysis, and pending-investigation flags. Date-aware.
Endpoints
- GET/v1/adcvd/check
- GET/v1/adcvd/orders
- POST/v1/adcvd/report
- GET/v1/adcvd/rates-at
Free tier
50 lookups + 3 reports / month. Upgrade →
Request
curl https://api.tandom.ai/v1/adcvd/check \ -H "Authorization: Bearer tk_live_..." \ -G \ -d "htsCode=7307.91.50.10" \ -d "country=CN" \ -d "entryDate=2026-04-29" \ -d "manufacturer=Acme+Forge" \ -d "productDescription=Stainless+steel+forged+flanges"
Response
{
"matches": [{
"caseNumber": "A-570-983",
"orderType": "AD",
"product": "Stainless Steel Forged Flanges from China",
"country": "China",
"countryCode": "CN",
"rate": "18.42%",
"effectiveRate": 18.42,
"matchType": "scope_text_advisory",
"scopeText": "The merchandise covered by this order is...",
"effectiveDate": "2024-06-15",
"status": "active",
"economyType": "NME",
"htsCodes": ["7307.91.50.10", "7307.91.50.30"],
"frCitation": "FR 2024-12345",
"respondentRate": {
"rate": 18.42,
"companyName": "Acme Forge",
"rateAppliesTo": "producer",
"ratePriority": "company_specific",
"frDocumentNumber": "2024-12345"
},
"scopeAnalysis": {
"determination": "in_scope",
"confidence": 94,
"reasoning": "The product description matches the scope...",
"supportingPhrases": [
"stainless steel forged flanges of any size"
],
"applicableExclusions": []
},
"companionCaseNumber": "C-570-984",
"companionInResultSet": true,
"companionRatePercent": 132.40,
"combinedRatePercent": 150.82
}],
"matchRateRange": { "lo": 18.42, "hi": 150.82 },
"pendingInvestigations": [],
"dataSource": "2026-04-28T...",
"queryLogId": 18472
}HTS reference
Available nowSearch, browse, and walk the full Harmonized Tariff Schedule — including section / chapter notes and Chapter 99 expansion.
Endpoints
- GET/v1/hts/search
- GET/v1/hts/notes
- GET/v1/hts/browse
- GET/v1/hts/hierarchy
- GET/v1/hts/expand-s301
- GET/v1/hts/expand-ch99-scope
Free tier
5,000 calls / month. Upgrade →
Request
curl https://api.tandom.ai/v1/hts/search \ -H "Authorization: Bearer tk_live_..." \ -G \ -d "q=stainless+steel+flanges"
Response
{
"query": "stainless steel flanges",
"count": 12,
"results": [{
"htsno": "7307.91.50.10",
"indent": "10",
"description": "Flanges, stainless steel, forged",
"general": "5.5%",
"special": "Free (A, AU, BH, CA, CL, CO, ...)",
"other": "45%",
"units": ["kg"],
"chapter": "73"
}]
}PGA + Chapter 99
Available nowPartner Government Agency flags (FDA, USDA, EPA, FWS, ATF) and Chapter 99 additional tariffs for any HTS + country pair.
Endpoints
- GET/v1/pga/check
- GET/v1/chapter99/applicable
Free tier
2,000 calls / month per endpoint. Upgrade →
Request
curl https://api.tandom.ai/v1/pga/check \ -H "Authorization: Bearer tk_live_..." \ -G \ -d "htsCode=0303.43.00.10"
Response
{
"htsCode": "0303.43.00.10",
"description": "Skipjack tuna, frozen",
"flags": [
{
"agency": "Food and Drug Administration",
"agencyCode": "FDA",
"programCode": "FD2",
"aceTariffFlag": "FD2",
"aceRequirement": "R",
"severity": "required",
"triggerReason": "Imported food product subject to FSMA Prior Notice",
"requiredDocuments": ["Prior Notice", "FCE/SID"],
"regulatoryCitation": "21 CFR 1.276–1.285",
"notes": null
},
{
"agency": "National Marine Fisheries Service",
"agencyCode": "NOAA",
"programCode": "NM2",
"aceTariffFlag": "NM2",
"aceRequirement": "R",
"severity": "required",
"triggerReason": "Tuna species — SIMP traceability program",
"requiredDocuments": ["NOAA Form 370"],
"regulatoryCitation": "50 CFR Part 300 Subpart Q"
}
],
"summary": {
"total": 2,
"required": 2,
"conditional": 0,
"advisory": 0,
"agencies": ["FDA", "NOAA"]
},
"dataSource": { "version": "2026-04-28T..." }
}MCP — agent surface
Available nowJSON-RPC 2.0 endpoint exposing every Tandom REST resource as an MCP tool. Discoverable via tools/list. AI agents call directly. Four tools today: lookup_hts_code (full duty profile), search_hts_codes, list_chapters, get_chapter_codes.
Endpoints
- POST/v1/mcp
Free tier
tools/list unlimited; tools/call inherits the underlying limit. Upgrade →
Request
// JSON-RPC 2.0 — call lookup_hts_code
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lookup_hts_code",
"arguments": { "code": "7307.91.50.10" }
}
}Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{
"type": "text",
"text": "{
\"htsno\": \"7307.91.50.10\",
\"description\": \"Flanges, steel, forged\",
\"general\": \"5.5%\",
\"chapter99\": [/* S232, S301, S122 */],
\"adcvd\": [/* matched orders */],
\"tradePrograms\": [/* eligible SPIs */],
\"pga\": [/* PGA flags */],
\"provenance\": {/* full citation trace */}
}"
}]
}
}HTS Classification
Closed beta · request accessDescription → 10-digit HTS code with GRI 1-6 reasoning, CROSS ruling citations, and confidence scores.
Testing with broker design partners ahead of the HTS Classification Report product launch.
Endpoints (when shipped)
- POST/v1/classify
- POST/v1/classify/chat
- POST/v1/classify/report
We're prioritizing teams that share their use case — we use that to decide what to ship next.
Coming next
Closed beta
Built or being built with design partners. Self-serve access opens when each is production-ready.
Documents & forms
Closed beta · request accessStructured extraction of commercial invoices, packing lists, bills of lading, arrival notices, bookings, and inbound emails. Plus generation of CBP 7501 / 3461 / ISF 10+2 / ACE EDI forms.
Document extraction with pilot brokers and freight forwarders; entry-form generation handing off to ABI-certified filers.
We're prioritizing teams that share their use case — we use that to decide what to ship next.
Operations
Closed beta · request accessContainer / B/L tracking with normalized milestones, landed-cost quoting, rate-sheet parsing (Excel / PDF / email → structured rates), per-shipment CO₂e estimates.
Tracking normalization across major carriers and quoting models that fold our duty engine into total landed cost.
We're prioritizing teams that share their use case — we use that to decide what to ship next.
Compliance & finance
Closed beta · request accessSanctions / restricted-parties screening (OFAC, Entity List, UFLPA, Denied Persons, Debarred), continuous re-screening with webhooks, and 3-way carrier-invoice audits with overcharge detection + GL routing.
Screening pipelines and carrier-invoice audit logic with finance-team design partners.
We're prioritizing teams that share their use case — we use that to decide what to ship next.
Monitoring + webhooks
Closed beta · request accessRegister a product catalog and receive alerts when tariffs (S232, S301, IEEPA, AD/CVD scope) change in ways that affect your codes. Webhooks for any of the above streams.
Catalog-level change detection and webhook delivery patterns for high-volume importers.
We're prioritizing teams that share their use case — we use that to decide what to ship next.
Customs App APIs
Closed beta · request accessEntry-form generation, ISF, EDI for ACE filing — supporting the broker workspace currently in development.
End-to-end broker workflow APIs alongside the Customs App product build.
We're prioritizing teams that share their use case — we use that to decide what to ship next.
Conventions
Every endpoint inherits the same conventions. Learn it once; it applies everywhere.
Outputs
- Citations
- frCitation, frCitationUrl, crossRulingId, proclamationNumber, cfrSection, htsno
- Confidence
- Score (0–1) + tier + reasoning text on every AI-derived field
- Currency
- { value, currency: 'USD' } on every monetary field
- Freshness
- _meta.dataFreshness on every response
Inputs
- Dates
- ISO 8601, UTC implied
- Country codes
- ISO 3166-1 alpha-2
- HTS codes
- Dotted (7307.91.50.10) or undotted (7307915010)
- entryDate
- Resolves rates + scope as-of that date
Reliability
- Pagination
- Cursor-based, limit capped at 100
- Idempotency
- Idempotency-Key header on POSTs (24h replay)
- Errors
- RFC 7807 Problem Details on every 4xx / 5xx
- Rate limits
- X-RateLimit-Limit / Remaining / Reset headers