Stateful Responses API chain IDs not persisting for follow-up requests

I’m building a document analysis service where users submit documents for initial analysis, then ask follow-up questions about the content. I’m using the Responses API with store: true and previous_response_id to maintain conversation context across multiple requests.

The problem: Follow-up requests fail unpredictably with what appears to be “conversation not found” errors. The pattern is:

  • Initial analysis request works fine, returns response ID

  • First follow-up question sometimes works, sometimes fails

  • Subsequent follow-ups fail more frequently

  • After ~30-60 seconds of no activity, follow-ups consistently fail

My approach:

  1. Send initial request with store: true, save the returned response.id

  2. Store this ID mapped to the document

  3. For follow-ups, retrieve the stored ID and send it as previous_response_id

What I’ve observed:

  • The initial response ID is being stored correctly

  • When I retrieve it for follow-ups, the ID is present

  • The API call is sent with the correct previous_response_id

  • Yet OpenAI returns an error suggesting the conversation chain doesn’t exist

Questions:

  1. Do stored conversation chains have a TTL? How long are they valid?

  2. Is there a maximum number of follow-up requests per chain?

  3. Could there be timing issues if follow-ups happen too quickly after the initial request?

  4. Is there a way to check if a chain ID is still valid before attempting to use it?