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.
pageintegeroptional
Page number (1-based). Defaults to 1. Use with limit to paginate through results. Keep limit stable while paging.

Response

bucketstringoptional
The normalized bucket you queried.
limitintegeroptional
The effective limit applied to this query.
countintegeroptional
Number of items returned in data.
on_pageintegeroptional
The current page number.
total_pagesintegeroptional
Total number of pages available at the current limit.
has_next_pagebooleanoptional
Whether another page exists after this one.
has_prev_pagebooleanoptional
Whether a previous page exists before this one.
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": true,
  "bucket_link": "https://qaves.me/api/b/8f1c…",
  "limit": 50,
  "count": 2,
  "bucket_total": 2,
  "on_page": 1,
  "total_pages": 1,
  "has_next_page": false,
  "has_prev_page": false,
  "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 page = 1;
  while (true) {
    const url = new URL("https://qaves.me/api/v1/images/generations");
    url.searchParams.set("bucket", bucket);
    url.searchParams.set("limit", "100");
    url.searchParams.set("page", String(page));

    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.has_next_page) return;
    page++;
  }
}

Image URLs are permanent

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