{
  "catalog_version": "2026-09-26.1",
  "updated": "2026-09-26",
  "base_url": "https://dashboard.alphanetplus.com",
  "aspects": [
    {
      "value": "1:1",
      "size": "1024 × 1024"
    },
    {
      "value": "3:4",
      "size": "768 × 1024"
    },
    {
      "value": "4:3",
      "size": "1024 × 768"
    },
    {
      "value": "2:3",
      "size": "768 × 1152"
    },
    {
      "value": "3:2",
      "size": "1152 × 768"
    },
    {
      "value": "16:9",
      "size": "1344 × 768"
    },
    {
      "value": "9:16",
      "size": "768 × 1344"
    }
  ],
  "flow": [
    {
      "step": 1,
      "method": "POST",
      "path": "/v1/flux/uploads",
      "title": "Open an upload ticket",
      "detail": "One ticket per reference image. The response carries the URL to PUT the bytes to, the file id you submit, and the byte ceiling."
    },
    {
      "step": 2,
      "method": "PUT",
      "path": "{upload_url}",
      "title": "Upload the bytes",
      "detail": "Send the file itself to the signed URL, with the headers from the ticket. Nothing else goes through our API: the bytes go straight to storage."
    },
    {
      "step": 3,
      "method": "POST",
      "path": "/v1/tasks/alphanet-flux",
      "title": "Submit the task",
      "detail": "The model id and the file ids in order. Always send an Idempotency-Key: the same key and body return the same task, a different body under the same key is refused with 409."
    },
    {
      "step": 4,
      "method": "GET",
      "path": "/v1/tasks/{task_id}",
      "title": "Poll, then fetch the result",
      "detail": "Poll until the status is terminal, then read /v1/tasks/{task_id}/result for the signed URLs and the sha256 of each artifact."
    }
  ],
  "model": {
    "id": "flux-klein",
    "label": "Generative edit, upscale and restore",
    "summary": "The general-purpose editor: your prompt decides what happens, and the output is the size you ask for.",
    "capability": "generative_repaint",
    "inputs": {
      "min": 1,
      "max": 4,
      "slots": [
        "the image to edit"
      ]
    },
    "params": [
      {
        "name": "prompt",
        "type": "string",
        "required": true,
        "note": "What should change. The only model here that reads your own words."
      },
      {
        "name": "width",
        "type": "integer",
        "default": "1024",
        "note": "Output width: a multiple of 16, at most 1536 px."
      },
      {
        "name": "height",
        "type": "integer",
        "default": "1024",
        "note": "Output height, under the same rules."
      },
      {
        "name": "num_inference_steps",
        "type": "integer",
        "default": "4",
        "note": "Four steps unless you ask for more; more steps refine detail and take longer."
      },
      {
        "name": "seed",
        "type": "integer",
        "note": "Same seed and body reproduces the same render."
      },
      {
        "name": "max_sequence_length",
        "type": "integer"
      },
      {
        "name": "output_format",
        "type": "string",
        "values": "png | webp"
      },
      {
        "name": "output_quality",
        "type": "integer"
      }
    ],
    "refuses": [],
    "output": "PNG or WebP at the width and height you sent; 1–4 references may be combined.",
    "latency": "~16 s end to end for a 1152 × 1536 render, 6.4 s of it inference (measured 2026-09-26); the rest is queueing and the result upload",
    "limits": [
      "It is a generative re-render: faces and small text can shift. Review the result at 100% before publishing.",
      "It cannot add detail that was never captured with certainty — an upscale reconstructs plausible texture, not the original pixels."
    ],
    "submit_body_example": {
      "model": "flux-klein",
      "image_ids": [
        "<file_id>"
      ],
      "prompt": "Restore realistic detail, texture and sharpness at 2x the size while keeping the composition identical. Do not add objects and do not change the framing.",
      "width": 1152,
      "height": 1536,
      "num_inference_steps": 8,
      "seed": 42,
      "output_format": "png"
    },
    "price": "$0.01 per call",
    "try_it": "/image-upscaler",
    "cases": [],
    "verified": "2026-09-26 (public gateway)"
  }
}
