openapi: 3.1.0 info: title: Black Forest Labs FLUX API description: | Asynchronous image generation API from Black Forest Labs. Submit a generation request to a model-specific endpoint and poll `/v1/get_result` (or use the optional webhook callback) for the finished image. Includes the FLUX, FLUX.1, and FLUX.2 model families, Fill/Expand image editing tools, credit lookup, and fine-tune management. version: "1.0" contact: name: Black Forest Labs url: https://docs.bfl.ai servers: - url: https://api.bfl.ai description: Global - url: https://api.us.bfl.ai description: United States region - url: https://api.eu.bfl.ai description: European region (GDPR) security: - apiKey: [] tags: - name: Generation description: Image generation endpoints. - name: Editing description: Image editing tools (fill, expand, erase). - name: Utility description: Result polling, credits, fine-tune management. paths: /v1/flux-pro-1.1: post: tags: [Generation] summary: FLUX 1.1 [pro] generation operationId: generateFluxPro11 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GenerationRequest' responses: '200': $ref: '#/components/responses/AsyncResponse' '422': $ref: '#/components/responses/ValidationError' /v1/flux-pro-1.1-ultra: post: tags: [Generation] summary: FLUX 1.1 [pro] Ultra generation operationId: generateFluxPro11Ultra requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GenerationRequest' responses: '200': $ref: '#/components/responses/AsyncResponse' '422': $ref: '#/components/responses/ValidationError' /v1/flux-dev: post: tags: [Generation] summary: FLUX.1 [dev] generation operationId: generateFluxDev requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GenerationRequest' responses: '200': $ref: '#/components/responses/AsyncResponse' '422': $ref: '#/components/responses/ValidationError' /v1/flux-2-pro: post: tags: [Generation] summary: FLUX.2 [PRO] generation operationId: generateFlux2Pro requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GenerationRequest' responses: '200': $ref: '#/components/responses/AsyncResponse' '422': $ref: '#/components/responses/ValidationError' /v1/flux-2-flex: post: tags: [Generation] summary: FLUX.2 [FLEX] generation operationId: generateFlux2Flex requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GenerationRequest' responses: '200': $ref: '#/components/responses/AsyncResponse' /v1/flux-2-max: post: tags: [Generation] summary: FLUX.2 [MAX] generation operationId: generateFlux2Max requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GenerationRequest' responses: '200': $ref: '#/components/responses/AsyncResponse' /v1/flux-pro-1.0-fill: post: tags: [Editing] summary: FLUX.1 Fill [pro] - inpaint with a mask operationId: generateFluxFill requestBody: required: true content: application/json: schema: allOf: - $ref: '#/components/schemas/GenerationRequest' - type: object required: [image] properties: image: type: string description: Base64-encoded source image. mask: type: string description: Base64-encoded mask image. responses: '200': $ref: '#/components/responses/AsyncResponse' /v1/flux-pro-1.0-expand: post: tags: [Editing] summary: FLUX.1 Expand [pro] - outpaint operationId: generateFluxExpand requestBody: required: true content: application/json: schema: allOf: - $ref: '#/components/schemas/GenerationRequest' - type: object required: [image] properties: image: type: string description: Base64-encoded source image. top: type: integer bottom: type: integer left: type: integer right: type: integer responses: '200': $ref: '#/components/responses/AsyncResponse' /v1/get_result: get: tags: [Utility] summary: Retrieve generation result operationId: getResult parameters: - in: query name: id required: true schema: type: string description: Task identifier returned by a generation endpoint. responses: '200': description: Current status (and result when ready). content: application/json: schema: $ref: '#/components/schemas/ResultResponse' '422': $ref: '#/components/responses/ValidationError' /v1/credits: get: tags: [Utility] summary: Get account credit balance operationId: getCredits responses: '200': description: Available credits. content: application/json: schema: type: object properties: credits: type: number /v1/my_finetunes: get: tags: [Utility] summary: List the caller's fine-tunes operationId: listFinetunes responses: '200': description: Fine-tune list. /v1/finetune_details: get: tags: [Utility] summary: Get fine-tune details operationId: getFinetuneDetails parameters: - in: query name: finetune_id required: true schema: type: string responses: '200': description: Fine-tune details. /v1/delete_finetune: post: tags: [Utility] summary: Delete a fine-tune operationId: deleteFinetune requestBody: required: true content: application/json: schema: type: object required: [finetune_id] properties: finetune_id: type: string responses: '200': description: Deletion acknowledged. components: securitySchemes: apiKey: type: apiKey in: header name: x-key description: BFL API key. responses: AsyncResponse: description: Generation task queued. content: application/json: schema: $ref: '#/components/schemas/AsyncResponse' ValidationError: description: Request validation failed. content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' schemas: GenerationRequest: type: object properties: prompt: type: string width: type: integer height: type: integer aspect_ratio: type: string example: "16:9" seed: type: integer prompt_upsampling: type: boolean default: false safety_tolerance: type: integer minimum: 0 maximum: 6 output_format: type: string enum: [jpeg, png, webp] webhook_url: type: string format: uri webhook_secret: type: string AsyncResponse: type: object properties: id: type: string polling_url: type: string format: uri ResultResponse: type: object properties: id: type: string status: type: string enum: [Pending, Ready, Error, "Task not found", "Request Moderated", "Content Moderated"] result: type: object nullable: true properties: sample: type: string format: uri progress: type: number nullable: true details: type: object nullable: true preview: type: object nullable: true HTTPValidationError: type: object properties: detail: type: array items: type: object properties: loc: type: array items: oneOf: - type: string - type: integer msg: type: string type: type: string