{
  "opencollection": "1.0.0",
  "info": {
    "name": "Exactly Public Images v1 Models v1 API",
    "version": "1.0.0"
  },
  "items": [
    {
      "info": {
        "name": "Models v1",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "List user's models",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/public/v1/models/",
            "params": [
              {
                "name": "limit",
                "value": "",
                "type": "query",
                "description": "Limit the number of results returned"
              },
              {
                "name": "offset",
                "value": "",
                "type": "query",
                "description": "Offset the results by this number"
              },
              {
                "name": "active",
                "value": "",
                "type": "query",
                "description": "Filter by active status (trained models)"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "List all models owned by the authenticated user.\n\nThis endpoint returns a paginated list of models owned by the requesting user.\n\n**Usage:**\n1. Request a list of models with optional filtering by active status\n2. Use pagination parameters to control the number of results\n\n**Query Parameters:**\n- `active`: Optional boolean to filter by active (trained) models\n- `limit`: Number of results per page (default: 100, max: 5000)\n- `offset`: Number of results to skip (default: 0)\n\n**Requirements:**\n- Val"
        },
        {
          "info": {
            "name": "Create a new model",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/public/v1/models/",
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Create a new model for custom style.\n\nThe model starts in draft state and can be trained with training images.\n\n**Usage:**\n1. Create a model with a descriptive name\n2. Optionally provide custom JSON data (max 64KB) for your application's use\n3. Add training images using the `POST .../{uid}/train_images/` endpoint\n4. Train the model using the `POST .../{uid}/train/` endpoint\n\n**Requirements:**\n- Valid API token in Authorization header\n- Model name must be 1-255 characters\n- Custom data (if provid"
        },
        {
          "info": {
            "name": "Get a model by its unique identifier",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/public/v1/models/:uid/",
            "params": [
              {
                "name": "uid",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Retrieve a model by its unique identifier.\n\nThis endpoint returns the model's details, including its name, creation date, and status.\n\n**Usage:**\n1. Retrieve a model by its unique identifier\n\n**Requirements:**\n- Valid API token in Authorization header\n- Model must be owned by, shared with, or publicly accessible to the requesting user\n\n**Returns:**\n- 200: Model details\n- 401: Invalid or missing API token\n- 404: Model not found or not accessible"
        },
        {
          "info": {
            "name": "Delete a model by its unique identifier",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "{{baseUrl}}/public/v1/models/:uid/",
            "params": [
              {
                "name": "uid",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Delete a model by its unique identifier.\n\nThis endpoint marks the model as deleted.\n\n**Usage:**\n1. Delete a model by its unique identifier\n\n**Requirements:**\n- Valid API token in Authorization header\n- Model must exist and be owned by the requesting user\n\n**Returns:**\n- 200: Model deleted successfully\n- 401: Invalid or missing API token\n- 404: Model not found"
        },
        {
          "info": {
            "name": "Put a model into draft state",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/public/v1/models/:uid/draft/",
            "params": [
              {
                "name": "uid",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Put a model into draft state.\n\nThis endpoint puts a model into draft state, allowing it to be retrained.\n\nNote: The model can still be used for generating images until it starts training.\n\n**Usage:**\n1. Put a model into draft state\n2. Add new training images to the model with the `POST .../{uid}/train_images/` endpoint\n3. Delete unnecessary training images with the `DELETE.../{uid}/train_images/{image_uid}/` endpoint\n4. Train the model using the `POST .../{uid}/train/` endpoint\n\n**Requirements:*"
        },
        {
          "info": {
            "name": "List training images for a model",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/public/v1/models/:uid/train_images/",
            "params": [
              {
                "name": "uid",
                "value": "",
                "type": "path"
              },
              {
                "name": "limit",
                "value": "",
                "type": "query",
                "description": "Limit the number of results returned"
              },
              {
                "name": "offset",
                "value": "",
                "type": "query",
                "description": "Offset the results by this number"
              },
              {
                "name": "include_filtered",
                "value": "",
                "type": "query",
                "description": "Include filtered images in the response"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "List all training images for a model.\n\nThis endpoint returns a paginated list of training images for the specified model.\n\n**Usage:**\n1. Request a list of training images for a model\n2. Use pagination parameters to control the number of results\n3. Optionally include filtered images that triggered hard filters\n\n**Query Parameters:**\n- `limit`: Number of results per page (default: 100, max: 5000)\n- `offset`: Number of results to skip (default: 0)\n- `include_filtered`: Include filtered images in re"
        },
        {
          "info": {
            "name": "Add a training image to a model",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/public/v1/models/:uid/train_images/",
            "params": [
              {
                "name": "uid",
                "value": "",
                "type": "path"
              }
            ],
            "body": {
              "type": "multipart-form",
              "data": [
                {
                  "name": "image",
                  "type": "text",
                  "value": ""
                }
              ]
            },
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Add a training image to a model.\n\nThis endpoint adds a new training image to the model's draft.\nThe image will be processed and added to the model's training dataset.\n\n**Usage:**\n1. Add a training image to a model\n\n**Requirements:**\n- Valid API token in Authorization header\n- Model must exist and be owned by the requesting user\n- Image must be a valid image file (max 50MB)\n\n**Returns:**\n- 201: Training image added successfully\n- 400: Invalid image file\n- 401: Invalid or missing API token\n- 403: "
        },
        {
          "info": {
            "name": "Delete a training image from a model",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "{{baseUrl}}/public/v1/models/:uid/train_images/:image_uid/",
            "params": [
              {
                "name": "uid",
                "value": "",
                "type": "path"
              },
              {
                "name": "image_uid",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Delete a training image from a model.\n\nThis endpoint removes a training image from the model's draft.\n\n**Usage:**\n1. Delete a training image from a model\n\n**Requirements:**\n- Valid API token in Authorization header\n- Model must exist and be owned by the requesting user\n- Image must exist and be part of the model's training dataset\n\n**Returns:**\n- 200: Training image deleted successfully\n- 401: Invalid or missing API token\n- 404: Model or image not found"
        },
        {
          "info": {
            "name": "Train a model",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/public/v1/models/:uid/train/",
            "params": [
              {
                "name": "uid",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Train a model using its training dataset.\n\nThis endpoint starts the training process for the model.\nThe model will be trained using its training dataset.\n\n**Usage:**\n1. Train a model\n\n**Requirements:**\n- Valid API token in Authorization header\n- Model must exist and be owned by the requesting user\n- Model must have a training dataset\n\n**Returns:**\n- 200: Model training started successfully\n- 400: Invalid model state\n- 401: Invalid or missing API token\n- 403: Model is not in the draft state\n- 404"
        },
        {
          "info": {
            "name": "Cancel Model Training",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/public/v1/models/:uid/cancel/",
            "params": [
              {
                "name": "uid",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Cancel a model training.\n\nThis endpoint cancels the training process for the model.\n\n**Usage:**\n1. Run a model training\n2. Cancel a model training\n\n**Requirements:**\n- Valid API token in Authorization header\n- Model must exist and be owned by the requesting user\n- Model must be in the training state\n\n**Returns:**\n- 200: Model training canceled successfully\n- 401: Invalid or missing API token\n- 403: Model is not in the training state\n- 404: Model not found"
        },
        {
          "info": {
            "name": "Get Model Training Progress",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/public/v1/models/:uid/train/progress/",
            "params": [
              {
                "name": "uid",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Get the training progress for a model.\n\nThis endpoint returns the current training progress for the specified model.\nThe progress is returned as a percentage value from 0 to 100.\n\n**Behavior:**\n- If the model is active (training completed), returns 100% progress\n- If the model is still training, returns current progress (0-99%)\n- If no training status is found, returns 0% progress\n\n**Usage:**\n1. Check training progress during model training\n2. Monitor training completion status\n\n**Requirements:*"
        },
        {
          "info": {
            "name": "Enhance a prompt for given model",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/public/v1/models/:uid/enhance_prompt/",
            "params": [
              {
                "name": "uid",
                "value": "",
                "type": "path"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Enhance a prompt for a given model.\n\n**Usage:**\n1. Enhance a prompt for a specific model\n\n**Requirements:**\n- Valid API token in Authorization header\n- Model must be owned by, shared with, or publicly accessible to the requesting user\n\n**Returns:**\n- 201: Enhanced prompt\n- 401: Invalid or missing API token\n- 404: Model not found or not accessible\n- 500: Internal server error"
        }
      ]
    }
  ],
  "bundled": true
}