Error: "OPRA agreement is not signed"

Hi Alpaca support,

BROKERAGE ACCOUNT NUMBER: 151236500

Error: “OPRA agreement is not signed”

Account Type: Basic

I’m building a personal application that uses the Alpaca Market Data API for options data. I’m running into an issue with the option bars endpoint.

Setup:

  • Using account with live API key (AK…)
  • Option Agreement: Signed
  • OPRA Agreement: Signed (I THINK?)
  • Using alpaca-py Python SDK

What works:

  • OptionSnapshotRequest with feed=OptionsFeed.INDICATIVE returns data successfully
  • OptionLatestTradeRequest with feed=OptionsFeed.INDICATIVE works

What fails:

  • OptionBarsRequest returns {“message”: “OPRA agreement is not signed”}
  • The OptionBarsRequest class in alpaca-py does not expose a feed parameter, so I cannot set it to INDICATIVE like I can with snapshots

Example code:
from alpaca.data.historical.option import OptionHistoricalDataClient
from alpaca.data.requests import OptionBarsRequest
from alpaca.data.timeframe import TimeFrame

client = OptionHistoricalDataClient(“AK…”, “…”)
request = OptionBarsRequest(
symbol_or_symbols=[“NVDA260821C00200000”],
timeframe=TimeFrame.Day,
start=“2026-02-10”,
end=“2026-02-17”,
)
bars = client.get_option_bars(request) # Fails: “OPRA agreement is not signed”

Questions:

  1. I signed the OPRA agreement — is there a propagation delay, or is a paid data subscription required beyond signing the agreement?
  2. The REST API documentation suggests a feed=indicative query parameter exists for /v1beta1/options/bars, but the alpaca-py SDK’s OptionBarsRequest doesn’t expose a feed field. Is this
    intentional? Is there a way to use the INDICATIVE feed for option bars?

Thanks for your help.

1 Like

@Ali_Agha The error “OPRA agreement is not signed” is a bit misleading. Apologies for that. What that error really means is you are requesting real time OPRA data and do not have an Algo Trader Plus market data subscription. Real time in this case means the latest 15 minutes.

The fix is to specify feed=indicative if that parameter is available, otherwise ensure you are not requesting data more recent than the latest 15 minutes. This would be the case when requesting bars. For a bars request, you can also omit the end parameter if you want the most recent bars your subscription allows. The API will default to the current time minus 15 minutes if you do not have an Algo Trader Plus subscription.

Note that the indicative prices can be misleading. The indicative feed is provided primarily for testing and debug and should really not be used for live trading decisions.

Hope that answered all your questions, but please reply if not.