Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save Cahl-Dee/4dccfa8f1bca8495b810cfe81037643d to your computer and use it in GitHub Desktop.

Select an option

Save Cahl-Dee/4dccfa8f1bca8495b810cfe81037643d to your computer and use it in GitHub Desktop.
The Grid API transport incidents — 2026-08-15 (UTC)

The Grid API transport incidents — 2026-08-15

Server-side debugging packet for trading.api.thegrid.ai.

All incident times below are UTC. The source daemon log uses CDT (UTC−5), so UTC = logged time + 5 hours.

Client context

  • Host OS: macOS 26.3.1, arm64
  • Python: 3.11.15
  • requests: 2.34.2
  • urllib3: 2.7.0
  • OpenSSL: 3.5.7
  • Base URL: https://trading.api.thegrid.ai
  • API prefix: /v1
  • Client timeout: 15 seconds
  • Authentication: signed requests using x-thegrid-signature, x-thegrid-timestamp, and x-thegrid-fingerprint

No HTTP 4xx or 5xx response was logged for these incidents. They were connection-close, read-timeout, or broken-pipe transport failures before a usable HTTP response reached the client.

Summary

As of 20:14 UTC:

  • 16 transport failures
  • 10 full-cycle failures
  • 6 isolated endpoint/market failures
  • Full-cycle failures all occurred during fresh cash-balance reads from GET /v1/currency-trading-accounts
  • Dominant exception: RemoteDisconnected: Remote end closed connection without response
  • One 15-second read timeout
  • One broken pipe while reading public market trades

The client failed closed: it aborted the cycle, skipped only the affected market, or froze trading when private balance evidence was incomplete.

Incident timeline

UTC time Source log time (CDT) Severity Endpoint / operation Object Failure Client consequence
06:14:25 01:14:25 ERROR GET /v1/currency-trading-accounts Cycle 405 Remote closed connection without response Full cycle aborted; cycle 406 began at 06:14:31 UTC
07:19:53 02:19:53 ERROR GET /v1/currency-trading-accounts Cycle 407 Remote closed connection without response Full cycle aborted; cycle 408 began at 07:36:05 UTC
07:52:02 02:52:02 WARNING Private token-balance read Token balances Remote closed connection without response Buys blocked; sells and cancellations frozen for the cycle
09:41:59 04:41:59 WARNING Market context read: order book followed by ticker Kimi Latest; instrument instrument-1a84d232-1d61-4435-8bc3-e128543e7420; market market-f086343e-cd3c-4ccc-bc43-6b873f002290 Remote closed connection without response Only this market skipped
11:01:22 06:01:22 ERROR GET /v1/currency-trading-accounts Cycle 411 Read timed out after 15 seconds Full cycle aborted; cycle 412 began at 11:01:28 UTC
11:48:37 06:48:37 ERROR GET /v1/currency-trading-accounts Cycle 413 Remote closed connection without response Full cycle aborted; cycle 414 began at 12:03:42 UTC
12:20:35 07:20:35 WARNING Market context read: order book followed by ticker Minimax Latest; instrument instrument-512ab75a-e1e3-40c4-a849-0dc14c2da47a; market market-3148b9a7-548c-4ff4-a34a-bf3cba2c6f4d Remote closed connection without response Only this market skipped
13:02:21 08:02:21 ERROR GET /v1/currency-trading-accounts Cycle 415 Remote closed connection without response Full cycle aborted; cycle 416 began at 13:02:25 UTC
14:03:04 09:03:04 ERROR GET /v1/currency-trading-accounts Cycle 417 Remote closed connection without response Full cycle aborted; cycle 418 began at 14:03:08 UTC
14:20:25 09:20:25 WARNING Market context read: order book followed by ticker Text Prime; instrument instrument-02c2a05b-6157-4a34-9af7-aca1d8c79953; market market-1d2124dd-a403-42aa-bc0a-639bd7039b3a Remote closed connection without response Only this market skipped
15:04:02 10:04:02 WARNING GET /v1/markets/market-24d9fd99-3ea8-4522-bd66-8e16bbe03894/trades?limit=500 Text Max; instrument instrument-7a0225b2-9d25-4242-8f1d-490fc66dea77 BrokenPipeError(32, "Broken pipe") Sell tape marked unavailable; sell activity for Text Max frozen
15:58:00 10:58:00 ERROR GET /v1/currency-trading-accounts Cycle 421 Remote closed connection without response Full cycle aborted; cycle 422 began at 15:58:06 UTC
16:05:02 11:05:02 ERROR GET /v1/currency-trading-accounts Cycle 423 Remote closed connection without response Full cycle aborted; cycle 424 began at 16:05:08 UTC
16:15:58 11:15:58 ERROR GET /v1/currency-trading-accounts Cycle 425 Remote closed connection without response Full cycle aborted; cycle 426 began at 16:16:03 UTC
17:08:54 12:08:54 ERROR GET /v1/currency-trading-accounts Cycle 429 Remote closed connection without response Full cycle aborted; cycle 430 began at 17:25:30 UTC
18:21:01 13:21:01 WARNING Market context read: order book followed by ticker Text Max; instrument instrument-7a0225b2-9d25-4242-8f1d-490fc66dea77; market market-24d9fd99-3ea8-4522-bd66-8e16bbe03894 Remote closed connection without response Only this market skipped

Exact exception chain for cycle-level disconnects

http.client.RemoteDisconnected:
  Remote end closed connection without response

urllib3.exceptions.ProtocolError:
  ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

requests.exceptions.ConnectionError:
  ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

Application call path:

bot.py: main()
  -> run_cycle()
  -> _fetch_currency_balances()
grid_client.py:
  -> currency_trading_accounts()
  -> get("/currency-trading-accounts")
  -> _request("GET", ...)
requests / urllib3 / http.client:
  -> Session.request()
  -> Session.send()
  -> connectionpool.urlopen()
  -> getresponse()

Timeout exception at 11:01:22 UTC:

TimeoutError: The read operation timed out
urllib3.exceptions.ReadTimeoutError:
  HTTPSConnectionPool(host='trading.api.thegrid.ai', port=443): Read timed out. (read timeout=15)
requests.exceptions.ReadTimeout:
  HTTPSConnectionPool(host='trading.api.thegrid.ai', port=443): Read timed out. (read timeout=15)

Broken-pipe exception at 15:04:02 UTC:

("Connection broken: BrokenPipeError(32, 'Broken pipe')",
 BrokenPipeError(32, 'Broken pipe'))

Endpoint behavior and logging limits

At the beginning of every cycle, the bot requests fresh cash balances from:

GET /v1/currency-trading-accounts

Market context is assembled sequentially from:

GET /v1/markets/{market_id}/orderbook
GET /v1/markets/{market_id}/ticker

The existing client warning wraps both calls in one market-context operation, so the three market-context disconnects cannot be attributed conclusively to order book versus ticker from client logs alone. Server logs should inspect both endpoint requests near the listed timestamps.

Public tape reads use:

GET /v1/markets/{market_id}/trades?limit=500

The token-balance warning does not include the request path in the current client log. It occurred during the private token-holdings fetch; correlate signed private-account requests near 07:52:02 UTC.

The client currently logs no server request ID, trace ID, response headers, resolved server IP, or connection identifier, so timestamp, endpoint, authenticated account/fingerprint, market IDs, and instrument IDs are the available correlation keys.

Rate context

Through the measurement window on Aug 15:

  • 16 transport errors across 252 cycles
  • 6.35 transport errors per 100 cycles
  • Comparable Aug 10–14 same-window rates were approximately 1.2–4.6 per 100 cycles
  • The Aug 15 rate is elevated, although its raw incident count is not the largest in the recent period

These disconnects predate Aug 15: the first available daemon log records a remote disconnect on Jul 21 at 01:09 UTC. The Aug 15 events are therefore an elevated recurrence of a longstanding transport/API reliability issue, not a wholly new failure mode.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment