Skip to main content

Background Completion Jobs

In this lesson, you'll learn how to submit long-running OpenAI response jobs to be processed in the background, ideal for large outputs like novels or reports.

Prerequisites

Install the OpenAI SDK:

pip install openai

The Code

from openai import OpenAI
from time import sleep

client = OpenAI()

resp = client.responses.create(
model="gpt-4o-mini",
input="Write a very long novel about otters in space.",
background=True,
)

print(f"Response ID: {resp.id} - Status: {resp.status}")

while resp.status in {"queued", "in_progress"}:
print(f"Current status: {resp.status}")
sleep(2)
resp = client.responses.retrieve(resp.id)

print(f"Final status: {resp.status}\nOutput:\n{resp.output_text}")

Explanation

  • background=True: Tells the API to process the job asynchronously.
  • resp.status: Helps track progress (queued, in_progress, completed, etc.).
  • client.responses.retrieve(resp.id): Refreshes the response status.
  • sleep(2): Avoids spamming API calls while polling.

Use Case

Ideal for:

  • Long creative writing tasks
  • Heavy processing jobs
  • Deferred output in serverless or job-queue setups