> ## Documentation Index
> Fetch the complete documentation index at: https://docs.budgetpixel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Generate image with FLUX 3

> Black Forest Labs FLUX 3 — text-to-image and image editing in one model. Edit or compose from up to 10 reference images (free), render at five sizes from 768px to 4K, and optionally let the model ground the prompt with web and image search. Billing: per image by size — 768px = 55, 1K = 65, 1.5K = 90, 2K = 130, 4K = 790 credits. Use POST /v1/cost for an exact quote.

**Asynchronous.** Returns a job `id` (the image is not in this response). Poll [`GET /v1/images/{id}`](/api-reference/images/get-image-job-status) until `status` is `succeeded` — the generated image URLs are in that response's `images` array (each `{ url, position }`).

Examples, sample output and pricing: [FLUX 3](https://budgetpixel.com/models/flux-3-image)



## OpenAPI

````yaml /openapi.yaml post /images/flux-3-image
openapi: 3.1.0
info:
  contact:
    email: support@budgetpixel.com
    name: BudgetPixel Support
  description: >
    The BudgetPixel developer API for programmatic image, video, music and

    sound-effect generation.


    Generation is **asynchronous**: you create a job, then poll its status until
    it

    reaches a terminal state (`succeeded` / `failed`). You are charged in
    credits

    only on success — never for failures, timeouts, or content blocked before

    generation.


    **Authentication.** All requests require an API key sent as a bearer token:

        Authorization: Bearer bpx_live_xxx

    Create and manage keys from your BudgetPixel account dashboard. The
    developer

    API is available on **every paid plan**. On the **Free** plan, API keys can
    call

    one endpoint: `GET /v1/stock/images`, the free stock image library search.


    **Pricing.** API usage is metered in credits at each model's published price

    (see `GET /v1/models`), and your plan's model discounts and active
    promotions

    apply to API charges exactly as they do on the web — `POST /v1/cost` quotes

    your discounted price. Pro and Ultra plans include a daily free-models

    allowance (a shared pool of free generations per day across qualified image

    models such as FLUX 2 Klein and Qwen-Image) that covers API

    requests too — the standard price applies once the day's pool is used.

    Other promotional free daily generations remain web/app-only. Failed

    generations are never charged.


    **Rate limits.** Requests are limited per minute: **600 requests/min per API

    key** and **1200 requests/min per source IP** (defaults; subject to tuning).

    Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and

    `X-RateLimit-Reset` (seconds until the window resets). Exceeding a limit

    returns HTTP `429` with a `Retry-After` header — wait that long before

    retrying. Rejected requests still count against the window, so a tight retry

    loop keeps you limited; back off instead. Generation jobs additionally have
    a

    per-plan concurrency cap (the same one as the web workshop), independent of

    these request limits. `POST /v1/uploads` also has a dedicated **60
    uploads/min

    per account** cap (it's free/unmetered) on top of these limits.
  title: BudgetPixel API
  version: '2026-06-20'
servers:
  - description: Production
    url: https://api.budgetpixel.com/v1
security:
  - ApiKeyAuth: []
tags:
  - description: Account and credit balance
    name: Account
  - description: Discover available models and pricing
    name: Models
  - description: Upload input media for image/video generation
    name: Uploads
  - description: Image job status
    name: Images
  - description: FLUX image models
    name: Black Forest Labs
  - description: SeeDream image models
    name: Bytedance
  - description: Video job status
    name: Videos
  - description: Kuaishou Kling video models
    name: Kling
  - description: SeeDance video models
    name: ByteDance (SeeDance)
  - description: Music and sound-effect job status
    name: Audios
  - description: Music generation models
    name: Music
  - description: Text-to-sound-effect models (priced per second)
    name: Sound Effects
  - description: Format conversion for images, video, and audio
    name: Conversions
  - description: Publish posts to your BudgetPixel feed and enter clan themes
    name: Social
  - description: Content moderation — NSFW rating and CSAM detection
    name: Moderation
  - description: Content classification — music genre detection
    name: Classification
  - description: >-
      Search the free stock image library — available on every plan, including
      Free
    name: Stock Images
paths:
  /images/flux-3-image:
    post:
      tags:
        - Black Forest Labs
      summary: Generate image with FLUX 3
      description: >-
        Black Forest Labs FLUX 3 — text-to-image and image editing in one model.
        Edit or compose from up to 10 reference images (free), render at five
        sizes from 768px to 4K, and optionally let the model ground the prompt
        with web and image search. Billing: per image by size — 768px = 55, 1K =
        65, 1.5K = 90, 2K = 130, 4K = 790 credits. Use POST /v1/cost for an
        exact quote.


        **Asynchronous.** Returns a job `id` (the image is not in this
        response). Poll [`GET
        /v1/images/{id}`](/api-reference/images/get-image-job-status) until
        `status` is `succeeded` — the generated image URLs are in that
        response's `images` array (each `{ url, position }`).


        Examples, sample output and pricing: [FLUX
        3](https://budgetpixel.com/models/flux-3-image)
      operationId: createImage_flux_3_image
      requestBody:
        content:
          application/json:
            schema:
              properties:
                aspect_ratio:
                  default: auto
                  description: >-
                    Output aspect ratio. "auto" (default) follows the first
                    reference image when editing, or lets the model pick a ratio
                    from the prompt for text-to-image.
                  enum:
                    - auto
                    - '1:1'
                    - '16:9'
                    - '9:16'
                    - '4:3'
                    - '3:4'
                    - '3:2'
                    - '2:3'
                    - '5:4'
                    - '4:5'
                    - '2:1'
                    - '1:2'
                    - '21:9'
                    - '9:21'
                  type: string
                grounding:
                  default: true
                  description: >-
                    Let the model research the prompt with web and image search
                    before rendering (default true). Set false for faster,
                    self-contained generation. Costs nothing extra.
                  type: boolean
                num_images:
                  default: 1
                  description: >-
                    Number of images to generate. Each image is billed at its
                    size's price.
                  maximum: 4
                  minimum: 1
                  type: integer
                prompt:
                  description: >-
                    Text description of the image to generate, or of the edit to
                    apply to the reference images.
                  type: string
                reference_images:
                  description: >-
                    Optional reference images (up to 10) for image editing and
                    multi-reference composition. Each item is a public image
                    URL, a data URI, raw base64, or an uploaded-file URL from
                    POST /v1/uploads. Omit for text-to-image. Reference images
                    cost nothing extra.
                  items:
                    type: string
                  maxItems: 10
                  type: array
                  x-bpx-media: image
                size:
                  default: 1K
                  description: >-
                    Output size by approximate pixel count: 768px ≈ 0.6 MP, 1K ≈
                    1 MP, 1.5K ≈ 2 MP, 2K ≈ 4 MP, 4K ≈ 16 MP. Sets the price: 55
                    / 65 / 90 / 130 / 790 credits per image. 4K is returned as a
                    JPEG, smaller sizes as PNG.
                  enum:
                    - 768px
                    - 1K
                    - 1.5K
                    - 2K
                    - 4K
                  type: string
              required:
                - prompt
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateImageResponse'
          description: Job accepted.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  schemas:
    CreateImageResponse:
      properties:
        id:
          description: Opaque job id — use it to poll status.
          example: img_a1b2c3d4e5f6
          type: string
        message:
          type: string
        model:
          type: string
        status:
          $ref: '#/components/schemas/JobStatus'
      type: object
    JobStatus:
      description: Lifecycle state. `succeeded`/`failed`/`timeout` are terminal.
      enum:
        - pending
        - starting
        - processing
        - completing
        - succeeded
        - failed
        - timeout
      type: string
    Error:
      properties:
        error:
          properties:
            code:
              description: Stable machine-readable code.
              example: model_not_available
              type: string
            message:
              type: string
            type:
              description: Error category.
              example: invalid_request_error
              type: string
          required:
            - type
            - code
            - message
          type: object
      required:
        - error
      type: object
    ModerationBlocked:
      description: >-
        Returned (with HTTP 400) when the input content moderation gate blocks a
        generation request. The block is a property of the request's prompt or
        input media — reword the prompt or change the input and retry. Branch on
        `restriction_reason`, which is stable and machine-readable.
      properties:
        error:
          description: Human-readable explanation of the block.
          type: string
        restriction_reason:
          description: Stable machine-readable block reason.
          enum:
            - input_csam
            - input_explicit_adult
            - input_upload_nudity
            - input_celebrity_likeness
            - strict_model_nsfw
          type: string
      required:
        - error
        - restriction_reason
      type: object
  responses:
    BadRequest:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Error'
              - $ref: '#/components/schemas/ModerationBlocked'
      description: >-
        The request was malformed, referenced an unavailable model, or was
        blocked by input content moderation (moderation blocks carry a
        `restriction_reason` — see ModerationBlocked).
    Unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Missing or invalid API key.
    Forbidden:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: >-
        Authenticated but not permitted (plan gate, ownership, account
        restriction). Content-moderation blocks are 400, not 403.
    TooManyRequests:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Rate or queue limit reached. Retry after a short delay.
  securitySchemes:
    ApiKeyAuth:
      bearerFormat: bpx_live_*
      description: 'API key as a bearer token: Authorization: Bearer bpx_live_xxx'
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.