Get Accurate Indium (INDIUM) - Per Ounce Prices in Multiple Currencies with this API for REST clients
Pricing indium accurately—per troy ounce, and in the currency your systems and customers expect—is a frequent blocker for product pricing, RFQ automation, and quantitative research. In this guide, we show how to fetch precise Indium (INDIUM) prices in multiple currencies using a simple REST workflow, including real-time spot lookups, historical snapshots for backfilling charts, and conversions for quoting and settlement. You’ll see concrete request/response examples, guidance on units (troy ounces vs grams), base currencies, timestamps, and caching strategies so your REST clients can deliver reliable, high-performance indium pricing. For API capabilities and full reference, see the Metals-API Website and the Metals-API Documentation. To confirm symbol support and naming, consult the Metals-API Supported Symbols.
Use case: Live and historical Indium pricing for quoting, hedging, and analytics
Whether you are automating a quote in an ERP, repricing a catalog in a marketplace, or building a hedging model in a trading stack, the common workflow is:
- Query the latest Indium (INDIUM) price per troy ounce, typically with USD as the base, then convert to your quote currency (e.g., EUR, GBP, JPY).
- Capture a historical Indium snapshot for traceable quotes or to backfill charts and volatility models.
- Convert between currencies at the exact timestamp of the metals rate to keep P&L, revenue recognition, and audit processes consistent.
Below, we focus on three endpoints that cover this end-to-end: Latest, Historical, and Convert. We’ll also cover response semantics, units, timezone, caching, weekend behavior, and practical error handling so you can ship with confidence.
About Indium (INDIUM): why accurate API access matters
Indium is a critical material in modern electronics, photovoltaics, specialty alloys, and semiconductors. As digital transformation accelerates across manufacturing and energy, demand for transparent, programmable access to indium pricing has grown. Accurate API access enables:
- Smart pricing in e-commerce and RFQs: quote per-ounce or per-gram in multiple currencies without manual intervention.
- Operational analytics: track input costs, margins, and variance across regions and currencies.
- Algorithmic procurement and hedging: combine spot prices and historical series to quantify risk and automate purchase timing.
- Compliance and auditability: pin quotes and invoices to timestamped snapshots.
Metals-API streamlines this via a standardized symbol for Indium (INDIUM), machine-readable responses, and consistent units per troy ounce by default. For a full and always-current list of supported instruments and currencies, check the Supported Symbols directory.
Core concepts to get right for indium pricing
- Units: API responses use “per troy ounce” by default. If your UX/ERP needs grams or kilograms, convert with exact constants (1 troy ounce = 31.1034768 grams). Keep conversions centralized to avoid rounding drift.
- Base currency: By default, the base is USD. Explicitly set and document your base choice across services to ensure consistent math and downstream reconciliation.
- Timestamps and timezone: All timestamps in API responses are UNIX seconds; dates are UTC. Align your storage and scheduling to UTC to prevent off-by-one-day bugs.
- Market closures: Metals markets may not update on weekends/holidays. Plan for repeated timestamps or same-day carry-overs; display “as of” time in UIs.
- Caching: Cache stable resources (like symbols and older historical snapshots) aggressively. For intraday requests, align cache TTLs to your plan’s update cadence.
Endpoints used in this guide
We’ll use only the endpoints relevant to per-ounce Indium pricing and multi-currency quoting:
- Latest Rates: for current INDIUM prices.
- Historical Rates: for a specific date’s INDIUM snapshot.
- Convert: to convert amounts across currencies using the same data source.
For all other features (time-series, OHLC, fluctuation, bid/ask, intraday), see the Metals-API Documentation.
Authentication
All requests require an access_key query parameter. Sign up at the Metals-API Website to get a free API key and upgrade when you need higher frequency or premium endpoints. Keep keys secret; never commit them to public repos. On the server side, store keys in environment variables or a secrets manager.
Latest Indium price per troy ounce
The Latest endpoint provides the most recent INDIUM rate with the base set to USD by default. You can override the base to another currency to simplify downstream math, but a consistent base across services is generally easier to reason about.
Example: latest INDIUM with multiple quote currencies
Fetch latest rates with base USD, then read the INDIUM field as price per troy ounce in inverse form (USD-based metals pricing is delivered as “units of metal per USD”). The unit field clarifies “per troy ounce.”
curl -s "https://metals-api.com/api/latest?access_key=YOUR_API_KEY&base=USD&symbols=INDIUM"
{
"success": true,
"timestamp": 1789777250,
"base": "USD",
"date": "2026-09-19",
"rates": {
"INDIUM": 0.012345
},
"unit": "per troy ounce"
}
How to read this:
- success: Boolean indicating request success.
- timestamp: UNIX seconds in UTC for the price snapshot. Use this for caching keys and audit trails.
- base: “USD” indicates rates are expressed as units of INDIUM per 1 USD (per troy ounce). To get USD per troy ounce, invert: USD_per_oz = 1 / 0.012345.
- date: UTC date associated with timestamp. Display “As of 2026-09-19 00:00:00 UTC” in UIs if precise timing matters.
- rates.INDIUM: The core rate. Combined with “unit: per troy ounce,” this denotes “INDIUM ounces per USD.”
- unit: Always validate “per troy ounce” before applying conversions to grams or kilograms.
Converting the latest INDIUM price to display currency
Suppose you want the latest INDIUM price in EUR per troy ounce. There are two common patterns:
- Keep base=USD, request EURUSD from a currency service you trust, and compute EUR_per_oz = (USD_per_oz) * (EUR_per_USD). This is flexible for multi-asset workflows.
- Request base=EUR directly and read rates.INDIUM to compute EUR per ounce via inversion. This simplifies UI math and avoids cross-service joins.
Example with base=EUR:
curl -s "https://metals-api.com/api/latest?access_key=YOUR_API_KEY&base=EUR&symbols=INDIUM"
{
"success": true,
"timestamp": 1789777250,
"base": "EUR",
"date": "2026-09-19",
"rates": {
"INDIUM": 0.011
},
"unit": "per troy ounce"
}
To obtain “EUR per troy ounce,” invert the rate: EUR_per_oz = 1 / rates.INDIUM. In practice, encapsulate this in a small utility function so all services convert identically.
JavaScript example: latest INDIUM price in USD and EUR per ounce
// Minimal example: fetch latest INDIUM and compute price per troy ounce in base currency
// Note: store YOUR_API_KEY securely on the server side. This is for illustration only.
async function fetchIndiumPerOunce(base = "USD") {
const url = `https://metals-api.com/api/latest?access_key=YOUR_API_KEY&base=${encodeURIComponent(base)}&symbols=INDIUM`;
const res = await fetch(url, { method: "GET" });
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
if (!data.success || !data.rates || data.rates.INDIUM == null) {
throw new Error(`API error or missing rate: ${JSON.stringify(data)}`);
}
// rates.INDIUM is "ounces of indium per unit of base currency"
// To get price in base currency per ounce, invert:
const pricePerOunce = 1 / data.rates.INDIUM;
return {
base: data.base,
timestamp: data.timestamp,
date: data.date,
unit: data.unit, // "per troy ounce"
pricePerOunce // base currency per troy ounce
};
}
// Usage ideas:
// const usdIndium = await fetchIndiumPerOunce("USD");
// const eurIndium = await fetchIndiumPerOunce("EUR");
Notes:
- Always check success and nullability to avoid runtime errors during market closures or plan limits.
- Round only at the edge (UI/report). Keep internal calculations at higher precision to avoid compounding rounding error.
Performance and reliability tips for Latest
- Cache TTL: Set TTL to the shorter of your plan’s update interval and your application’s tolerance. For many use cases, 30–120 seconds is sufficient and avoids hammering the endpoint.
- Idempotent retries: If your client retries on failure, ensure request semantics are idempotent and bounded (e.g., exponential backoff with jitter, max 3 attempts).
- Fallback logic: If latest is temporarily unavailable, serve the last known good rate with a visible “delayed” flag. Record the original timestamp.
- Precision: Store rates as decimals with at least 10–12 significant digits internally, then round for display.
Historical Indium snapshot for audit, charts, and analytics
To backfill charts, produce end-of-day valuation, or attach a quote to a point-in-time valuation, use the Historical endpoint by specifying a UTC date (YYYY-MM-DD). Historical data availability depends on the instrument and plan; consult the documentation for precise coverage.
Example: INDIUM on a past date (UTC)
curl -s "https://metals-api.com/api/2026-09-18?access_key=YOUR_API_KEY&base=USD&symbols=INDIUM"
{
"success": true,
"timestamp": 1789690850,
"base": "USD",
"date": "2026-09-18",
"rates": {
"INDIUM": 0.0125
},
"unit": "per troy ounce"
}
Usage notes:
- The timestamp corresponds to the historical snapshot on that date in UTC. Use this to align currency conversions and analyze period-over-period changes.
- If the date is a weekend or holiday and markets are closed, expect the most recent available rate for that day or adjacent business day per the provider’s policy. Always check the returned date and timestamp.
- For batch backfills, iterate over dates and throttle requests. If you need a range, consider the time-series approach in the documentation for more efficient pulls.
Interpreting Historical response fields
- base: The currency in which you’re expressing values per ounce after inversion.
- rates.INDIUM: Ounces per base unit; invert to get base currency per ounce (e.g., USD per troy ounce).
- date and timestamp: Pin these to your stored snapshot. If generating invoices or audit logs, persist both.
- unit: Validate “per troy ounce.” If your application requires grams, convert once, store the converted value alongside the original, and reference both in analytics to avoid re-converting repeatedly.
Common pitfalls for Historical
- Off-by-one dates due to local time conversion. Always use UTC dates for requests and storage.
- Silent fallback to a nearby date on closures. Ensure your UI signals the actual snapshot date returned by the API.
- Inconsistent base currencies across services. Document and enforce a single base within your domain.
Convert endpoint: precise currency conversion for indium amounts
For quoting workflows, you often need to convert a notional amount from one currency to another while keeping consistency with the metals rate’s timestamp and math. The Convert endpoint performs conversions using the provider’s rate engine, which simplifies alignment.
Example: convert USD notional into INDIUM troy ounces
curl -s "https://metals-api.com/api/convert?access_key=YOUR_API_KEY&from=USD&to=INDIUM&amount=5000"
{
"success": true,
"query": {
"from": "USD",
"to": "INDIUM",
"amount": 5000
},
"info": {
"timestamp": 1789777250,
"rate": 0.012345
},
"result": 61.725,
"unit": "troy ounces"
}
How to use this in a quoting engine:
- query: Echoes inputs; log this for traceability.
- info.timestamp: Use as your “pricing time” for the quote. Align currency conversions and fees to this timestamp if needed.
- info.rate: The same rate logic you’d see in Latest, applied here to compute the result.
- result: The number of troy ounces of indium purchasable with the notional amount. Display this directly or multiply by weight factors to compute per-unit prices.
- unit: “troy ounces” confirms the weight unit embedded in the conversion.
Example: convert an indium weight into EUR notional
curl -s "https://metals-api.com/api/convert?access_key=YOUR_API_KEY&from=INDIUM&to=EUR&amount=2.75"
{
"success": true,
"query": {
"from": "INDIUM",
"to": "EUR",
"amount": 2.75
},
"info": {
"timestamp": 1789777250,
"rate": 90.91
},
"result": 250.00,
"unit": "troy ounces"
}
Notes:
- When converting from INDIUM to a fiat currency, amount denotes troy ounces; the result is the notional currency value at that timestamp.
- Round results appropriately for your contract terms (e.g., 2 decimals for invoicing in EUR) but keep internal precision higher.
Best practices for Convert
- Consistency: Use Convert for end-user quotes when you want the pricing and conversion anchored to one engine and timestamp.
- Replayability: Store query, info.timestamp, and the result to recreate the quote later. This is critical for disputes and audits.
- Rate sanity: Verify that “unit” is “troy ounces.” If your upstream workflow mixed grams, convert input first to troy ounces, then call Convert.
Data model: making sense of “rates” and inversion
For metals, rates are frequently expressed as “units of metal per 1 unit of base currency,” with unit set to “per troy ounce.” This is compact and consistent, but it means you often invert to get a human-friendly “currency per ounce.”
- Given rates.INDIUM = ounces per 1 base currency unit, price in base per ounce = 1 / rates.INDIUM.
- To display a table of INDIUM prices in USD, EUR, GBP: request Latest three times with different base values, or request once in a single base and perform currency conversion in your stack. Choose the pattern that yields the fewest total requests and simplest caching.
Practical implementation checklist
- Symbol validation: Confirm the correct symbol for indium via the Supported Symbols page and keep it in a constants file.
- Units: Centralize weight conversions. Use immutable constants (1 troy ounce = 31.1034768 g).
- Base currency: Establish a single base for internal math. Override per endpoint only when justified (e.g., a regional quote service).
- Caching: Cache “latest” for 30–120 seconds and historical forever (immutable). Respect your plan’s update cadence.
- Error handling: On API errors, serve last known good data with an alert mechanism. Instrument logs with request IDs and timestamps.
- Observability: Record response times, error rates, and cache hit ratios. Set SLOs aligned with quote SLAs.
Advanced techniques: analytics and microservice design
- Pre-computed price grids: For web catalogs, pre-build a small grid of INDIUM prices by currency and round weight increments (e.g., 0.1–10 oz). Refresh periodically and serve from memory for low-latency pages.
- Atomic pricing snapshots: When generating a quote, fetch Latest once, then run all conversions and fees locally against that timestamp. Persist the snapshot to a write-once store to ensure auditability.
- Feature flags for continuity: If an endpoint is temporarily unavailable, a feature flag can switch your service to “historical carry-forward mode” where the last snapshot is used with an “as of” banner.
- Currency triangulation: If you must display many currencies, consider fetching Latest with a single base and performing currency conversions via a consistent FX source to minimize round trips.
Security and compliance
- API key hygiene: Store keys server-side. Use environment variables or a vault; rotate periodically.
- Least privilege: If you proxy requests for front-ends, restrict allowed query params and symbols to reduce abuse risk.
- Input validation: Sanitize symbols, base, and dates. Enforce whitelists rather than blacklists.
- Observability for compliance: Log request URLs without keys, response timestamps, and hashes of payloads for tamper detection.
Handling weekends, holidays, and stale data
- Expect repeated timestamps around closures. Your UI should show “As of … UTC” and optionally a “market closed” marker.
- Use Historical for date-anchored invoicing; avoid deriving prices for closed days unless business rules dictate it.
- Alerting: Monitor for unusually old timestamps versus business hours to detect provider or network issues.
Data validation and normalization
- Type checks: Ensure numeric fields (rates.INDIUM, result) parse correctly and are finite numbers.
- Bounds checks: Reject absurd values (e.g., zero or negative rates) with circuit breakers before they propagate to quotes.
- Normalization: Always store both raw and inverted representations with explicit field names (e.g., indium_oz_per_base and base_per_indium_oz) to avoid confusion.
Troubleshooting
- Missing INDIUM in rates: Verify symbol support at Supported Symbols and spelling. Symbols are case-sensitive.
- Unexpected base: If base defaults to USD despite explicit setting, confirm your plan allows alternate bases.
- HTTP errors: Check network, DNS, or TLS settings. Implement exponential backoff with jitter. Log response bodies when available.
- Incorrect unit assumptions: If values seem inverted, confirm that you are inverting once and only once to display currency per troy ounce.
- Timezone issues: Ensure you are using UTC throughout. Avoid local time conversions for storage or comparisons.
Example UX patterns for fintech, trading, and ERP
- Trading tool: Display a real-time INDIUM per-oz dashboard with an “As of” timestamp, a compact history view (daily closes), and a position P&L tile based on stored snapshots.
- Fintech product: Offer alerts on INDIUM price moves relative to a moving average computed from historical snapshots you store daily.
- E-commerce pricing: Recompute item prices hourly based on INDIUM per-oz converted to local currency, add a manufacturing premium, then round using consistent rules per region.
- ERP integration: Generate RFQs with a pinned historical snapshot, persist the API timestamp, and lock the quote validity period with an SLA.
Scaling your integration
- Batch windows: Schedule a batch to refresh caches (latest, select bases) just after provider updates per your plan interval.
- Multi-region: Deploy edge caches or regional replicas of your price microservice. Ensure clock sync (NTP) to keep timestamps aligned.
- Throttling: Centralize outbound requests through a singleton client with rate limiting and pooling.
Auditing and governance
- Immutable storage: Store historical snapshots and quotes in append-only storage with checksums.
- Deterministic recompute: Keep the raw response payloads or hashes, constants for conversions, and business rules versioned to reproduce any quote.
- Access trails: Record which service and version initiated price pulls. Require approvals for rule changes that affect pricing.
Linking out for deeper coverage
- Reference: Complete Metals-API Documentation for parameters, plan details, and additional endpoints like time-series and OHLC.
- Symbols: Browse all supported metal and currency symbols to confirm the INDIUM symbol code and discover additional instruments you may need.
- Get started: Create your API key on Metals-API to begin testing with your REST clients today.
Request and response reference for this guide
Latest (INDIUM)
Purpose: Fetch the most recent INDIUM rate for a given base currency, unit per troy ounce.
- Endpoint: /api/latest
- Required params: access_key
- Common params: base (default USD), symbols=INDIUM
curl -s "https://metals-api.com/api/latest?access_key=YOUR_API_KEY&base=USD&symbols=INDIUM"
{
"success": true,
"timestamp": 1789777250,
"base": "USD",
"date": "2026-09-19",
"rates": { "INDIUM": 0.012345 },
"unit": "per troy ounce"
}
- Use cases: live pricing tiles, real-time carts, streaming dashboards (with sensible polling).
- Pitfalls: forgetting to invert; mixing base currencies across microservices.
- Optimization: cache for 30–120 seconds; coalesce concurrent requests.
Historical (INDIUM)
Purpose: Fetch a point-in-time snapshot for a specific UTC date.
- Endpoint: /api/YYYY-MM-DD
- Required params: access_key
- Common params: base=USD, symbols=INDIUM
curl -s "https://metals-api.com/api/2026-09-18?access_key=YOUR_API_KEY&base=USD&symbols=INDIUM"
{
"success": true,
"timestamp": 1789690850,
"base": "USD",
"date": "2026-09-18",
"rates": { "INDIUM": 0.0125 },
"unit": "per troy ounce"
}
- Use cases: audit trails, EOD valuation, backtesting.
- Pitfalls: local time vs UTC confusion; stale holiday data.
- Optimization: batch pulls; store immutably; de-duplicate by timestamp.
Convert (USD ⇄ INDIUM, EUR ⇄ INDIUM)
Purpose: Convert amounts to or from indium ounces in a given currency via API-calculated rates.
- Endpoint: /api/convert
- Required params: access_key, from, to, amount
curl -s "https://metals-api.com/api/convert?access_key=YOUR_API_KEY&from=USD&to=INDIUM&amount=5000"
{
"success": true,
"query": { "from": "USD", "to": "INDIUM", "amount": 5000 },
"info": { "timestamp": 1789777250, "rate": 0.012345 },
"result": 61.725,
"unit": "troy ounces"
}
- Use cases: RFQs, invoices, settlement amounts.
- Pitfalls: misinterpreting amount units when “from=INDIUM” (amount is ounces); rounding too early.
- Optimization: co-locate convert calls with latest fetch, or store both if your plan allows; de-duplicate by identical queries within a short window.
Units and conversions: troy ounce to grams/kilograms
- 1 troy ounce = 31.1034768 grams
- 1 kilogram = 32.1507466 troy ounces
Recommended approach:
- Keep raw API values as “per troy ounce.”
- For gram pricing, compute price_per_gram = price_per_ounce / 31.1034768.
- For kilogram pricing, compute price_per_kg = price_per_ounce * 32.1507466.
- Centralize these constants in a shared library to ensure consistency across services.
Caching strategies
- Symbols list: Cache for 24h+; changes are infrequent. Source of truth: Supported Symbols.
- Latest: Cache aligned to your plan’s update frequency. For example, 60–120s usually balances freshness and load.
- Historical: Treat as immutable; cache permanently, keyed by date, base, and symbol.
- Convert: Cache keyed by (from, to, amount rounded to sensible precision, timestamp bucket).
Error handling and resilience
- Input validation: Reject unknown symbols and invalid bases before calling the API.
- Graceful degradation: Serve last known good rates with clear “delayed” UI state if the live endpoint is transiently unavailable.
- Redundancy: Keep a small rolling window of prior snapshots locally so key UIs don’t go dark during outages.
Data lineage: how to remain auditable
- Store raw payloads and normalized fields (e.g., indium_base_per_oz) with the timestamp.
- Version conversion constants and business rules. Any change can alter recomputation results.
- Attach a pricing snapshot ID to quotes and documents; include the timestamp on outputs.
Future trends and possibilities for indium data
As digital transformation advances, programmable indium pricing will fuel:
- Autonomous procurement agents negotiating RFQs with live pricing and risk constraints.
- Embedded finance: instant credit and insurance pricing linked to volatile input costs like indium.
- Predictive analytics: ML models using historical indium snapshots to forecast demand, optimize inventory, and hedge volatility.
- IoT integration: smart factory systems adjusting production schedules based on real-time material costs.
Get started
Ready to add accurate indium pricing to your REST clients? Visit the Metals-API Website to get your free API key, review the endpoint documentation, and confirm the symbol at Supported Symbols. Build a simple “latest + convert” path first, instrument caching and logging, then expand to historical snapshots for analytics and audit.
FAQ
- What is the correct symbol for indium?
Check the Supported Symbols page to confirm the exact code and capitalization. - Are rates per troy ounce or gram?
Rates are “per troy ounce” by default. Convert carefully using precise constants. - What timezone do timestamps use?
UNIX timestamps and dates are in UTC. Align your storage and schedules to UTC. - How often are latest rates updated?
Update frequency depends on your subscription plan. Cache accordingly and consult the Documentation for details. - How should I show multi-currency prices?
Either request different bases for each currency or compute currency conversions in your stack. Choose the approach that minimizes requests and complexity. - What if the market is closed?
Expect repeated timestamps and carry-over values. Display the “as of” time and consider policy-based messaging like “market closed.” - How do I start testing?
Sign up for an API key at the Metals-API Website, call the Latest endpoint for INDIUM, and verify unit and inversion logic end-to-end.