API Docs

Retrieve an image task

GET /v1/tasks/{id}

Reads the state of an image job. You only need it when you passed async: true — a default synchronous call already returns the images. Video jobs are not served here; use GET /v1/video/generations/{task_id}.

Request

bash
curl https://open.pikpikgo.com/v1/tasks/2608101909450810293847 \
  -H "Authorization: Bearer $PIKPIK_API_KEY"

Response

json
{
  "id": "2608101909450810293847",
  "object": "image.generation",
  "created": 1786000185,
  "model": "img-std-1",
  "status": "succeeded",
  "prompt": "a rainy cyberpunk street at night, neon reflections",
  "size": "16:9",
  "quality": "2k",
  "credits": 10,
  "error": "",
  "data": [
    { "url": "https://cdn.pikpikgo.com/ai/xxxx.png", "revised_prompt": "a rainy cyberpunk street at night, neon reflections" }
  ]
}

Status flow

statusMeaningWhat to do
queuedAccepted, waiting for a workerKeep polling
processingRenderingKeep polling
succeededDoneRead data for the output URL and stop polling
failedFailedRead error for the reason and stop. Credits are already refunded

Polling advice

  • Every 3 seconds for images (every 5 for video, at its own endpoint). Polling harder burns rate limit without speeding anything up.
  • Set a ceiling (say 10 minutes for images, 30 for video) and treat it as a timeout. Never loop forever.
  • You do not have to keep the process alive: a background sweeper finalises abandoned tasks and refunds failures.
A task is only visible to the account that created it. Someone else’s task and a non-existent task return the exact same 404.