The API keeps no conversation. Each request re-sends the whole thread.
The common read: The conversation is stored on their server and I am adding to it, so my twelfth message costs about what my first one did.
The Messages API keeps no conversation between requests. The Messages API reference says the endpoint serves "either single queries or stateless multi-turn conversations", and the key word is "stateless": the server keeps no session, no thread id, and nothing to append to. It looks like a conversation because your client re-sends the entire history as an array on every request, and the reference says so in the same paragraph.
Look at the request body, not the chat interface. You specify the prior conversational turns with the messages parameter, and the model generates the next message from that array, together with the tools and system text this lesson accounts for later. The array is your data structure, held by your process, serialised and posted whole each time. Twelve turns is twelve requests, and the twelfth one carries every byte of the previous eleven along with the new question.
Loop has been talking to the model for an hour and feels understood. Loop has been paying, on every turn, to re-send everything Loop has said so far. The model stores none of it between turns.
A common symptom: a team's request count is flat, its token count has tripled, and someone reports that "the model got more expensive this month". The cause is long threads, because a thread's total input tokens grow with the square of its turn count. Estimate a thread's cost before you start it: the cost is the sum of every prefix, so a fifty-turn session costs roughly thirteen hundred times one turn, not fifty times.

