Python 88.3%
TypeScript 7.6%
Shell 4.1%
1#!/usr/bin/env python32# STATUS: LIVE_VERIFIED — executed 2026-09-18 (exit 0 in 9.4s)3# Background mode with the SDK: create (status=queued), poll, cancel a second one immediately (-> cancelled), stream+resume with starting_after.4import pathlib5import sys6import time78ROOT = pathlib.Path(__file__).resolve().parents[3]9sys.path.insert(0, str(ROOT))10from scripts import live # noqa: E4021112from openai import OpenAI # noqa: E4021314client = OpenAI()15M = "gpt-5.4-nano"1617resp = client.responses.create(model=M, input="Reply with OK.", max_output_tokens=32, background=True)18live.log_request("openai", "POST", "/v1/responses", 200, 0.00002, "example responses/background.py")19print("initial status:", resp.status) # queued20while resp.status in ("queued", "in_progress"):21 time.sleep(1)22 resp = client.responses.retrieve(resp.id)23 live.log_request("openai", "GET", "/v1/responses/{id}", 200, 0, "background poll")24print("final:", resp.status, repr(resp.output_text))2526# cancel immediately after creation -> cancelled (idempotent afterwards)27victim = client.responses.create(model=M, input="Reply with OK.", max_output_tokens=32, background=True)28cancelled = client.responses.cancel(victim.id)29live.log_request("openai", "POST", "/v1/responses/{id}/cancel", 200, 0, "example background.py cancel")30print("cancelled status:", cancelled.status)3132# background + stream: keep the cursor (sequence_number) and resume with GET ?stream=true&starting_after=N33stream = client.responses.create(model=M, input="Reply with OK.", max_output_tokens=32, background=True, stream=True)34cursor, sid = -1, None35for ev in stream:36 cursor, sid = ev.sequence_number, getattr(getattr(ev, "response", None), "id", sid)37 if cursor >= 2:38 break39live.log_request("openai", "POST", "/v1/responses", 200, 0.00002, "example background.py stream")40resumed = [ev.type for ev in client.responses.retrieve(sid, stream=True, starting_after=cursor)]41live.log_request("openai", "GET", "/v1/responses/{id}?stream=true", 200, 0, "example background.py resume")42print(f"resumed after seq {cursor}:", resumed)4344for rid in (resp.id, victim.id, sid):45 client.responses.delete(rid)46live.log_request("openai", "DELETE", "/v1/responses/{id}", 200, 0, "cleanup x3")47assert resp.status == "completed" and cancelled.status == "cancelled" and resumed[-1] == "response.completed"48