Product Developer API

One API for every
compliance workflow.

The Enthron REST API exposes all platform modules through a single authenticated interface. Keys are tied to your plan's rate limits and quota allocations, and are available immediately upon subscribing to a Flex or Business plan.

Quick start
# Authenticate with your API key
curl -X POST https://app.enthron.ai/api/public/classify/start \
  -H "X-API-Key: sk_live_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "reference_id": "SHIP-2026-0041",
    "exporter_name": "Acme Industrial Ltd",
    "importer_name": "SkyTech GmbH",
    "origin_country": "China",
    "destination_country": "Germany",
    "product_name": "Industrial servo controller",
    "description": "Programmable motion controller, 24V DC"
  }'
Authentication

API key authentication.

All requests to the Enthron API must include a valid API key in the X-API-Key request header. API keys are scoped to a single account and inherit the rate limits and module access of the associated subscription plan.

Keys are generated and managed from the API section of your Enthron dashboard. Each key can be revoked and rotated at any time without affecting other keys on the account.

The API base URL for all endpoints is https://app.enthron.ai/api/public. All responses are returned as JSON. HTTPS is required for all requests; plain HTTP connections are rejected.

Authentication reference
Header X-API-Key
Format sk_live_<key_string>
Scheme Static key — no OAuth or JWT. Keys can be rotated anytime.
Base URL https://app.enthron.ai/api/public
Protocol HTTPS only. TLS 1.2 minimum.
Content-Type All request and response bodies are JSON. Set Content-Type: application/json on POST requests.
Endpoint Reference

Available endpoints.

POST /classify/start
Classification Start Classification

Submit a product for HS/HTSUS/TARIC/UK Tariff classification. Returns a job ID and an immediate determination, or targeted follow-up questions where clarification is needed to navigate a tariff branch.

GET /classify/status
Classification Status Classification

Retrieve the current status and result of a classification job by job ID. Use to poll for completion when clarification questions are pending and answers have been submitted.

POST /classify/answer
Classification Answer Classification

Submit answers to follow-up clarification questions for a pending classification job. Classification resumes immediately on receipt of a valid answer payload.

POST /screen/party
Party Screening Sanctions

Screen one or more parties against all active denied party and restricted entity lists including OFAC, BIS, UFLPA, UN SC, EU CFSP, HM Treasury, and beneficial ownership chains (50% Rule). Returns match results with similarity scores.

Endpoint Method Module Description
/classify/start POST Classification Submit a product for HS/HTSUS/TARIC/UK Tariff classification. Returns a classification job ID and, where the product description is sufficient, an immediate determination. Where clarification is required, returns targeted follow-up questions.
/classify/status GET Classification Retrieve the current status and result of a classification job by job ID. Use to poll for completion when clarification questions are pending and answers have been submitted.
/classify/answer POST Classification Submit answers to follow-up clarification questions for a pending classification job. Classification resumes immediately on receipt of a valid answer payload.
/screen/party POST Sanctions Screening Screen one or more parties against all active denied party and restricted entity lists including OFAC, BIS, UFLPA, UN SC, EU CFSP, HM Treasury, and beneficial ownership chains (50% Rule). Returns match results with similarity scores.
Request & Response Examples

Four modules, one interface.

POST /classify/start

Product Classification

Submit the product name, description, and shipment details. The engine returns an immediate determination where description is sufficient, or a structured follow-up question where additional specificity is required to navigate a tariff branch.

The reference_id field is a caller-assigned identifier for correlating API results with your internal records. It is returned unchanged in all responses for that job.

Request
{
  "reference_id": "SHIP-2026-0041",
  "exporter_name": "Acme Industrial Ltd",
  "importer_name": "SkyTech GmbH",
  "origin_country": "China",
  "destination_country": "Germany",
  "product_name": "Industrial servo controller",
  "description": "Programmable motion controller, 24V DC"
}
Response — 200 OK
{
  "status": "needs_follow_up",
  "reference_id": "SHIP-2026-0041",
  "product_name": "Industrial servo controller",
  "description": "Programmable motion controller, 24V DC",
  "follow_up_questions": ["What specific type of equipment or machinery is this servo controller intended to operate or integrate with?"],
  "result": {
    "hs_code": "9032.--.--.--",
    "confidence": 0.0,
    "schedule": "TARIC",
    "rationale": []
  }
}
POST /screen/party

Sanctions & Party Screening

Screen one or more parties in a single request. Each party object should include the name and any known identifiers. The engine screens concurrently against all active lists and returns a consolidated match result for each party.

Results include a match_score (0–1) and are labeled high_risk, needs_review, or clear based on the configured match thresholds.

Request body
{
  "parties": [
    {
      "party_name": "Global Components Ltd.",
      "country": "United Kingdom"
    }
  ]
}
Response
{
  "results": [
    {
      "party_name": "Global Components Ltd.",
      "country": "United Kingdom",
      "match_score": 0.9821,
      "matched_entity": "Global Components Limited",
      "matched_source": "OFAC",
      "status": "high_risk"
    }
  ]
}
Rate Limits & Quotas

Limits by plan.

Flex
50–1,000

Classifications per month, matching your selected Flex tier. Rate limit: up to 10 requests per minute per key.

Business
Custom

Volume and rate limits negotiated per account. Sustained throughput of 50+ requests per second available on request. Dedicated SLA and uptime guarantee.

Errors
429

Rate-limit exceeded responses include a Retry-After header indicating number of seconds before request may be retried.

Standard error codes
CodeStatusCause
400Bad RequestMalformed JSON body or missing required field. Check the request schema against the endpoint reference.
401UnauthorisedMissing or invalid X-API-Key header. Verify the key is active and correctly formatted.
402Payment RequiredMonthly quota exhausted. Purchase additional credits or upgrade your plan.
404Not FoundThe referenced job ID does not exist or belongs to a different account.
429Too Many RequestsPer-second rate limit exceeded. Honour the Retry-After header and implement exponential backoff.
500Server ErrorInternal error. Retry with backoff. If persistent, contact support with the x-request-id response header value.
Get Started

Ready to integrate?
Your key is one step away.

API access is available on Flex and Business plans. Sign up, subscribe, and your key is available immediately from the API section of your dashboard. No approval queue. No waiting.