Identifier Validation¶
Validate the format of federal procurement identifiers. This endpoint is useful for intake forms, data cleaning pipelines, or integrations that need to check identifiers before submission.
Endpoint: POST /api/validate/
Overview¶
Given an identifier type and value, the endpoint returns a result of "valid", "not_valid", or "low_confidence". No database lookups are performed — this is pure format validation.
Supported identifier types:
| Type | Description | Rules |
|---|---|---|
piid | Procurement Instrument Identifier | FAR 4.201: 13–17 alphanumeric chars, valid AAC + fiscal year + instrument type + serial |
solicitation | Solicitation number | 5–30 chars, contains both letters and digits, matches known procurement ID patterns |
uei | Unique Entity Identifier | Exactly 12 alphanumeric chars, must not contain letters I or O |
Result values¶
| Result | Meaning |
|---|---|
valid | Matches a known format with high confidence |
not_valid | Does not match any recognized format |
low_confidence | Plausible identifier but doesn't match a named pattern (solicitations only) |
The low_confidence result only applies to solicitation numbers. Solicitation formats vary widely across agencies — some pass basic structural checks (alphanumeric, right length, mixed letters and digits) but don't match any of the ~25 known patterns derived from FPDS data. PIIDs and UEIs have strict formats, so they are always valid or not_valid.
Access: Requires Pro tier (Micro+). See Plans & Data Access for tier definitions.
Rate limiting: Standard API rate limits apply.
Request¶
POST /api/validate/
Content-Type: application/json
X-API-KEY: <key>
{
"type": "piid",
"value": "ABCDEF24C1234"
}
Request body fields¶
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Identifier type: "piid", "solicitation", or "uei". |
value | string | Yes | Identifier value to validate (must be non-blank). |
Response¶
Valid identifier (HTTP 200)¶
Invalid identifier (HTTP 200)¶
For PIIDs, the response includes an errors array with specific validation failures:
{
"result": "not_valid",
"type": "piid",
"value": "ABC",
"errors": [
"PIID must be 13-17 characters, got 3"
]
}
For solicitation numbers and UEIs, the response has no errors array:
Low confidence (HTTP 200, solicitations only)¶
Validation errors (HTTP 400)¶
Missing or invalid type:
Missing or blank value:
Examples¶
Validate a PIID¶
curl -X POST https://tango.makegov.com/api/validate/ \
-H "X-API-KEY: your-api-key" \
-H "Content-Type: application/json" \
-d '{"type": "piid", "value": "W58RGZ25F1234"}'
Validate a solicitation number¶
curl -X POST https://tango.makegov.com/api/validate/ \
-H "X-API-KEY: your-api-key" \
-H "Content-Type: application/json" \
-d '{"type": "solicitation", "value": "SPE7A619T4321"}'