---
title: "Base converter: integers between number bases 2 to 36 (hex, binary, octal)"
method: GET
path: "/v1/num/radix"
tags: ["deterministic", "no-api-key", "num", "numbers", "conversion"]
---

# Base converter: integers between number bases 2 to 36 (hex, binary, octal)

`GET /v1/num/radix`

## Request

- Base URL: `https://api.duoleads.com`
- URL: `https://api.duoleads.com/v1/num/radix`
- Auth: none declared

Base converter: convert an integer between any two numeric bases from 2 to 36 (hex, binary, octal and more), with arbitrary precision so values far beyond 2^53 are exact. Accepts an optional sign and common prefixes (0x, 0b, 0o), validates every digit against the source base, and returns the value in the target base, in decimal, and as its bit length and digit count.

**Output (`data`):** result, decimal, from, to, negative, digits, bit_length, exact (always true).

Deterministic: identical input returns identical output, so the response is served with `Cache-Control: private, max-age=31536000, immutable` (the paying client may cache it indefinitely; shared caches must not, because the response is paid).

Price: $0.05 USDC per call (x402, Base). Route contract version 1.0.0. Docs: https://api.duoleads.com/docs#num-radix

## Query parameters

- `value` string, required
- `from` string
- `to` integer
- `case` 'lower' | 'upper'
- `prefix` boolean

## Response `200`

Paid and settled. `data` is route-specific; a route that judges its input returns 200 with `data.valid: false` for a bad value.

- object
  - `ok` unknown, required
  - `route` '/v1/num/radix', required
  - `version` '1.0.0', required
  - `data` object, required: result, decimal, from, to, negative, digits, bit_length, exact (always true).
    - `result` string, required
    - `decimal` string, required
    - `from` integer, required
    - `to` integer, required
    - `negative` boolean, required
    - `digits` integer, required
    - `bit_length` integer, required
    - `exact` boolean, required
  - `meta` Meta, required
    - `disclaimer` string, required: Legal short disclaimer, identical on every response.
    - `request_id` string, required: ULID.
    - `computed_at` string, date-time, required: RFC 3339 UTC with milliseconds.
    - `price_usd` string, required: Decimal string, "0.05".
    - `deterministic` boolean, required
    - `sources` object[]: Present only on routes that read a vendored dataset: the exact edition that answered.
      - `id` string, required
      - `version` string, required
      - `published` string, required
      - `attribution` string
      - `licence` string

## Other responses

- `400`: MISSING_PARAM, INVALID_PARAM or UNSUPPORTED_VALUE. Not charged: validation runs before the paywall.
- `402`: Payment required. No valid PAYMENT-SIGNATURE was supplied: read the base64 PAYMENT-REQUIRED header (or this body) for the price ($0.05 = 50000 atomic USDC on eip155:8453), sign an EIP-3009 authorization and retry. Also returned when settlement is declined (PAYMENT_FAILED). Nothing is charged on a 402.
- `404`: NOT_FOUND: unknown path. Not charged.
- `405`: METHOD_NOT_ALLOWED: only GET and HEAD are served. Not charged.
- `413`: INPUT_TOO_LARGE: a parameter exceeded its documented maximum length. Not charged.
- `500`: INTERNAL: a server bug. Not charged.

---

[API](https://skmtc.dev/duoleads/apis/duo-data-utilities-iban-isin-vat-tax-id-barcode-timezone-geo.md) · [All operations](https://skmtc.dev/duoleads/apis/duo-data-utilities-iban-isin-vat-tax-id-barcode-timezone-geo/llms.txt) · [OpenAPI document](https://skmtc.dev/duoleads/apis/duo-data-utilities-iban-isin-vat-tax-id-barcode-timezone-geo/revisions/18790d59615e?raw)
