APIドキュメントの概要
MetalAPI REST APIを1ページで概観します。ベースURL、認証、パラメーター、レスポンス形式、エラー、レート制限に加え、Node.js、PHP、Pythonのコード例もまとめて紹介します。
ベースURL
すべてのリクエストはHTTPSでhttps://metalapi.com/api/v1/に送信し、GETを使用します。レスポンスはsuccessフラグを含むJSONです。
このページは概要です。すべてのパラメーターを網羅した完全なリファレンスはAPIドキュメントをご覧ください。
認証
APIキーは、クエリパラメーター、Bearerトークン、またはX-API-Keyヘッダーで送信します。キーはmk_live_に続く32文字の形式です。キーは秘密にしてください。詳しくはAPI認証をご覧ください。
# クエリパラメーター
GET https://metalapi.com/api/v1/latest?api_key=YOUR_API_KEY
# Authorizationヘッダー
GET https://metalapi.com/api/v1/latest
Authorization: Bearer YOUR_API_KEY
# X-API-Keyヘッダー
GET https://metalapi.com/api/v1/latest
X-API-Key: YOUR_API_KEYエンドポイント
/latest:現在の価格/{YYYY-MM-DD}、/yesterday、または/historical?date=:過去の特定の日の終値/convert?from=&to=&amount=:任意の金額を換算(過去のdateも指定可能)/timeframe?start_date=&end_date=(エイリアス/timeseries):期間内の日次価格/change?start_date=&end_date=:2つの日の間の変動/ohlc?date=:1日の始値、高値、安値、終値/carat?carat=24またはcarat=all:カラット別の金価格(有料プラン)/symbols:サポートされているシンボル(無料、クォータ消費なし)/usage:クォータの状況(無料、クォータ消費なし)/stream:リアルタイムのServer-Sent Events(Proプラン以上)
各エンドポイントのパラメーターと例は利用可能なエンドポイントをご覧ください。
リクエストパラメーター
api_key:APIキー(ヘッダーで送信しない場合)base:返される価格の通貨。デフォルトはUSDcurrenciesまたはsymbols:返すシンボルのカンマ区切りリスト。デフォルトはすべてのシンボル。unit:金属の質量単位。troy_oz(デフォルト)、gram、kilogram、ounce、pound、metric_ton、short_tonのいずれか。
GET /api/v1/latest?api_key=YOUR_API_KEY&base=EUR¤cies=XAU,XAG,USD,GBP&unit=gramレスポンス形式
成功したレスポンスには、success: true、データ、rate_limitブロックが含まれます。各シンボルはXAU(基準通貨1単位あたりのトロイオンス数)とUSDXAU(1トロイオンスの基準通貨建て価格)の2つの形で登場します。詳しくはデータ形式と単位をご覧ください。
{
"success": true,
"timestamp": 1792765800,
"date": "2026-10-23",
"base": "USD",
"rates": {
"EUR": 0.8589589418,
"USDEUR": 1.1642,
"XAG": 0.01853911754,
"USDXAG": 53.94,
"XAU": 0.0002501319446,
"USDXAU": 3997.89
},
"rate_limit": {
"limit": 10000,
"remaining": 9876,
"reset": 1793491200,
"used": 124,
"plan": "Standard",
"reset_date": "2026-11-01T00:00:00.000Z"
}
}エラー
エラー時は、HTTPエラーステータスと、数値コード・タイプ・メッセージを含むsuccess: falseの本文が返されます。完全な一覧はエラーハンドリングをご覧ください。
{
"success": false,
"error": {
"code": 102,
"type": "invalid_api_key",
"info": "User did not supply an access key or supplied an invalid access key"
}
}レート制限
各プランには、毎月1日の00:00 UTCにリセットされる月間クォータと、1分あたりの上限があります。認証済みのすべてのレスポンスには次のヘッダーが含まれます:
- 月間クォータ:
X-RateLimit-Limit、X-RateLimit-Remaining、X-RateLimit-Used - クォータのリセット日時:
X-RateLimit-Reset、X-RateLimit-Reset-Date - プラン名:
X-RateLimit-Plan - 1分あたりの上限:
X-RateLimit-Minute-Limit、X-RateLimit-Minute-Remaining
同じ値はJSONのrate_limitブロックにも含まれます。詳しくはレート制限とプランをご覧ください。
サポートされているシンボル
- 貴金属:
XAU、XAG、XPT、XPD - 産業用金属:
XCU、ALU、ZNC、HRC - エネルギー:
WTI、BRENT、NATURALGAS、GASOLINE、HEATINGOIL - 通貨:
USD、EUR、GBP、JPY、CHF、CAD、AUD、CNYを含む約55通貨 - 暗号資産:
BTC、ETH、SOL、USDT、USDCを含む13銘柄
すべてのシンボルはシンボルページで確認できます。
Node.jsの例
組み込みのfetchを使用する例(Node.js 18以降):
const API_KEY = process.env.METALAPI_KEY;
const BASE_URL = "https://metalapi.com/api/v1";
async function getLatestRates(currencies = "XAU,XAG,EUR") {
const res = await fetch(`${BASE_URL}/latest?currencies=${currencies}`, {
headers: { Authorization: `Bearer ${API_KEY}` },
});
const data = await res.json();
if (!data.success) throw new Error(`${data.error.code}: ${data.error.info}`);
return data.rates;
}
const rates = await getLatestRates();
console.log("Gold (USD/oz):", rates.USDXAU);
console.log("Silver (USD/oz):", rates.USDXAG);PHPの例
PHPとcURLを使用する例:
<?php
$apiKey = getenv('METALAPI_KEY');
$curl = curl_init('https://metalapi.com/api/v1/latest?currencies=XAU,XAG');
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
CURLOPT_HTTPHEADER => ["X-API-Key: {$apiKey}"],
]);
$response = curl_exec($curl);
$error = curl_error($curl);
curl_close($curl);
if ($error) {
exit("cURL error: {$error}\n");
}
$data = json_decode($response, true);
if (!$data['success']) {
exit("API error {$data['error']['code']}: {$data['error']['info']}\n");
}
echo "Gold (USD/oz): " . $data['rates']['USDXAU'] . "\n";
echo "Silver (USD/oz): " . $data['rates']['USDXAG'] . "\n";Pythonの例
requestsライブラリを使用する例:
import os
import requests
API_KEY = os.environ["METALAPI_KEY"]
BASE_URL = "https://metalapi.com/api/v1"
def get_metal_rates(currencies="XAU,XAG,XPT"):
"""MetalAPIから最新の金属価格を取得します。"""
response = requests.get(
f"{BASE_URL}/latest",
params={"currencies": currencies},
headers={"Authorization": f"Bearer {API_KEY}"},
timeout=10,
)
data = response.json()
if not data["success"]:
raise RuntimeError(f"{data['error']['code']}: {data['error']['info']}")
return data["rates"]
rates = get_metal_rates()
print(f"Gold: {rates['USDXAU']} USD/oz")
print(f"Silver: {rates['USDXAG']} USD/oz")
print(f"Platinum: {rates['USDXPT']} USD/oz")リクエストの例
1,000米ドルを金のトロイオンス数に換算する例:
curl "https://metalapi.com/api/v1/convert?api_key=YOUR_API_KEY&from=USD&to=XAU&amount=1000"レスポンスの例
resultは換算後の金額、info.rateは適用されたレートです:
{
"success": true,
"query": { "from": "USD", "to": "XAU", "amount": 1000 },
"info": { "timestamp": 1792765800, "rate": 0.0002501319446, "quote": 0.0002501319446 },
"date": "2026-10-23",
"result": 0.2501319446,
"rate_limit": {
"limit": 10000,
"remaining": 9876,
"reset": 1793491200,
"used": 124,
"plan": "Standard",
"reset_date": "2026-11-01T00:00:00.000Z"
}
}関連ガイド
開発を始める準備はできましたか?
無料アカウントを作成してAPIキーを取得するか、APIリファレンスですべてのエンドポイントをご確認ください。