nautechsystems/nautilus_trader · error
Failed to get fills: {error_msg}
Error message
Failed to get fills: {error_msg} What it means
request_fill_reports calls get_fills on the Kraken Futures API and bails when the response result is not Success, including the API's error string. Fill reports cannot be produced without a successful fills response.
Source
Thrown at crates/adapters/kraken/src/http/futures/client.rs:1822
Ok(all_reports)
}
pub async fn request_fill_reports(
&self,
account_id: AccountId,
instrument_id: Option<InstrumentId>,
start: Option<Timestamp>,
end: Option<Timestamp>,
) -> anyhow::Result<Vec<FillReport>> {
let ts_init = self.generate_ts_init();
let mut all_reports = Vec::new();
let response = self.inner.get_fills(None).await?;
if response.result != KrakenApiResult::Success {
let error_msg = response
.error
.unwrap_or_else(|| "Unknown error".to_string());
anyhow::bail!("Failed to get fills: {error_msg}");
}
let start_ms = start.map(|dt| dt.as_millisecond());
let end_ms = end.map(|dt| dt.as_millisecond());
for fill in response.fills {
if let Some(start_threshold) = start_ms
&& let Ok(fill_ts) = fill.fill_time.parse::<Timestamp>()
{
let fill_ms = fill_ts.as_millisecond();
if fill_ms < start_threshold {
continue;
}
}
if let Some(end_threshold) = end_ms
&& let Ok(fill_ts) = fill.fill_time.parse::<Timestamp>()
{View on GitHub (pinned to 18893faf8b)
Solutions
- Examine {error_msg} for the exchange's specific complaint.
- Grant the API key access to fills/executions data.
- Retry with backoff on transient exchange errors.
Defensive patterns
Strategy: try-catch
Try / catch
match adapter.request_fill_reports(start, end).await {
Ok(fills) => reconcile(fills),
Err(e) => log::error!("fills fetch failed: {e}"),
} Prevention
- Enable fills/execution read permission on the API key.
- Confirm the key targets the correct futures account type.
- Back off and retry on rate-limit messages.
When it happens
Trigger: Calling request_fill_reports when the get_fills endpoint returns result != Success — authentication failure, permission error, or exchange rejection.
Common situations: API key without fill/execution read permission; querying fills on the wrong account type; transient Kraken errors.
Related errors
- Failed to get futures accounts: {error_msg}
- Failed to get open orders: {error_msg}
- Failed to get open positions: {error_msg}
- Binance Futures account state request failed: {e}
- WS submit order failed: {e}
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/7688cc21aeb77166.
Report an issue: GitHub.