Images

Listing images

Fetch images you've previously generated, filtered by bucket and ordered newest first. Useful for building galleries, picking a recent generation to re-post, or paginating through history.

Endpoint

GET https://qaves.me/api/v1/images/generations

Query parameters

bucketstringoptional
Bucket to read from. Auto-normalized the same way as on creation. Defaults to default.
limitintegeroptional
How many to return. Between 1 and 100. Defaults to 50.
beforeintegeroptional
Pagination cursor — Unix epoch (seconds). Pass next_before from the previous response to fetch the next page. Omit to start from the most recent image.

Response

bucketstringoptional
The normalized bucket you queried.
limitintegeroptional
The effective limit applied to this query.
countintegeroptional
Number of items returned in data.
next_beforeinteger | nulloptional
Cursor for the next page, or null when there are no more results.
bucket_idstring | nulloptional
The bucket's unique ID, or null if the bucket has no metadata row yet.
is_publicbooleanoptional
Whether the bucket is publicly browsable.
bucket_linkstring | nulloptional
Public URL for the bucket (only set when is_public is true).
dataarrayoptional
Array of images, each with id, url, prompt, bucket, and created_at (Unix epoch).
{
  "bucket": "default",
  "bucket_id": "8f1c…",
  "is_public": false,
  "bucket_link": null,
  "limit": 50,
  "count": 2,
  "next_before": null,
  "data": [
    {
      "id": "f0c8…",
      "url": "https://qaves.me/api/i/<id>.png",
      "prompt": "A neon orange fox",
      "bucket": "default",
      "created_at": 1778833800
    }
  ]
}

Examples

Latest 10 images in the default bucket

curl "https://qaves.me/api/v1/images/generations?limit=10" \
  -H "Authorization: Bearer sk_qu_YOUR_KEY"

Read from a specific bucket

curl "https://qaves.me/api/v1/images/generations?bucket=client-acme&limit=50" \
  -H "Authorization: Bearer sk_qu_YOUR_KEY"

Paginate through history

async function* allImages(bucket = "default") {
  let before: number | undefined;
  while (true) {
    const url = new URL("https://qaves.me/api/v1/images/generations");
    url.searchParams.set("bucket", bucket);
    url.searchParams.set("limit", "100");
    if (before) url.searchParams.set("before", String(before));

    const res = await fetch(url, {
      headers: { Authorization: `Bearer ${process.env.QAVES_KEY}` },
    });
    const json = await res.json();
    for (const img of json.data) yield img;
    if (!json.next_before) return;
    before = json.next_before;
  }
}

Image URLs are permanent

URLs returned here are the same ones returned by creating images — safe to embed long-term.