---
canonical_url: "https://docs.composio.dev/toolkits/bfl"
markdown_url: "https://docs.composio.dev/toolkits/bfl.md"
product: "platform"
version: null
last_updated: null
---

# Black Forest Labs

Black Forest Labs provides hosted FLUX models for generating and editing images and videos, polling asynchronous results, managing fine-tunes, and checking project credits.

- **Category:** media generation
- **Auth:** API_KEY
- **Composio-managed OAuth available?** N/A
- **Tools:** 14
- **Triggers:** 0
- **Slug:** `BFL`
- **Version:** 20261014_01
- **Instant:** Supported on the latest version. Support varies by tool.

## Tools

### Deblur Image

**Slug:** `BFL_DEBLUR_IMAGE`

Submit a paid asynchronous deblurring of an authorized image. Returns the task ID, exact polling URL, and quoted cost without waiting.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `seed` | integer | No | Optional deterministic seed for reproducibility. |
| `user` | string | No | Optional opaque end-user identifier for provider-side attribution; do not send personal data. |
| `image` | string | Yes | Authorized base64 image or HTTP(S) image URL to restore. Use only media you own or are authorized to process. |
| `output_format` | string ("jpeg" | "png" | "webp") | No | Generated image format. |
| `safety_tolerance` | integer | No | Moderation tolerance from 0 (strictest) to 5 (least strict). Keep the default unless authorized and policy-compliant. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Edit Video

**Slug:** `BFL_EDIT_VIDEO`

Submit a paid asynchronous prompt-directed edit of an authorized source video. Returns the task ID, exact polling URL, and quoted per-second cost without waiting for or downloading the result.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user` | string | No | Optional opaque end-user identifier for provider-side attribution; do not send personal data. |
| `video` | string | Yes | Authorized HTTP(S) video URL or base64 MP4 to edit. Use only media you own or are authorized to transform. |
| `prompt` | string | Yes | Specific edit instruction for the source video. |
| `safety_tolerance` | integer | No | Moderation tolerance from 0 (strictest) to 4, subject to stricter provider harm-class caps. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Erase Image Object

**Slug:** `BFL_ERASE_IMAGE_OBJECT`

Submit a paid asynchronous removal of a masked object from an authorized image. Returns the task ID, exact polling URL, and quoted cost without waiting for or downloading the result.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mask` | string | Yes | Same-size authorized black-and-white mask as base64 or an HTTP(S) image URL. White selects removal and black preserves pixels. |
| `seed` | integer | No | Optional deterministic seed for reproducible output. |
| `user` | string | No | Optional opaque end-user identifier for provider-side attribution; do not send personal data. |
| `image` | string | Yes | Authorized base64 image or HTTP(S) image URL to edit. Use only media you own or are authorized to transform. |
| `dilate_pixels` | integer | No | Pixels by which to expand the white mask to cover object edges. |
| `output_format` | string ("jpeg" | "png" | "webp") | No | Generated image format. |
| `safety_tolerance` | integer | No | Moderation tolerance from 0 (strictest) to 5 (least strict). Keep the default unless authorized and policy-compliant. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Generate Fine-Tuned Image

**Slug:** `BFL_GENERATE_FINETUNED_IMAGE`

Submit a paid asynchronous FLUX fine-tuned image generation using an existing LoRA. Returns the task ID, exact polling URL, and quoted cost; it does not wait for or download the result.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `seed` | integer | No | Optional deterministic seed; omit for a random seed. |
| `prompt` | string | No | Text description of the image to generate. |
| `finetune_id` | string | Yes | LoRA name to use; for a shared LoRA use org-id/lora-name. |
| `aspect_ratio` | string | No | Output aspect ratio between 21:9 and 9:21. |
| `image_prompt` | string | No | Optional authorized image as base64 used to guide or remix the result. Use only media you own or are authorized to process. |
| `output_format` | string ("jpeg" | "png" | "webp") | No | Generated image format. |
| `safety_tolerance` | integer | No | Moderation tolerance from 0 (strictest) to 6 (least strict). Keep the default unless the use case is authorized and policy-compliant. |
| `finetune_strength` | number | No | LoRA influence from 0 (none) to 2; 1 represents full influence. |
| `prompt_upsampling` | boolean | No | Allow BFL to expand the prompt for more creative output. |
| `image_prompt_strength` | number | No | Blend strength of image_prompt relative to the text prompt. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Generate or Edit FLUX.2 Klein Image

**Slug:** `BFL_GENERATE_OR_EDIT_FLUX_2_KLEIN_IMAGE`

Submit a paid asynchronous FLUX.2 Klein image generation or authorized reference-image edit with the stable 4B or 9B model. Returns the task ID, exact polling URL, and quoted cost without waiting for or downloading the result.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `seed` | integer | No | Optional deterministic seed; omit for a random seed. |
| `user` | string | No | Optional opaque end-user identifier for provider-side attribution; do not send personal data. |
| `model` | string ("klein_4b" | "klein_9b") | No | Klein model size. Use klein_4b for lower cost and latency, or klein_9b when higher model capacity is needed. |
| `width` | integer | No | Output width in pixels; 0 lets BFL choose, otherwise use at least 64. |
| `height` | integer | No | Output height in pixels; 0 lets BFL choose, otherwise use at least 64. |
| `prompt` | string | Yes | Text description of the image or requested edits. |
| `input_images` | array | No | Optional ordered authorized reference images, each an HTTP(S) URL or base64 image. Omit for text-only generation. Use only media you own or are authorized to process. |
| `output_format` | string ("jpeg" | "png" | "webp") | No | Generated image format. |
| `safety_tolerance` | integer | No | Moderation tolerance from 0 (strictest) to 5 (least strict). Keep the default unless the use case is authorized and policy-compliant. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Generate or Edit Image

**Slug:** `BFL_GENERATE_OR_EDIT_IMAGE`

Submit a paid asynchronous FLUX 3 image generation or authorized reference-image edit. Returns a task ID and exact polling URL without waiting for or downloading the result. Moderation may end the task without media. Result URLs expire quickly; download promptly and preserve the original bytes and C2PA provenance metadata.

**Instant:** Supported on the latest version.

**Instant pricing:** FLUX 3 price per generated image: $0.041 at 768 x 768 pixels; $0.048 at about 1,000 x 1,000 pixels; $0.07 at about 1,500 x 1,500 pixels; $0.1 at about 2,000 x 2,000 pixels; $0.607 at about 4,000 x 4,000 pixels. These sizes describe square images; actual width and height vary with the selected aspect ratio.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `images` | array | No | Optional authorized reference images, each an HTTP(S) URL or base64 image. Omit for text-only generation. Use only media you own or are authorized to process. |
| `prompt` | string | Yes | Free-form description of the image or edits to make. |
| `grounding` | boolean | No | Allow external web and image search grounding. Set false when the request must not use external research. |
| `resolution` | string ("768sq" | "1k" | "1.5k" | "2k" | "4k") | No | Equal-pixel-area output resolution tier; exact dimensions depend on the aspect ratio, and higher tiers generally cost more. |
| `aspect_ratio` | string ("auto" | "21:9" | "2:1" | "16:9" | "3:2" | "7:5" | "4:3" | "5:4" | "1:1" | "4:5" | "3:4" | "5:7" | "2:3" | "9:16" | "1:2" | "9:21") | No | Output aspect ratio. auto follows prompt or reference-image framing when possible. |
| `safety_tolerance` | integer | No | Moderation tolerance from 0 (strictest) to 4 (least strict). Keep the default unless the use case is authorized and policy-compliant. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Generate Video

**Slug:** `BFL_GENERATE_VIDEO`

Submit a paid asynchronous FLUX 3 video task from text, authorized keyframes, a source video, or a prior draft cache. Video is charged by duration and resolution. Returns a task ID and exact polling URL without waiting for or downloading outputs. Managed requests require a fixed duration and a published request price of at most $2. Managed video uses the published request price for billing.

**Instant:** Supported on the latest version.

**Instant pricing:** Starts at $0.06 per output second for HD drafts; full-render price varies by mode and resolution. Eligible fixed-duration requests have a published price of at most $2.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("text_to_video" | "image_to_video" | "continue_video" | "enhance_draft") | No | Video workflow: generate from text, animate keyframes, continue a source clip, or render a saved draft cache at full quality. |
| `user` | string | No | Optional opaque end-user identifier for provider-side attribution; do not send personal data. |
| `draft` | boolean | No | Generate a faster preview whose result includes a short-lived draft_cache URL for later full-quality enhancement. Requires resolution hd. |
| `prompt` | string | No | Video description. Required except in enhance_draft mode. |
| `duration` | string | No | Whole output seconds or auto. Text/image modes allow 5-20; continue_video allows 5-15. Not used for enhance_draft. |
| `keyframes` | array | No | One to ten authorized image URLs/base64 values. Use either all plain images or all [seconds, image] pairs in strictly increasing order from 0 to 20 seconds. Three or more plain images require an integer duration. Required for image_to_video. Use only media you own or are authorized to animate. |
| `resolution` | string ("hd" | "fhd" | "qhd" | "uhd") | No | Output resolution tier. Higher tiers use an upscaling finish and generally cost more; enhance_draft defaults to fhd. |
| `draft_cache` | string | No | Base64 .bin bundle downloaded from a prior draft result, or its still-valid HTTPS URL. Required for enhance_draft; preserve this provider-generated bundle unchanged. |
| `start_video` | string | No | Authorized HTTP(S) URL or base64 MP4 to continue from its final frames. Required for continue_video. |
| `aspect_ratio` | string ("auto" | "21:9" | "2:1" | "16:9" | "4:3" | "1:1" | "3:4" | "9:16" | "9:21") | No | Output aspect ratio for text/image/continue modes. |
| `generate_audio` | boolean | No | Generate synchronized audio in text/image/continue modes. |
| `safety_tolerance` | integer | No | Moderation tolerance from 0 (strictest) to 4 (least strict); BFL caps some harm classes below this value. Keep the default unless authorized and policy-compliant. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Credit Balance

**Slug:** `BFL_GET_CREDITS`

Return the connected BFL project's current credit balance so funds can be checked before a paid generation or editing request.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Fine-Tune

**Slug:** `BFL_GET_FINETUNE`

Return details for one BFL fine-tune by ID; an absent or inaccessible fine-tune is reported as not found without distinguishing access denial.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `finetune_id` | string | Yes | Fine-tune name or ID returned by List Fine-Tunes. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Generation Result

**Slug:** `BFL_GET_GENERATION_RESULT`

Fetch one status update for an asynchronous BFL task using its exact returned polling URL or task ID. Returns pending, moderation, error, not-found, and ready states without looping, downloading media, or incurring a new generation charge.

**Instant:** Supported on the latest version.

**Instant pricing:** $0 per request

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `task_id` | string | No | A polling target is required. Set task_id only when polling_url is omitted. This ID is polled on the configured BFL API origin; use it only when the exact polling_url is unavailable. |
| `polling_url` | string | No | A polling target is required. Set polling_url only when task_id is omitted. Use the exact polling_url returned by a BFL submission; it is preferred because regional tasks may not resolve on the global host. Only an HTTPS BFL API polling URL with the fixed /v1/get_result path is accepted. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Fine-Tunes

**Slug:** `BFL_LIST_FINETUNES`

Return all fine-tunes accessible to the connected BFL project in one unpaginated response.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Outpaint Image

**Slug:** `BFL_OUTPAINT_IMAGE`

Submit a paid asynchronous expansion of an authorized image onto a larger canvas of at most 4,194,304 pixels. Fast mode requires a base64 source; high mode also accepts HTTP(S) URLs. Returns the task ID, exact polling URL, and quoted cost without waiting for or downloading the result.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("high" | "fast") | No | Quality and speed trade-off: high favors fidelity and accepts base64 or HTTP(S) input images; fast reduces latency for simpler backgrounds and textures but requires a base64 input image. |
| `user` | string | No | Optional opaque end-user identifier for provider-side attribution; do not send personal data. |
| `width` | integer | Yes | Target canvas width in pixels. Width multiplied by height must not exceed 4,194,304 pixels. |
| `height` | integer | Yes | Target canvas height in pixels. Width multiplied by height must not exceed 4,194,304 pixels. |
| `prompt` | string | No | Experimental text guidance for the expanded region; the source image remains the primary signal. |
| `auto_crop` | boolean | No | Crop source pixels outside the canvas instead of failing. |
| `input_image` | string | Yes | Authorized source image to expand. Use base64 for either mode; HTTP(S) URLs are supported only in high mode. Use only media you own or are authorized to transform. |
| `output_format` | string ("jpeg" | "png" | "webp") | No | Generated image format. |
| `safety_tolerance` | integer | No | Moderation tolerance from 0 (strictest) to 5 (least strict). Keep the default unless authorized and policy-compliant. |
| `reference_offset_x` | integer | No | Left offset of the source on the target canvas; negative values are allowed. Omit to center horizontally. |
| `reference_offset_y` | integer | No | Top offset of the source on the target canvas; negative values are allowed. Omit to center vertically. |
| `disable_prompt_upsampling` | boolean | No | Skip image-aware prompt expansion for lower latency, potentially reducing quality. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upscale Video

**Slug:** `BFL_UPSCALE_VIDEO`

Submit a paid asynchronous upscale for the first 20 seconds of an authorized video, with an optional content prompt and 1.5x-3x scale target. Returns the task ID, exact polling URL, and quoted cost without waiting. BFL charges video upscaling per output megapixel-second.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user` | string | No | Optional opaque end-user identifier; do not send personal data. |
| `prompt` | string | No | Optional content description that steers enhanced detail; leave empty for neutral upscaling. |
| `creativity` | integer ("0" | "1") | No | 0 preserves the source closely; 1 permits creative detail enhancement. |
| `input_video` | string | Yes | Authorized base64 MP4 up to 50 MB or HTTP(S) video URL, at most 2560x1440 per frame. Only the first 20 seconds are upscaled. Use only media you own or are authorized to process. |
| `upscale_factor` | number | No | Requested scale factor from 1.5 to 3. Output preserves the source aspect ratio and is capped at 13.75 megapixels per frame. |
| `safety_tolerance` | integer | No | Moderation tolerance from 0 (strictest) to 4, subject to stricter provider harm-class caps. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Virtual Try-On

**Slug:** `BFL_VIRTUAL_TRY_ON`

Submit a paid asynchronous virtual try-on using authorized person and garment images. Returns the task ID, exact polling URL, and quoted cost without waiting.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `seed` | integer | No | Optional deterministic seed. |
| `user` | string | No | Optional opaque end-user identifier for provider-side attribution; do not send personal data. |
| `prompt` | string | Yes | Try-on instruction. For a direct garment transfer, use 'TRY-ON: The person of image 1 wearing the garments of image 2.'; add only non-deceptive styling context. |
| `person_image` | string | Yes | Authorized image of the person, as an HTTP(S) URL or base64. Obtain consent from the depicted person and do not use for deceptive impersonation or sensitive decisions. |
| `garment_image` | string | Yes | Authorized garment image as an HTTP(S) URL or base64. |
| `output_format` | string ("jpeg" | "png" | "webp") | No | Generated image format. |
| `safety_tolerance` | integer | No | Moderation tolerance from 0 (strictest) to 5. Keep the default unless authorized and policy-compliant. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
