Ferro Silicon (FE-SI) - Per Troy Ounce Price API: Getting Started Guide for Developers

Metals-API 8 min read
Ferro Silicon (FE-SI) - Per Troy Ounce Price API: Getting Started Guide for Developers

You need to quote or hedge Ferro Silicon (FE-SI) in real time, per troy ounce, and display a clean USD-per-oz price in your app. By the end of this guide you will fetch the live FE-SI rate from Metals-API, understand the inversion between oz-per-USD and USD-per-oz, parse the response, and convert prices into grams, kilograms, or metric tons for pricing, analytics, or ERP sync.

What you will build: a reliable FE-SI price lookup you can ship

We will hit the Latest endpoint for FE-SI, read both the per-USD rate (oz per 1 USD) and its inverted USD-per-oz symbol, and wire it into a small script that normalizes and converts units. You can then use this in a trading tool, a cost model, or a pricing service.

Illustration: Ferro Silicon (FE-SI) - Per Troy Ounce Price API: Getting Started Guide for Developers

Symbols, units and how FE-SI is quoted

Metals-API quotes metals relative to a base currency (default USD). When base=USD:

  • rates.FE-SI means troy ounces of FE-SI per 1 USD (oz/USD).
  • rates.USDFE-SI means USD per 1 troy ounce of FE-SI (USD/oz). This is typically what you want to display to users.

Why both? Many metals users prefer USD/oz, while quant workflows sometimes consume oz/USD because it composes naturally with currency crosses. Metals-API provides both for convenience.

Before you ship, confirm the symbol codes in the directory here: Metals-API Supported Symbols.

Symbol Meaning Unit Typical use
FE-SI Troy ounces of Ferro Silicon per 1 USD oz per USD Quant workflows, currency composition
USDFE-SI USD per 1 troy ounce of Ferro Silicon USD per oz Display price, invoicing, charts
USD Base currency Currency Context and conversion

Make your first FE-SI request (Latest endpoint)

Request only what you need to keep responses small and fast. For a USD-per-oz price, ask for both FE-SI and USDFE-SI so you can consume the most appropriate field for your use case.

Copy-paste curl

curl -s "https://metals-api.com/api/latest?access_key=YOUR_API_KEY&symbols=FE-SI,USDFE-SI,USD&base=USD"

Sample response (real fields and values):

{"success":true,"timestamp":1792714080,"date":"2026-10-23","base":"USD","rates":{"FE-SI":36.517654427782,"USD":1,"USDFE-SI":0.02738401509268945}}

What to read from this JSON

  • timestamp: Unix epoch seconds you can treat as UTC for caching and logs.
  • date: Calendar date of the rate snapshot.
  • base: USD. All rates are quoted against this base.
  • rates.FE-SI: 36.517654427782 oz per 1 USD. This is oz/USD.
  • rates.USDFE-SI: 0.02738401509268945 USD per 1 oz. This is USD/oz and is the most display-friendly number.

If you only need USD/oz, prefer rates.USDFE-SI directly instead of inverting FE-SI yourself.

Parse and convert FE-SI in code

This Python snippet pulls the same Latest endpoint, extracts USD/oz, and converts into g, kg, and metric tons (1 troy ounce = 31.1034768 grams):

import os
import requests

API_KEY = os.getenv("METALS_API_KEY", "YOUR_API_KEY")
url = "https://metals-api.com/api/latest"
params = {
    "access_key": API_KEY,
    "base": "USD",
    "symbols": "FE-SI,USDFE-SI,USD"
}

r = requests.get(url, params=params, timeout=10)
r.raise_for_status()
data = r.json()

if not data.get("success"):
    raise RuntimeError(f"Metals-API error: {data}")

usd_per_oz = data["rates"]["USDFE-SI"]  # USD per troy ounce
oz_per_usd = data["rates"]["FE-SI"]     # oz per USD (inverse)

# Unit conversions
TROY_OUNCE_TO_GRAM = 31.1034768
usd_per_gram = usd_per_oz / TROY_OUNCE_TO_GRAM
usd_per_kg = usd_per_gram * 1000.0
usd_per_metric_ton = usd_per_kg * 1000.0

print({
    "timestamp": data["timestamp"],
    "date": data["date"],
    "usd_per_oz": usd_per_oz,
    "usd_per_gram": usd_per_gram,
    "usd_per_kg": usd_per_kg,
    "usd_per_metric_ton": usd_per_metric_ton,
    "oz_per_usd": oz_per_usd
})

Tip: store the latest value with its timestamp and date. When the same timestamp repeats (e.g., weekends or market holidays), you can serve a cached value.

Historical and intraday context for FE-SI

For backfilling or calculating day-over-day moves, use one of these endpoints:

  • Historical: fetch a single past date’s snapshot for FE-SI/USDFE-SI.
  • Time-Series: fetch a date range of daily snapshots for FE-SI/USDFE-SI.
  • Fluctuation: get summarized change between two dates without pulling each day.

Endpoint details and parameters are documented here: Metals-API Documentation. Always keep the symbol list handy for FE-SI and cross symbols: Metals-API Supported Symbols.

Developer notes that save time

  • Base currency and inversion: With base=USD, use rates.USDFE-SI for USD/oz directly. Only invert rates.FE-SI if you must. Avoid double-inversion bugs by choosing one field.
  • Units: Metals are quoted per troy ounce. If your ERP or storefront requires kg or metric ton, convert using 1 ozt = 31.1034768 g.
  • Timestamps and date: Use timestamp for cache keys and idempotency. The date string is helpful for end-user display (e.g., “As of 2026‑10‑23”).
  • Caching: Cache the latest response for the cadence of your plan. If you poll faster than the update interval, you’ll see the same timestamp. Serving cached responses reduces API calls and keeps your UI snappy.
  • Non-trading days: Expect the date/timestamp to stay constant on weekends and certain holidays. Avoid alert loops by comparing timestamps rather than just values.
  • Rounding: For display, round USD/oz to 2–4 decimals depending on your UX. For calculations, keep the full precision from the API and round only at the final step.
  • Error handling: Check success before reading rates. Handle network errors and timeouts, then fall back to the most recent cached value.
  • Multi-currency: If you need FE-SI in another fiat currency, convert at your FX layer or request a different base when applicable. Validate symbol support first.

A short roadmap: from live FE-SI to analytics

Once your Latest integration is stable, layer in analytics:

  • Snapshots: Persist daily USDFE-SI close to chart rolling 7/30/90‑day trends.
  • Alerts: Compare the latest USDFE-SI to your previous snapshot. If abs(pct_change) ≥ threshold, push an alert.
  • Costing: Multiply USD/oz by BOM quantities (converted to ounces) to refresh production cost estimates each morning.

For charts in the browser, a lean library like Lightweight Charts can render your time-series quickly.

Key operational questions answered upfront

  • Authentication: Pass your API key as access_key in the query string.
  • Symbols: Use FE-SI for oz/USD and USDFE-SI for USD/oz. Confirm availability on the symbols page before deploying.
  • Scaling: Only request the symbols you need. If you need both oz/USD and USD/oz, include both in symbols to avoid a local inversion step.
  • Testing: Build a local cache so your integration keeps serving during transient network issues. Log the entire JSON response alongside parsed values when troubleshooting.

Walkthrough: building a tiny FE-SI pricing service

1) Normalize the API response

From the Latest response, select:

  • as_of_epoch = timestamp
  • as_of_date = date
  • usd_per_oz = rates.USDFE-SI

Persist these fields in your storage of choice (SQLite/Postgres/Redis). Store the raw JSON as well for auditability.

2) Convert to your operational unit

Manufacturing and logistics prefer kg or metric ton. Convert once and cache:

  • usd_per_gram = usd_per_oz / 31.1034768
  • usd_per_kg = usd_per_gram × 1000
  • usd_per_metric_ton = usd_per_kg × 1000

3) Add a freshness policy

  • If a new poll returns the same timestamp, reuse the cached value.
  • If the timestamp advances, update the cache and downstream consumers.
  • On error, serve the most recent cached snapshot with a “stale” flag.

4) Display with context

Users benefit from clarity:

  • Price: “$X.XXXX per troy ounce (FE‑SI)”
  • As of: render date and, if appropriate, the UTC time derived from timestamp.
  • Source: “Data: Metals-API” with a help link to your internal docs.

Handling edge cases cleanly

  • Missing symbol: If FE-SI or USDFE-SI isn’t returned, log the full response and check the symbol directory. Your query should include only supported symbols.
  • Latency: If your UI polls faster than update frequency, you’ll waste calls. Poll in sync with your plan’s cadence and cache aggressively.
  • Precision drift: Don’t chain conversions (e.g., oz → g → kg) repeatedly across requests. Convert from the canonical USD/oz each time to minimize rounding error.

Planning, pricing, and keys

You must have an API key to query Metals-API. There is no free trial. If you’re exploring paid plans, note that Copper Monthly is $19.99/mo; see the marketplace and plan information here: Metals-API MCP.

When you’re ready to integrate FE-SI in production, get your key here: Register. For endpoint details and parameters, keep the docs open: Documentation.

FAQ

Which FE-SI field should I show to end users?
Use rates.USDFE-SI (USD per troy ounce). It’s already inverted for display. Use rates.FE-SI (oz/USD) only if you specifically need the reciprocal for calculations.

How often does the Latest endpoint update?
Updates depend on your subscription plan’s cadence. If you see the same timestamp across polls, the price hasn’t updated yet—serve from cache until it changes.

What unit are FE-SI prices in?
Per troy ounce. Convert with 1 ozt = 31.1034768 grams if you need g, kg, or metric tons.

How should I handle weekends or holidays?
Expect the date/timestamp to remain unchanged during closures. Compare timestamps to avoid duplicate alerts and rely on cached values until a new snapshot arrives.

Can I backfill charts for FE-SI?
Yes. Use the Historical or Time-Series endpoints with FE-SI and/or USDFE-SI. See parameters and limits in the Documentation.

Get a key and ship your FE-SI integration today. Start with the Latest endpoint, read USDFE-SI for a clean USD-per-oz price, and build from there with historical pulls and simple cache logic. Create your account here: Register. For plan details, see MCP.