This endpoint retrieves a single exact option contract by its full contract name. It returns the same core contract-level fields as /v1/options/chain, but scoped to a single instrument.
Use it when you need a clean, direct lookup for contract details, pricing, liquidity, implied volatility, and related metadata without loading the full chain.
Options Endpoint Workflow
This endpoint is the third step in a three-stage options workflow:
- GET /v1/options/expirations/{symbol}: Retrieve the list of available expiration dates for the underlying.
- POST /v1/options/chain: Retrieve the full option chain for a selected expiration date.
- POST /v1/options/contracts: Retrieve data for a single contract, looked up by the contract_name obtained from POST /v1/options/chain.
Asset Type Compatibility
This endpoint is applicable to listed option contracts for supported underlying assets.
- Stocks and ETFs: Supported when the stock has listed options coverage in the provider
- Mutual funds: Generally not applicable.
If a ticker is valid but has no options coverage, the response can return an empty items array.
When to Use This Endpoint
- Open a contract detail panel after a user clicks a specific call or put in the chain table.
- Confirm the selected contract before adding it to a watchlist, strategy builder, or trade idea flow.
- Refresh a single contract snapshot without reloading the entire options chain.
- Support detail drawers, side panels, modals, or confirmation steps in options UI flows.
- Enable deep-link or saved-state flows where the UI stores only the contract_name.
- Feed pricing, AI, or strategy workflows that operate on a single already-identified contract.
Request Parameters
v1/options/contracts
Full option contract identifier.
curl --location "https://api.finimpulse.com/v1/options/contracts" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer <API_TOKEN>" \
-d '{
"contract_name": "NVDA260311C00155000"
}'
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
var client = new HttpClient();
var url = "https://api.finimpulse.com/v1/options/contracts";
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "<API_TOKEN>");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var json = @"{
""contract_name"": ""NVDA260311C00155000""
}";
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.finimpulse.com/v1/options/contracts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Authorization: Bearer <API_TOKEN>"
],
CURLOPT_POSTFIELDS => json_encode(
[
"contract_name" => "NVDA260311C00155000"
]
)
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import urllib.request
import json
url = "https://api.finimpulse.com/v1/options/contracts"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer <API_TOKEN>"
}
data = {
"contract_name": "NVDA260311C00155000"
}
req = urllib.request.Request(url,
data=json.dumps(data).encode("utf-8"),
headers=headers,
method="POST")
with urllib.request.urlopen(req) as response:
result = json.loads(response.read().decode("utf-8"))
print(result)
const https = require('https');
const data = JSON.stringify({
"contract_name": "NVDA260311C00155000"
});
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer <API_TOKEN>',
'Content-Length': Buffer.byteLength(data)
}
};
const req = https.request('https://api.finimpulse.com/v1/options/contracts', options, (res) => {
let body = '';
res.on('data', chunk => body += chunk);
res.on('end', () => console.log(JSON.stringify(JSON.parse(body), null, 2)));
});
req.on('error', (e) => console.error(e));
req.write(data);
req.end();
Response
The response returns a single contract snapshot for the requested option identifier.
Asset identifier (ticker symbol).
Current price of the underlying asset.
Expiration date (YYYY-MM-DD).
Full option contract identifier.
Contract side.
Possible values:
callput
Strike price.
Trading currency.
Last traded price.
Absolute price change.
Percentage price change.
Traded volume.
Open interest.
Bid price.
Ask price.
Contract size classification (e.g., REGULAR).
Timestamp of the last recorded trade (ISO 8601).
Implied volatility.
Indicates whether the contract is currently in the money.
Array of greeks (delta, gamma, theta, vega, rho).
Returns null if values are not available.
{
"task_id": "4785c224-8286-4ff4-965a-64fb4de47a4f",
"status_code": 20000,
"status_message": "OK",
"cost": 0.0004,
"data": {
"contract_name": "NVDA260311C00155000"
},
"result": {
"symbol": "NVDA",
"underlying_price": 182.65,
"expiration_date": "2026-03-11",
"contract_name": "NVDA260311C00155000",
"option_type": "call",
"strike": 155,
"currency": "USD",
"last_price": 24.6,
"change": -1.559999,
"percent_change": -5.9633,
"volume": 20,
"open_interest": 108,
"bid": 25.1,
"ask": 29.3,
"contract_size": "REGULAR",
"last_trade_date": "2026-03-09 15:51:46",
"implied_volatility": -3444640.17943362,
"in_the_money": true,
"greeks": {
"delta": 0,
"gamma": -0,
"theta": -0.02,
"vega": 0,
"rho": 0
}
}
}