Every market-data event delivered by CoinAPI includes two timestamps:
time_exchange and time_coinapi. Together they describe when an update occurred at the exchange and when CoinAPI ingested it at the nearest Point of Presence (PoP).
These timestamps are essential for latency analysis, microstructure modeling, accurate historical reconstruction, and execution research.
time_exchange?time_exchange is the timestamp generated by the exchange itself.
It represents:
Because every exchange behaves differently, this timestamp:
CoinAPI never modifies time_exchange.
If the exchange doesn’t provide one, CoinAPI sets it equal to time_coinapi.
time_coinapi?time_coinapi is the timestamp CoinAPI assigns the moment the update arrives at the ingestion PoP (e.g., NY4, LD4, TY8).
It represents:
This is the timestamp most used for:
time_exchange and time_coinapi differ?Because real-time markets operate across physical distance, internet variability, and exchange load.
The difference between the two is not an error, it is the latency fingerprint of that event.
Reasons they differ:
A fluctuating delta between timestamps is normal and expected.
The difference:
Δ = time_coinapi – time_exchange
Represents the exchange → CoinAPI ingest latency for that update.
It is useful for:
Example:
time_exchange = 12:00:00.820000Ztime_coinapi = 12:00:00.835200ZThis reflects the true real-time delay between generation and arrival.
If an exchange does not include a timestamp, CoinAPI sets:
time_exchange = time_coinapi
This allows systems to function without missing fields, but also signals:
time_exchange when:time_coinapi when:“Why doesn’t CoinAPI fix the latency?”
Because the variation reflects the actual market. Removing it would destroy microstructure accuracy.
“Is a higher delta bad?”
Not necessarily, it often means the exchange is congested, not that CoinAPI is slow.
“Why do REST timestamps differ more?”
REST is not tick-perfect; WebSocket and FIX streams provide real-time granularity.
time_exchange = when the exchange says the event occurred.time_coinapi = when CoinAPI actually ingested it.time_exchange = time_coinapi.