Flux Kontext API

Flux Kontext is an AI image tool by Black Forest Labs, enabling precise editing and generation via natural language commands.

Basic API Configuration

Base URL: https://api.foxaihub.com/api/v2

Headers Parameters:

{
  "api-key": "Your API Key",
}

Notes

The images generated by this API will only be saved for 24 hours, after which they will be deleted by the system. At that time, you will not be able to access the image via the URL.

Flux-Kontext Task

Path: /flux-kontext/pro/generate or /flux-kontext/max/generate

Method: POST

Type: application/json

Model Options:

  • pro: Standard model - $0.025 per generation
  • max: Premium model with enhanced quality - $0.05 per generation (double price)

Parameters:

Parameter Name Type Description Remarks
prompt String Text description of the image processing task Required. The prompt should describe the desired image processing in detail
input_image String Input image for processing Required. Can be either a base64 encoded image (with data URL prefix like data:image/jpeg;base64,{base64_data}) or an HTTP URL to an image. Base64 image size must not exceed 10MiB
aspect_ratio String Output image aspect ratio Optional. Options: "match_input_image", "1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3", "4:5", "5:4", "21:9", "9:21", "2:1", "1:2". Default: "match_input_image"
seed Integer Random seed for reproducible results Optional. Use the same seed to get consistent outputs

Example Request:

POST /flux-kontext/pro/generate HTTP/1.1
Content-Type: application/json
api-key: your_api_key_here

{
    "prompt": "Restore and colorize this image. Remove any scratches or imperfections",
    "input_image": "https://cdn2.foxai.me/flux-kontext-12/Tesla.JPG"
}

Example Request with Base64 Image:

POST /flux-kontext/pro/generate HTTP/1.1
Content-Type: application/json
api-key: your_api_key_here

{
    "prompt": "Restore and colorize this image. Remove any scratches or imperfections",
    "input_image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj..."
}

Example Request with Base64 Image:

POST /flux-kontext/pro/generate HTTP/1.1
Content-Type: application/json
api-key: your_api_key_here

{
    "prompt": "Restore and colorize this image. Remove any scratches or imperfections",
    "input_image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj..."
}

Example Response:

{
  "id": "f3hfma0ppnrm80cq6r8rhawj0w",
  "error": null,
  "created_at": "2025-06-03T13:52:59.061Z",
  "output": "https://cdn2.foxai.me/flux-kontext-11/f3hfma0ppnrm80cq6r8rhawj0w.png"
}

Example Python Code:

import requests
import base64
import json
import os

def create_flux_kontext_task(image_path="Tesla.JPG", prompt="Restore and colorize this image. Remove any scratches or imperfections"):
    """
    Create a flux-kontext task using local image file encoded as base64
    
    Args:
        image_path (str): Path to the image file (default: "Tesla.JPG")
        prompt (str): The prompt for image processing
    
    Returns:
        dict: API response
    """
    base_url = "https://api.foxaihub.com/api/v2"
    api_key = "your api key"
    
    # Check if image file exists
    if not os.path.exists(image_path):
        raise FileNotFoundError(f"Image file not found: {image_path}")
    
    # Read and encode image as base64
    with open(image_path, "rb") as image_file:
        image_data = base64.b64encode(image_file.read()).decode('utf-8')
        # Add data URL prefix for base64 image
        base64_image = f"data:image/jpeg;base64,{image_data}"
    
    # Prepare request
    url = f"{base_url}/flux-kontext/pro/generate"
    headers = {
        "Content-Type": "application/json",
        "api-key": api_key
    }
    
    payload = {
        "prompt": prompt,
        "input_image": base64_image
    }
    
    # Make request
    try:
        response = requests.post(url, headers=headers, json=payload)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"Request failed: {e}")
        if hasattr(e.response, 'text'):
            print(f"Response: {e.response.text}")
        raise

if __name__ == "__main__":
    # Example usage
    try:
        result = create_flux_kontext_task()
        print("Task created successfully:")
        print(json.dumps(result, indent=2))
    except Exception as e:
        print(f"Error: {e}")