Get Palladium Jun 2027 (PAM27) - Per Troy Ounce prices using this API for real-time quotes
You need a reliable way to fetch a live, per–troy ounce quote for the Palladium Jun 2027 contract so you can price orders, drive a dashboard, or trigger trading logic. In this guide you’ll integrate the Metals-API /latest endpoint to request the Palladium Jun 2027 price (symbol: PAM27), read the JSON response, invert units to USD per troy ounce when needed, and wire it into practical workflows like catalog repricing and threshold alerts.
What “Palladium Jun 2027 (PAM27)” is and who needs its live price
Palladium is a critical catalyst in automotive emissions control systems, and it also underpins innovations in environmental solutions, digital supply chains, and smart manufacturing. The “Palladium Jun 2027 (PAM27)” contract denotes a specific palladium futures month, useful for production planners, hedging desks, and fintech tools that must align pricing to a forward month instead of spot. If you quote or hedge to June 2027 exposure, you want PAM27 data wired into ERP, e-commerce pricing, trading algos, or research models.
Before you start, confirm the exact symbol for your contract on the official symbols directory: Metals-API Supported Symbols. We’ll use PAM27 below assuming it’s listed for your plan; if your plan or region differs, check the listing and documentation first.
Fetch the latest PAM27 quote (per troy ounce) with the /latest endpoint
The /latest endpoint returns a snapshot of current rates. Metals-API responses are, by default, quoted with base=USD and units “per troy ounce,” meaning the number of troy ounces you get per 1 USD for the requested symbol(s). You can pass a base parameter when allowed by your plan. See the endpoint details here: Metals-API Documentation.
cURL request
curl "https://metals-api.com/api/latest?access_key=YOUR_API_KEY&base=USD&symbols=PAM27"
Python example
import requests
from datetime import datetime, timezone
API_KEY = "YOUR_API_KEY"
url = "https://metals-api.com/api/latest"
params = {
"access_key": API_KEY,
"base": "USD",
"symbols": "PAM27"
}
resp = requests.get(url, params=params, timeout=10)
resp.raise_for_status()
data = resp.json()
# Expect fields: success, timestamp, base, date, rates{ PAM27 }, unit
if not data.get("success", False):
raise RuntimeError(f"API error: {data}")
timestamp = data["timestamp"] # Unix epoch seconds
as_utc = datetime.fromtimestamp(timestamp, tz=timezone.utc)
base = data["base"] # e.g., "USD"
unit = data.get("unit", "per troy ounce")
rate_per_usd = data["rates"]["PAM27"] # ounces per 1 USD for PAM27
# Convert to USD per troy ounce (the typical quoted price)
# If rate_per_usd is ounces/USD, then USD/ounce = 1 / (ounces/USD)
usd_per_ounce = 1.0 / rate_per_usd
print(f"Snapshot time (UTC): {as_utc.isoformat()}")
print(f"Base: {base} | Unit: {unit}")
print(f"PAM27 ounces per USD: {rate_per_usd}")
print(f"PAM27 USD per ounce (inverted): {usd_per_ounce:.2f}")
Sample JSON response (illustrative values)
{
"success": true,
"timestamp": 1790467732,
"base": "USD",
"date": "2026-09-27",
"rates": {
"PAM27": 0.000740
},
"unit": "per troy ounce"
}
Key fields you will actually use:
- timestamp: Unix epoch seconds. Treat as UTC. Use it for caching, reconciliation, and time-based triggers.
- base: The pricing “per 1 base unit.” Default is USD.
- unit: Metals quantities are returned “per troy ounce.” If you need grams or kilograms, convert units in your app (1 troy ounce = 31.1034768 grams).
- rates.PAM27: The rate as ounces per 1 USD (when base=USD). Invert to get USD per ounce: price_usd_per_oz = 1 / rates.PAM27.
Note on inversion: Developers typically display USD per troy ounce. Since the default quote is ounces per USD, always invert for UI and for most pricing logic. Keep consistent across systems to avoid sign or scale confusion.
Two practical uses wired to real fields
1) Repricing a catalog anchored to PAM27
Scenario: You run a B2B catalog for palladium components priced off the Jun 2027 contract to match your hedging program. Your pricing formula is: item_base_weight_oz × PAM27_USD_per_oz × markup_factor.
Implementation steps:
- Call /latest with base=USD and symbols=PAM27.
- Extract data.rates.PAM27 (ounces per USD) and compute USD per ounce = 1 / data.rates.PAM27.
- Multiply by each SKU’s palladium weight (in troy ounces). If your BOM is in grams, convert to troy ounces first.
- Use data.timestamp for a “priced as of” label, and cache the value to avoid re-quoting every request.
Fields used: rates.PAM27, base, unit, timestamp.
2) Alerting when PAM27 crosses a threshold
Scenario: Create a serverless function that triggers a Slack or email alert when PAM27 USD/oz crosses a budget threshold (e.g., 1,300 USD/oz).
Implementation steps:
- Call /latest, read data.rates.PAM27.
- Invert to USD per ounce: price = 1 / data.rates.PAM27.
- If price >= alert_level, send notification. Include data.timestamp in the message.
- Use simple in-memory or Redis caching keyed by rounded timestamp intervals so you don’t over-call the API.
Fields used: rates.PAM27, timestamp, unit (to label the alert in USD per troy ounce).
Palladium context for builders: why PAM27 matters
Palladium’s dominant role in catalytic converters drives demand sensitivity to automotive production cycles and emissions regulations. Developers can integrate PAM27 to align digital supply chains with forward prices—smoothing P&L by quoting against a hedged month. Smart manufacturing systems can sync work orders, metal allocation, and FX exposure using a programmatic price feed like Metals-API.
As you automate, keep units straight: Markets quote palladium in troy ounces; operations often record weights in grams or kilograms. Ensure conversions sit in one place in your codebase and write assertions in tests to avoid silent drift.
Units, base currency, and converting results you’ll display
- Units: Metals-API returns metals “per troy ounce” by default. If your internal data is in grams, convert using 1 troy ounce = 31.1034768 g.
- Base currency: Default base is USD. The rate you see under rates.PAM27 is ounces per 1 USD. To get USD per ounce, compute 1 / value.
- Display precision: Futures UIs commonly display two decimals for USD/oz. Internally, keep more precision to minimize rounding error.
- FX cross-rates: If you price in non-USD currencies, you can either convert USD/oz to your currency in your app or consult the API’s conversion features in the Metals-API Documentation when your plan supports them.
Caching, refresh frequency, and non-trading days
Refresh cadence depends on your plan. The /latest endpoint updates at intervals such as every 60 minutes or every 10 minutes, depending on subscription. Cache the last good response until the next expected update window to avoid redundant calls.
- Cache key: Use the symbol (PAM27) and truncate timestamps to the documented update interval (e.g., 10-minute buckets).
- Graceful degradation: If the API is temporarily unreachable, serve the last cached quote with a warning banner that includes the timestamp.
- Weekends and holidays: Metals and futures may have limited or no updates during market closures. Your logic should tolerate flat timestamps and avoid spamming alerts when no new data is available.
- Idempotency: Price recomputations should be pure functions of (timestamp, USD/oz, weights, markups) so you can re-run without side effects.
For historical backfills, charting, or VaR, the API also provides historical and time-series endpoints—see the Metals-API Documentation for details. This article focuses on live quotes via /latest.
Production checklist specific to PAM27
- Verify that PAM27 is listed for your account level on the Metals-API Supported Symbols page. Futures availability can vary.
- Normalize to USD/oz right after parsing the response to keep downstream code consistent.
- Encode symbol parameters safely. If you ever pass multiple symbols, separate by commas without spaces.
- Record both the raw response and your computed USD/oz for audit trails.
- Monitor spreads and liquidity: If your plan supports bid/ask data, consult the bid/ask endpoint (see docs) to measure spread-driven execution risk.
Troubleshooting common edge cases
- Empty or null rates: Check the response’s success flag and confirm your symbol is supported by your plan. Fall back to a prior cached value and alert ops.
- Unexpected unit conversions: If you see extreme prices after inversion, confirm you used 1 / (ounces per USD) and not the reverse.
- Latency vs. timestamp: The timestamp indicates market time of the rate snapshot, not your receipt time. For SLAs, log both received_at and API timestamp.
- Precision loss: Use decimal or high-precision floats when aggregating large weights to avoid compounding rounding errors.
End-to-end example: repricing one SKU
Assume a component contains 7.5 grams of palladium hedged to PAM27. Steps:
- Call /latest with symbols=PAM27 and base=USD.
- Read rates.PAM27 (ounces per USD), invert to get USD per ounce.
- Convert grams to troy ounces: 7.5 g ÷ 31.1034768 = 0.2411 oz.
- Compute metal cost: 0.2411 oz × USD/oz.
- Apply your markup or add manufacturing costs.
- Set “priced_at” using the API timestamp for the customer-facing price tag.
This pattern generalizes to quotes, RFQs, and automated PO approvals in ERP systems.
Security and operations
- Do not embed your API key in client-side code. Call Metals-API from your server or an API gateway.
- Rate-limit your own downstream calls to the cache interval appropriate to your subscription update frequency.
- Alert on abnormal gaps: if timestamp doesn’t advance for several cycles during market hours, page ops to inspect connectivity or plan limits.
Where to learn more and get started
Explore supported metals, futures symbols, and currencies: Metals-API Supported Symbols. For full endpoint details, parameters, and response schemas, see the Metals-API Documentation. When you’re ready to build, get your key from the Metals-API Website.
Additional resources
- Contract and market context (external): CME Palladium Markets Overview
- Background on palladium demand (external): Palladium on Wikipedia
FAQ
Q: How do I switch from ounces per USD to USD per ounce?
A: Invert the rate. If rates.PAM27 is ounces per USD, then USD per ounce = 1 / rates.PAM27. Keep results in USD/oz for UIs and calculations.
Q: What timezone is the timestamp in?
A: The timestamp is Unix epoch seconds. Treat it as UTC. Convert to your local timezone only for display.
Q: Can I price in EUR instead of USD?
A: Yes, depending on your plan features. You can request a different base or convert after receiving USD/oz. See the documentation for conversion options.
Q: What if PAM27 isn’t available on my plan?
A: Check the symbol listing at Supported Symbols. If your plan doesn’t include PAM27, consider upgrading or using a related symbol your plan supports.
Q: How often should I call /latest?
A: Match your polling to the update frequency allowed by your plan (e.g., every 60 or 10 minutes). Cache between updates and invalidate when the timestamp advances.
Ready to integrate PAM27 into your pricing, trading, or manufacturing workflows? Get your free API key at the Metals-API Website and start building with the endpoint documentation.