@base = https://api.banatie.app
@apiKey = bnt_2dae149c03c2fd45df54835337c7e774a0dcb2123ef4904e98e3201b0e081720

###############################################################################
# GENERATIONS
###############################################################################

### Create Generation
# Generate AI image with optional reference images and flow support
POST {{base}}/api/v1/generations
Content-Type: application/json
X-API-Key: {{apiKey}}

{
  "prompt": "мужик с животиком на надувном матрасе посреди океана со стаканом смузи, в смешной соломенной шляпе и в темных очках со звездочками. в далеке виднеется шикарный тропический остров, а за ним еще дальше приближается гроза с молниями",
  "aspectRatio": "16:9",
  "alias": "@eagle-hero",
  "flowAlias": "@hero",
  "autoEnhance": true,
  "meta": {
    "tags": ["demo", "nature"]
  }
}

###
"flowId": "flow-uuid-here",
generationID: "e14e0cc1-b3bc-4841-a6dc-f42c842d8d86"

###

### List Generations
# Browse generation history with filters and pagination
GET {{base}}/api/v1/generations?limit=20&offset=0&status=success
X-API-Key: {{apiKey}}


### Get Generation by ID
# View complete generation details including output and reference images
GET {{base}}/api/v1/generations/e14e0cc1-b3bc-4841-a6dc-f42c842d8d86
X-API-Key: {{apiKey}}


### Retry Generation
# Recreate a failed generation with optional parameter overrides
POST {{base}}/api/v1/generations/e14e0cc1-b3bc-4841-a6dc-f42c842d8d86/retry
Content-Type: application/json
X-API-Key: {{apiKey}}




### Delete Generation
# Remove generation record and associated output image (soft delete)
DELETE {{base}}/api/v1/generations/generation-uuid-here
X-API-Key: {{apiKey}}


###############################################################################
# FLOWS
###############################################################################

### Create Flow
# Initialize a new generation chain/workflow
POST {{base}}/api/v1/flows
Content-Type: application/json
X-API-Key: {{apiKey}}

{
  "meta": {
    "name": "Product Images Campaign"
  }
}


### List Flows
# Browse all flows with computed generation and image counts
GET {{base}}/api/v1/flows?limit=20&offset=0
X-API-Key: {{apiKey}}


### Get Flow by ID
# View flow metadata, aliases, and computed counts
GET {{base}}/api/v1/flows/flow-uuid-here
X-API-Key: {{apiKey}}


### List Flow Generations
# View all generations associated with this flow
GET {{base}}/api/v1/flows/flow-uuid-here/generations?limit=20
X-API-Key: {{apiKey}}


### List Flow Images
# View all images (generated and uploaded) in this flow
GET {{base}}/api/v1/flows/flow-uuid-here/images?limit=20
X-API-Key: {{apiKey}}


### Update Flow Aliases
# Add or update flow-scoped aliases for image referencing
PUT {{base}}/api/v1/flows/flow-uuid-here/aliases
Content-Type: application/json
X-API-Key: {{apiKey}}

{
  "aliases": {
    "@hero": "image-uuid-here",
    "@background": "another-image-uuid"
  }
}


### Delete Flow Alias
# Remove a single alias from flow's alias map
DELETE {{base}}/api/v1/flows/flow-uuid-here/aliases/@hero
X-API-Key: {{apiKey}}


### Delete Flow
# Remove flow (hard delete, generations and images remain)
DELETE {{base}}/api/v1/flows/flow-uuid-here
X-API-Key: {{apiKey}}


###############################################################################
# IMAGES
###############################################################################

### Upload Image
# Upload image with automatic database record creation and storage
POST {{base}}/api/v1/images/upload
X-API-Key: {{apiKey}}
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="image.png"
Content-Type: image/png

< ./path/to/image.png
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="alias"

@product-hero
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="flowId"

flow-uuid-here
------WebKitFormBoundary7MA4YWxkTrZu0gW--


### List Images
# Browse image library with optional filters
GET {{base}}/api/v1/images?limit=20&offset=0&source=generated
X-API-Key: {{apiKey}}


### Resolve Alias
# Lookup image by alias with technical → flow → project precedence
GET {{base}}/api/v1/images/resolve/@last?flowId=flow-uuid-here
X-API-Key: {{apiKey}}


### Get Image by ID
# View complete image metadata and details
GET {{base}}/api/v1/images/image-uuid-here
X-API-Key: {{apiKey}}


### Update Image Metadata
# Modify image metadata fields
PUT {{base}}/api/v1/images/image-uuid-here
Content-Type: application/json
X-API-Key: {{apiKey}}

{
  "alias": "@new-alias",
  "focalPoint": {
    "x": 0.5,
    "y": 0.3
  },
  "meta": {
    "description": "Updated description"
  }
}


### Assign Image Alias
# Set project-level alias for image referencing
PUT {{base}}/api/v1/images/image-uuid-here/alias
Content-Type: application/json
X-API-Key: {{apiKey}}

{
  "alias": "@product-hero"
}


### Delete Image
# Mark image as deleted without removing from storage (soft delete)
DELETE {{base}}/api/v1/images/image-uuid-here
X-API-Key: {{apiKey}}


###############################################################################
# LIVE GENERATION
###############################################################################

### Generate with Prompt Caching
# Generate images with intelligent caching based on prompt hash
# Returns raw image bytes (not JSON)
GET {{base}}/api/v1/live?prompt=грузовик едет по горной дороге&aspectRatio=16:9
X-API-Key: {{apiKey}}
