Appellation API
Send a name or description and receive a category or an ambiguous result. The API uses the same mapping for the selected taxonomy as the website and identifies the version behind each result.
This endpoint accepts one value per request against the prepared taxonomies available in the public demo.
/v1/taxonomies/naics/normalizeAmbiguous results allowed · Up to 5 candidates returned · No additional context
Preparing the request URL…Check request validates locally without running a mapping or using your live allowance.
Response
Not sentSend the request to see its HTTP status and complete response.
Use non-sensitive values and context. Public-demo usage limits apply, and the first response may take longer.
Mapping decisions
A successful request returns HTTP 200. Read decision before using the result:
matchconceptcontains anidandlabel. Appellation selected a category from the taxonomy.ambiguousconceptisnull. Appellation did not select a category. This is a successful response, not a request failure.
The candidates array is for inspection; decision tells you whether a category was selected. You can revise the description or supply relevant record context when an answer is unclear.
Request fields
Send a JSON object with Content-Type: application/json.
valuestring · Required- One non-blank source value to map, up to 4,096 characters.
contextobject or null · Default null- Additional facts about this record, such as its activity or use. Object values must be strings.
include_candidatesinteger · Default 5- Maximum number of candidates included in the response, from
0to10.
allow_ambiguousboolean · Default true- Set to false to request the best available category even when the default policy would leave it unselected. A forced selection is marked by
forced_match: true; it is not stronger evidence.
context describes the record being mapped, not the taxonomy. Set include_candidates to 0 to return an empty candidates array.
Response fields
source_valuestring- Your original
value, returned unchanged. decision"match" or "ambiguous"- The result under the requested selection policy.
conceptobject or null- The selected category for a match;
nullfor ambiguity. concept.idstring- Stable identifier of the selected category.
concept.labelstring- Its display label.
candidatesarray of {id, label} objects- Candidate categories returned for inspection, up to
include_candidates. taxonomy_idstring- The taxonomy requested in the endpoint path.
taxonomy_versionstring- The exact taxonomy version used.
mapping_buildstring- The published mapping version that produced this result.
calibrated_probabilitynumber or null- Estimated probability that the top candidate would be rated a plausible or strong fit by Appellation's evaluator, calibrated for this build;
nullwhen unavailable. This is not a similarity score. reason_codestring or null- Machine-readable explanation when no category is selected.
reasonstring or null- Human-readable explanation when no category is selected.
forced_matchboolean- True only when an explicit ambiguity override selected a candidate that did not meet the default match threshold.
Keep the taxonomy ID and version, selected concept ID when present, and mapping_build with the result. Together, they identify the category and the mapping that produced it. Labels alone are not a substitute for those identities.
The public endpoint uses the active published mapping. A change to mapping_build identifies a change to that mapping; it is distinct from the taxonomy's version and the API's /v1 path.
Evaluation summary
/v1/taxonomies/{taxonomy_id}/evaluationThis resource returns the existing evaluation summary for the active published mapping. The response identifies the taxonomy and mapping build and summarizes assessed result quality, ambiguous inputs, and retained examples. Reading it does not run a new evaluation or measure performance on your own data.
Read the active NAICS evaluation
Evaluation response fields
taxonomy_idtaxonomy_versionmapping_buildstrings- The taxonomy and mapping described by this evidence.
evaluation_rowsinteger- Number of rows in the evaluation.
quality_distribution.assessed_rowsinteger- Number of rows with fit assessments.
quality_distribution.strong_fitquality_distribution.plausible_fitquality_distribution.poor_fitnumbers or null- Shares of assessed results in each fit group;
nullwhen no assessed rows are available. ambiguous_ratenumber or nullambiguous_inputsinteger- Share and count of inputs returned as ambiguous.
examplesarray of objects- Retained
source_value,returned_label,fit, anddecisionexamples. decision_policyevidence_basisstrings- The serving decision policy and how the evidence was produced.
build_comparisonobject · When available- Two named builds tested on one frozen population, with the evaluation date, outcome shares across all cases, and selected examples of improvements. Its current build matches
mapping_build. These outcomes describe the default policy, not forced matches.
Check that mapping_build matches the result you are investigating. This resource describes the currently active mapping, which may have changed since an earlier request.
Request limits
These limits apply to the public API used by the live demo. Normalization requests here and in the browser demo share an allowance. Customer usage limits are agreed separately.
- Values per request
- 1
- Request body
- 65,536 bytes (64 KiB)
- Returned candidates
- 0 to 10; default 5
- Value length
- Up to 4,096 characters
- Record context
- Up to 32 fields; keys up to 256 characters; 16,384 total key/value characters
- Combined model input
- Up to 4,096 tokens, including context and any taxonomy prefix
The demonstration's shared allowance permits up to 20 mapping attempts per minute. A separate total usage ceiling can pause live mapping. Checking or copying a request locally does not use either allowance.
Errors and retries
A failed request is not an ambiguous mapping. Read the HTTP status and returned error details before deciding whether to correct the request or try again.
400- The request could not be processed as submitted. Inspect the returned detail and correct the request.
404- Unknown taxonomy or endpoint. Check the endpoint and taxonomy identifier.
413- Request body exceeds the limit. Reduce the request size.
422- Invalid JSON, missing value, or an invalid field. Correct the request before retrying.
429- Public-demo allowance reached. Follow
Retry-Afterwhen provided. 502- The public proxy could not reach the mapping service. Retry later with a bounded retry policy.
503- Live mapping is paused or unavailable. This includes a total usage ceiling or an unavailable build. Retry later; no substitute category is returned.
The first response may take longer while the service starts. Use a client timeout and bounded retries for temporary failures, rather than repeatedly sending the same request while it is still in progress. After the live allowance is reached, you can continue editing, checking, and copying requests locally.
Interested in using your own taxonomy?
Support for private taxonomies is being prepared. Tell us about the taxonomy and the workflow you want to connect.