# PixelForge API

> Provider: **Pixazo**
> Source: https://www.pixazo.ai/models/pixelforge

Image generation and relighting capabilities.

## PixelForge v1

### Text to Image

## Generate Image - Pixelforge Image API

## Request Code

HTTP Python JavaScript cURL

```
POST https://gateway.pixazo.ai/pixelforge-image/v1/qwen_image_gen/serve_image
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: your-subscription-key-here

{
  "prompt": "A futuristic city skyline at sunset with flying cars and neon signs",
  "image_urls": [
    "https://example.com/reference-image.jpg"
  ]
}
```

```
import requests

url = "https://gateway.pixazo.ai/pixelforge-image/v1/qwen_image_gen/serve_image"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "your-subscription-key-here"
}
data = {
    "prompt": "A futuristic city skyline at sunset with flying cars and neon signs",
    "image_urls": [
        "https://example.com/reference-image.jpg"
    ]
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
```

```
const url = 'https://gateway.pixazo.ai/pixelforge-image/v1/qwen_image_gen/serve_image';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'your-subscription-key-here'
};
const body = {
  prompt: 'A futuristic city skyline at sunset with flying cars and neon signs',
  image_urls: [
    'https://example.com/reference-image.jpg'
  ]
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(body)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
```

```
curl -X POST https://gateway.pixazo.ai/pixelforge-image/v1/qwen_image_gen/serve_image \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: your-subscription-key-here" \
  -d '{
    "prompt": "A futuristic city skyline at sunset with flying cars and neon signs",
    "image_urls": [
      "https://example.com/reference-image.jpg"
    ]
  }'
```

## Output

```
{
  "url": "https://cdn.pixazo.ai/images/abc123.jpg"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=pixelforge-image&operation=generate-image)

## Request Parameters - Generate Image

Parameter

Required

Type

Description

prompt

Yes

string

The text prompt describing the image you want to generate. You can provide detailed and creative descriptions to guide the image generation process.

image\_urls

Yes

array

Minimum should be one image, maximum three

## Example Request

```
{
  "prompt": "A futuristic city skyline at sunset with flying cars and neon signs",
  "image_urls": [
    "https://example.com/reference-image.jpg"
  ]
}
```

## Response

```
{
  "url": "https://cdn.pixazo.ai/images/abc123.jpg"
}
```

## Request Headers

Header

Value

Content-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

Your API subscription key for authentication

## Response Handling

Common status codes for Generate Image.

Code

Meaning

200

Success

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

429

Too Many Requests

500

Internal Server Error

### Image to Image (Image Editing — Relighting)

## Base URL

```
https://gateway.pixazo.ai/pixelforge-relighting-api/v1
```

## Authentication

All requests require an API key passed via header.

Header

Type

Required

Description

Ocp-Apim-Subscription-Key

string

Yes

Your API subscription key

## Image Edit Request - Pixelforge Relighting API

## Request Code

HTTP Python JavaScript cURL

```
POST https://gateway.pixazo.ai/pixelforge-relighting-api/v1/relighting/generate
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "Professional studio lighting with soft shadows",
  "image_urls": [
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"
  ]
}
```

```
import requests

url = "https://gateway.pixazo.ai/pixelforge-relighting-api/v1/relighting/generate"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "Professional studio lighting with soft shadows",
    "image_urls": [
        "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"
    ]
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
```

```
async function generateRelitImage() {
  const url = 'https://gateway.pixazo.ai/pixelforge-relighting-api/v1/relighting/generate';
  const headers = {
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache',
    'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
  };
  const data = {
    prompt: 'Professional studio lighting with soft shadows',
    image_urls: [
      'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png'
    ]
  };

  const response = await fetch(url, {
    method: 'POST',
    headers: headers,
    body: JSON.stringify(data)
  });
  const result = await response.json();
  console.log(result);
}

generateRelitImage();
```

```
curl -X POST "https://gateway.pixazo.ai/pixelforge-relighting-api/v1/relighting/generate" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "Professional studio lighting with soft shadows",
    "image_urls": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"
    ]
  }'
```

## Output

```
{
  "request_id": "pixelforge-relighting-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/pixelforge-relighting-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=pixelforge-relighting-api&operation=image-edit-request)

## Webhook (Optional)

Add the `X-Webhook-URL` header to your generate request to receive a POST callback instead of polling.

```
X-Webhook-URL: https://your-server.com/webhook/callback
```

## Request Parameters - Image Edit Request

Field

Type

Required

Default

Description

prompt

string

Yes

—

Text description of desired lighting effect. Max 800 characters.

image\_urls

array

Yes

—

Array of reference image URLs (1-10 images). Must be publicly accessible. Supports JPEG, PNG, WEBP.

image\_size

string/object

No

"square\_hd"

Output size. Options: "square\_hd", "square", "portrait\_4\_3", "portrait\_16\_9", "landscape\_4\_3", "landscape\_16\_9" or custom {"width": 1280, "height": 720}

num\_inference\_steps

integer

No

50

Number of inference steps. Range: 1-150. Higher = better quality but slower.

guidance\_scale

number

No

4

How closely to follow the prompt. Range: 1-20.

num\_images

integer

No

1

Number of images to generate. Range: 1-4.

enable\_safety\_checker

boolean

No

true

Enable content safety filtering.

output\_format

string

No

"png"

Output format: "jpeg" or "png".

negative\_prompt

string

No

" "

Elements to exclude from generation.

acceleration

string

No

"regular"

Speed optimization: "none" or "regular".

loras

array

No

\[\]

Array of LoRA weights to apply (max 3). Each object has "path" (string, required) and "scale" (number, 0.0-2.0, default 1.0).

webhook

string

No

—

Webhook URL for async notifications.

webhook\_events\_filter

array

No

\["\*"\]

Event types: \["start"\], \["complete"\], \["\*"\].

## Minimum Request

```
{
  "prompt": "Professional lighting",
  "image_urls": [
    "https://example.com/photo.jpg"
  ]
}
```

## Full Request (all options)

```
{
  "prompt": "Professional studio lighting with soft shadows",
  "image_urls": [
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"
  ],
  "image_size": "square_hd",
  "num_inference_steps": 50,
  "guidance_scale": 4,
  "num_images": 1,
  "enable_safety_checker": true,
  "output_format": "png",
  "negative_prompt": " ",
  "acceleration": "regular",
  "loras": [
    {
      "path": "https://.../files/lighting-lora.safetensors",
      "scale": 1.0
    }
  ],
  "webhook": "https://your-domain.com/webhook",
  "webhook_events_filter": [
    "*"
  ]
}
```

## Response

```
{
  "request_id": "pixelforge-relighting-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/pixelforge-relighting-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

## Request Headers

Header

Value

Content-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

Your API subscription key

## Response Handling

Common status codes for Image Edit Request.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

429

Too Many Requests

500

Internal Server Error

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal Server Error

## Error Responses

Queue system errors and model validation errors.

### Queue System Errors

```
// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
```

```
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'pixelforge-relighting-api' not found or is disabled"
}
```

### Error via Status/Webhook

```
{
  "request_id": "pixelforge-relighting-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "pixelforge-relighting-api",
  "error": "Description of the error",
  "output": null
}
```

## Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

### Endpoint

```
GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY
```

## cURL Example

```
curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/pixelforge-relighting-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
```

## Response (Completed)

```
{
  "request_id": "pixelforge-relighting-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "pixelforge-relighting-api",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/pixelforge-relighting-api_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}
```

## Response Fields

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System error — not charged

## Status Flow

```
QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR
```

## Typical Workflow

1.  **Send a generate request** to the API endpoint
2.  **Save the `request_id`** from the response
3.  **Poll** every 5-10 seconds: `GET /v2/requests/status/{request_id}`
4.  **When `status` is `"COMPLETED"`**, download from `output.media_url`

**Tip:** Use `X-Webhook-URL` header to get a callback instead of polling.
