Developer guide
OilPriceAPI with Ruby
Start with one authenticated Brent request, verify the returned source timestamp, then build outward from the canonical quickstart.
No official Ruby gem is currently published
This guide uses Ruby's built-in Net::HTTP client and cURL to call the OilPriceAPI REST API directly.
Runtime
Ruby 3 exampleEnvironment
OILPRICEAPI_KEYAuthentication
Authorization: Token YOUR_API_KEYFirst request
/v1/prices/latest?by_code=BRENT_CRUDE_USDFirst request
Prove the API path first
Store the key as OILPRICEAPI_KEY and run the request from a trusted server process. Do not expose the key in browser bundles, logs, notebooks, or shared documents.
No test-key prefix
OilPriceAPI does not issue special test keys. Use the keyless demo endpoint or fixtures for tests; keep customer keys out of CI.
ruby
Ruby 3 examplerequire "json"
require "net/http"
api_key = ENV.fetch("OILPRICEAPI_KEY")
uri = URI("https://api.oilpriceapi.com/v1/prices/latest?by_code=BRENT_CRUDE_USD")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Token #{api_key}"
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true, read_timeout: 10) do |http|
http.request(request)
end
raise "HTTP #{response.code}: #{response.body}" unless response.is_a?(Net::HTTPSuccess)
price = JSON.parse(response.body).fetch("data")
puts "#{price.fetch("code")}: #{price.fetch("price")}"This example uses Ruby's built-in Net::HTTP client.
Universal curl
Compare your client with the contract
curl "https://api.oilpriceapi.com/v1/prices/latest?by_code=BRENT_CRUDE_USD" \
-H "Authorization: Token YOUR_API_KEY"Expected shape
Read the timestamp from the response
{
"status": "success",
"data": {
"code": "BRENT_CRUDE_USD",
"price": 78.41,
"currency": "USD",
"created_at": "2026-03-09T12:00:00.000Z",
"type": "spot_price"
}
}Keyless first touch
Use demo data before signup
The demo route is the supported no-key path. It is rate limited and intentionally narrower than authenticated, account-entitled access.
curl "https://api.oilpriceapi.com/v1/demo/prices"Open demo response Recover without guessing
| Result | Next action |
|---|---|
| 401 | Check that the header is exactly Authorization: Token YOUR_API_KEY. |
| 402 / 403 | The dataset may require a plan or account entitlement. Check pricing or contact support. |
| 429 | Read the rate-limit response and retry after the indicated reset; do not loop immediately. |
| Timeout / 5xx | Use a bounded timeout and exponential backoff. Keep the last valid source timestamp visible. |
Supported path
Use the REST API directly
Continue with the built-in language client above or the universal cURL request. Supported packages are available for Python, Node.js, Go, and PHP.