# Duo Data Utilities – Financial Security Identifier Validator & ISIN Builder

> Duo Data Utilities – Financial Security Identifier Validator & ISIN Builder is a paid API for AI agents from api.duoleads.com, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-02).

Validates the check digit of ISIN, CUSIP, SEDOL, and FIGI identifiers, returning validity verdict and computed check character; also builds an ISIN from a country code and NSIN.

## Facts

- Endpoint: GET https://api.duoleads.com/v1/id/security?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/duo-data-utilities-financial-security-identifier-validator-isin-builder-36870be4
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_gzmm4sQDh5Hd7W4-1dJ6N

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability duo-data-utilities-financial-security-identifier-validator-isin-builder-36870be4
```

Example prompt: Can you validate whether US0378331005 is a correctly formatted ISIN with a valid check digit, and tell me the embedded country code and NSIN?

## When to prefer this

Use this endpoint when you need purely algorithmic, deterministic check-digit validation and format parsing for ISIN, CUSIP, SEDOL, or FIGI — with no latency or cost of a security master database lookup. Ideal for data-pipeline integrity checks, pre-trade validation, ETL ingestion hygiene, or constructing ISINs programmatically from known country codes and NSINs. Not suitable if you need to resolve the identifier to real security metadata (issuer name, price, exchange listing).

## Known failure modes

- Missing required 'value' parameter when op=validate returns an error
- Missing 'nsin' or 'country' when op=build-isin returns an error
- NSIN not exactly 9 alphanumeric characters causes rejection
- Unrecognised identifier type returns an error or null type
- Invalid ISO 3166-1 alpha-2 country code causes build-isin to fail
- Value exceeding maxLength of 24 characters is rejected

## How this service works

Validate the check digit of a financial security identifier: ISIN (ISO 6166), CUSIP, SEDOL and FIGI. Returns the verdict, the computed correct check character, and for an ISIN the issuing country prefix and the embedded NSIN. Also builds an ISIN from a country code plus a 9-character NSIN. Format and checksum only, no security master lookup.

## Output

Returns a JSON object with: a boolean validity flag, the identifier type detected (isin/cusip/sedol/figi), the computed correct check character, whether the provided check character matches, a normalised form of the identifier, the algorithm used (e.g. luhn-mod10-alpha), a human-readable reason if invalid, and for ISINs the embedded country prefix and NSIN. Also includes metadata: request ID, computation timestamp, price, and a deterministic flag.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [],
     "properties": {
      "op": {
       "enum": [
        "validate",
        "build-isin"
       ],
       "type": "string",
       "default": "validate",
       "maxLength": 64,
       "description": "validate (default) or build-isin."
      },
      "nsin": {
       "type": "string",
       "maxLength": 64,
       "description": "Exactly 9 alphanumeric characters. Required when op=build-isin."
      },
      "value": {
       "type": "string",
       "maxLength": 24,
       "description": "ISIN, CUSIP, SEDOL or FIGI to validate. Required when op=validate."
      },
      "country": {
       "type": "string",
       "maxLength": 16,
       "description": "ISO 3166-1 alpha-2 code or XS. Required when op=build-isin."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "ok",
      "route",
      "version",
      "data",
      "meta"
     ],
     "properties": {
      "ok": {
       "const": true
      },
      "data": {
       "type": "object",
       "properties": {
        "isin": {
         "type": "string"
        },
        "nsin": {
         "type": [
          "string",
          "null"
         ]
        },
        "type": {
         "type": "string"
        },
        "valid": {
         "type": "boolean"
        },
        "reason": {
         "type": [
          "string",
          "null"
         ]
        },
        "country": {
         "type": [
          "string",
          "null"
         ]
        },
        "algorithm": {
         "type": [
          "string",
          "null"
         ]
        },
        "check_char": {
         "type": [
          "string",
          "null"
         ]
        },
        "normalised": {
         "type": "string"
        },
        "check_char_ok": {
         "type": "boolean"
        }
       }
      },
      "meta": {
       "type": "object",
       "required": [
  
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "ok": true,
  "data": {
   "nsin": "037833100",
   "type": "isin",
   "valid": true,
   "reason": null,
   "country": "US",
   "algorithm": "luhn-mod10-alpha",
   "check_char": "5",
   "normalised": "US0378331005",
   "check_char_ok": true
  },
  "meta": {
   "price_usd": "0.05",
   "disclaimer": "Factual output of a deterministic computation over public data. Provided as is, with no warranty of accuracy, completeness or availability. Not investment, financial, legal, tax, medical or any other professional advice, and not a recommendation. Verify before relying on it. Terms: https://api.duoleads.com/terms",
   "request_id": "01K6B7Q4ZC8H3F2M9WXR5TYN0D",
   "computed_at": "2026-09-28T12:00:00.000Z",
   "deterministic": true
  },
  "route": "/v1/id/security",
  "version": "1.0.0"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/duo-data-utilities-financial-security-identifier-validator-isin-builder-36870be4/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.duoleads.com](https://www.zero.xyz/host/api.duoleads.com/llms.txt)
