Skip to main content

haystack-unirate

PyPI License: MIT

Haystack integration for the UniRate API — drop-in currency-exchange components for Haystack 2.x pipelines.

UniRate provides 593+ fiat, crypto, and commodity exchange rates. Latest rates, conversions, and currency listings are available on the free tier; historical and time-series endpoints require a Pro plan.

Why this package

There's no first-class FX component in core Haystack. This package gives you typed, tested @component-decorated blocks that slot straight into a Pipeline — with Secret-based API-key handling and full to_dict / from_dict serialization so pipelines round-trip to YAML/JSON cleanly.

Install

pip install haystack-unirate

Quick start

import os

os.environ["UNIRATE_API_KEY"] = "..."  # https://unirateapi.com

from haystack.utils import Secret
from haystack_unirate import (
    UniRateConverter,
    UniRateCurrencies,
    UniRateExchangeRate,
)

api_key = Secret.from_env_var("UNIRATE_API_KEY")

rate = UniRateExchangeRate(api_key=api_key)
print(rate.run(from_currency="USD", to_currency="GBP")["rate"])       # 0.79

converter = UniRateConverter(api_key=api_key)
print(converter.run(from_currency="USD", to_currency="EUR", amount=100)["result"])  # 92.5

currencies = UniRateCurrencies(api_key=api_key)
print(currencies.run()["currencies"][:5])

In a pipeline

from haystack import Pipeline
from haystack.utils import Secret

from haystack_unirate import UniRateConverter

pipeline = Pipeline()
pipeline.add_component(
    "convert", UniRateConverter(api_key=Secret.from_env_var("UNIRATE_API_KEY"))
)

result = pipeline.run(
    {"convert": {"from_currency": "USD", "to_currency": "JPY", "amount": 250}}
)
print(result["convert"]["result"])

Components

Component Output sockets Description
UniRateExchangeRate rate: float, rates: dict Latest rate for a pair; if to_currency is omitted, rates holds every supported target and rate is None.
UniRateConverter result: float Convert amount from one currency to another at the latest rate.
UniRateCurrencies currencies: list[str] All currency codes UniRate can convert between.

Each component takes:

Constructor arg Env var Default
api_key (Secret) UNIRATE_API_KEY — (required)
base_url — https://api.unirateapi.com
timeout — 30.0 (seconds)

Error handling

Non-2xx responses raise UniRateAPIError (subclass of RuntimeError) with a .status_code attribute:

Status Meaning
400 Invalid request parameters
401 Missing or invalid API key
403 Endpoint requires a Pro subscription (e.g. historical data)
404 Currency not found or no data available
429 Rate limit exceeded
503 Service unavailable

Transport failures raise UniRateAPIError with status_code=None.

Related UniRate clients

If you want to call the API directly from a non-Haystack application, there are official clients in Python, Node.js, Go, Rust, Java, Ruby, PHP, .NET, and Swift, a LangChain integration, and an MCP server.

License

MIT — see LICENSE.

Metadata

Release files for haystack-unirate 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for haystack-unirate 0.1.0
File Size Uploaded Provenance Actions
haystack_unirate-0.1.0.tar.gz 10.5 kB With provenance Details for haystack_unirate-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for haystack-unirate 0.1.0
File Interpreter ABI Platform Actions
haystack_unirate-0.1.0-py3-none-any.whl Python 3 none any Details for haystack_unirate-0.1.0-py3-none-any.whl

Total release size: 18.3 kB

Release files / haystack_unirate-0.1.0.tar.gz

Download URL haystack_unirate-0.1.0.tar.gz
Size 10.5 kB
Tags Source
SHA-256 checksum
How to use checksums
a4f4bc53938b9250323833521084c69910128791f1b5be04dd12880de8cd0d8a
BLAKE2b-256 checksum
How to use checksums
e4db666f39ac3596d44ab7c9418c3cae893217c308261721ebd3d276b5c4eb5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 26, 2026.

Transparency log

Release files / haystack_unirate-0.1.0-py3-none-any.whl

Download URL haystack_unirate-0.1.0-py3-none-any.whl
Size 7.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d1f21d9e2f6f88900c94c2407cafc3f50afc24ec9107f6d7c070ee72114e9703
BLAKE2b-256 checksum
How to use checksums
6b82d3ad6dad4aeb3e263f0837b92174602f12e61c7fab3f208996f8cc6e5637
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 26, 2026.

Transparency log

Security for haystack-unirate 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for haystack_unirate-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 26, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page