UnifyUnits Developers

Python

Prefer the official client for server-side apps. Values stay decimal strings; the package does not ship conversion factors. Source: unifyunits-python.

The client covers convert, batch, categories, units, and health. For parse, normalize, currency, substances, unit price, decimals, and format_locale, use raw HTTP (see API reference).

Install

Python 3.9+. Until PyPI publication, install from the tagged release:

bash
python -m pip install "unifyunits @ git+https://github.com/unifyunits/[email protected]"

After PyPI publication, use python -m pip install unifyunits.

Convert with the SDK

python
import os
from unifyunits import UnifyUnits

with UnifyUnits(api_key=os.environ["UNIFYUNITS_API_KEY"]) as client:
    result = client.convert("1", "ft", "m")
    print(result["data"]["result"])  # {"value": "0.3048", "unit": "m"}

Batch with the SDK

python
import os
from unifyunits import UnifyUnits

with UnifyUnits(api_key=os.environ["UNIFYUNITS_API_KEY"]) as client:
    result = client.convert_batch(
        [
            {"value": "10", "from": "kg", "to": "lb"},
            {"value": "100", "from": "km", "to": "mi"},
        ]
    )

for item in result["data"]:
    if item["status"] == "success":
        print(f"Item {item['index']}: {item['result']['value']} {item['result']['unit']}")
    else:
        print(f"Item {item['index']} failed: {item['error']['code']}")

Error handling

python
import os
from unifyunits import ApiError, UnifyUnits

with UnifyUnits(api_key=os.environ["UNIFYUNITS_API_KEY"]) as client:
    try:
        client.convert("1", "ft", "kg")
    except ApiError as error:
        raise ValueError(f"{error.error_code}: {error}") from error

Same calls with raw HTTP

Use these when you cannot install the client, or when debugging against the OpenAPI contract.

python
import os
import requests

response = requests.get(
    "https://api.unifyunits.com/v1/convert",
    params={"value": "1", "from": "ft", "to": "m"},
    headers={"Authorization": f"Bearer {os.environ['UNIFYUNITS_API_KEY']}"},
    timeout=10,
)

response.raise_for_status()
data = response.json()
print(data["data"]["result"]["value"])  # "0.3048"