Intraday exchange rate API
Pull timestamped market observations for supported pairs over REST. Start with an anonymous USD/JPY request, then use an API key for account quotas.
Try a 15-minute USD/JPY observation
This fixed example was observed on 2026-09-15 for the 2026-09-14 12:00 UTC bucket. The rate is indicative. timestamp is the bucket start; effective_at is the observation time.
Intervals and available history
The supported market intervals are 1m, 5m, 15m, 1h and 4h. The 1d interval reads daily reference history. Market collection began on 2026-09-14; 1m is retained for 30 days, while coarser intervals have no scheduled expiry. Retention does not mean that every pair already has that much history.
| interval | Unique pairs | Maximum request window |
|---|---|---|
1m | 91 | 7 d |
5m | 91 | 31 d |
15m | 91 | 93 d |
1h | 91 | 366 d |
4h | 79 | 1830 d |
1d | 465 | 1830 d |
Missing observations and crosses
Intraday gaps remain gaps. Cross rates require real closing ticks from both USD legs in the same UTC interval, at most five seconds apart. effective_at is the older observation time. The current bucket can change; 1d remains daily reference history.
A supported window without observations returns HTTP 200 with data: [], has_more: false and next_cursor: null. An unknown interval returns unsupported_interval. A request containing an unsupported pair returns HTTP 400 unsupported_pair_interval with rejected_pairs; the whole request is rejected.
Authentication and commercial use
REST data routes can be tried anonymously: 12 requests per minute and 100 per hour per IP. A bearer API key applies your account quota. Keep keys on your server.
| Plan | Calls per month | Commercial use |
|---|---|---|
| Free | 10,000 | No |
| Basic | 100,000 | Yes |
| Pro | 1,000,000 | Yes |