> ## Documentation Index
> Fetch the complete documentation index at: https://docs.photalabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Edit

> Edit images based on a text prompt.

Provide input images (base64 or public URL) and a prompt describing the
desired edit. Returns base64 images or signed download URLs.



## OpenAPI

````yaml https://api.photalabs.com/v1/phota/openapi.json post /v1/phota/edit
openapi: 3.1.0
info:
  title: Phota API
  description: Create and manage profiles for photo editing and enhancement.
  version: v0.5.0
servers:
  - url: https://api.photalabs.com
security: []
tags:
  - name: Studio
    description: Image editing, generation, and enhancement.
  - name: Profiles
    description: 'Profile lifecycle: create, query, delete.'
paths:
  /v1/phota/edit:
    post:
      tags:
        - Studio
      summary: Edit
      description: |-
        Edit images based on a text prompt.

        Provide input images (base64 or public URL) and a prompt describing the
        desired edit. Returns base64 images or signed download URLs.
      operationId: edit_v1_phota_edit_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EditResponse'
        '400':
          description: Invalid request or content moderation violation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhotaError400Response'
        '401':
          description: Missing or invalid API key in the X-API-Key header.
        '402':
          description: Insufficient prepaid credit balance.
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhotaError404Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          description: Internal error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhotaError500Response'
        '503':
          description: Service temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhotaError503Response'
      security:
        - APIKeyHeader: []
components:
  schemas:
    EditRequest:
      properties:
        prompt:
          type: string
          title: Prompt
          description: Text prompt describing the desired edit.
          default: ''
        images:
          items:
            type: string
          type: array
          maxItems: 10
          title: Images
          description: >-
            Input images as raw base64 strings or publicly accessible URLs. Both
            formats are auto-detected. Supported formats: JPEG, PNG, WebP, and
            HEIC/HEIF. Images larger than 4K (4096px) are automatically resized;
            for best results, provide images at 4K or below.
        profile_ids:
          items:
            type: string
          type: array
          title: Profile Ids
          description: >-
            Subset of your account's profiles relevant to this request. Your
            account holds all profiles, but only pass the ones belonging to the
            end-user whose photo is being edited. These profiles serve as
            candidates for identity preservation. The fewer profiles you pass,
            the easier it is for our system to determine which profiles are
            relevant.
        num_output_images:
          type: integer
          maximum: 4
          minimum: 1
          title: Num Output Images
          description: Number of output images to generate (1-4).
          default: 1
        aspect_ratio:
          type: string
          enum:
            - auto
            - '1:1'
            - '3:4'
            - '4:3'
            - '9:16'
            - '16:9'
          title: Aspect Ratio
          description: Output aspect ratio (auto, 1:1, 3:4, 4:3, 9:16, 16:9).
          default: auto
        resolution:
          type: string
          enum:
            - 1K
            - 2K
            - 4K
          title: Resolution
          description: >-
            Output resolution (1K, 2K, 4K). Per-model support varies; see
            /models.
          default: 1K
        quality:
          anyOf:
            - type: string
              enum:
                - auto
                - low
                - medium
                - high
            - type: 'null'
          title: Quality
          description: >-
            Quality tier (auto, low, medium, high). Only supported by
            gpt-image-2; passing this field for other models returns 400. Omit
            (or pass 'auto') to let the provider pick — for gpt-image-2 this
            resolves to OpenAI's auto tier. Lower tiers reduce output tokens and
            therefore settled cost.
        base_model:
          type: string
          enum:
            - flux-2
            - gpt-image-2
            - nb2
            - qwen-image-2
            - reve
          title: Base Model
          description: >-
            Base model identifier. Omit to use the default base model. Unknown
            ids are rejected with 400; base models that do not support this
            endpoint's capability are also rejected with 400.
          default: nb2
        output_format:
          type: string
          enum:
            - png
            - jpg
          title: Output Format
          description: >-
            Output image format (png, jpg). Default: png (will change to jpg on
            2026-05-08).
          default: png
        response_mode:
          type: string
          enum:
            - bytes
            - urls
          title: Response Mode
          description: >-
            Response delivery mode. 'bytes': return base64-encoded image data
            (default). 'urls': return signed download URLs (24-hour expiry)
            instead of image bytes.
          default: bytes
      type: object
      title: EditRequest
      description: |-
        Request body for the edit endpoint.

        Input images can be provided as either raw base64-encoded bytes or
        publicly accessible URLs (e.g. ``https://example.com/photo.jpg``).
        Both formats are accepted and detected automatically.
      examples:
        - images:
            - iVBORw0KGgo...
            - https://example.com/photo.jpg
          num_output_images: 2
          profile_ids:
            - abc123
            - def456
          prompt: Turn [[def456]] into a vampire
    EditResponse:
      properties:
        images:
          items:
            type: string
          type: array
          title: Images
          description: >-
            Output image(s) as raw base64-encoded strings. Format matches the
            requested output_format. Populated when response_mode='bytes', empty
            otherwise.
        download_urls:
          items:
            type: string
          type: array
          title: Download Urls
          description: >-
            Signed download URLs for each output image (24-hour expiry).
            Populated when response_mode='urls', empty otherwise.
        known_subjects:
          $ref: '#/components/schemas/KnownGeneratedSubjectCounts'
          description: >-
            Dictionary mapping a known subject's `profile_id` to the number of
            times they were generated. If multiple variations are generated,
            this will be the aggregated count across all variations.
      type: object
      required:
        - known_subjects
      title: EditResponse
      description: Response returned by the edit, generate, and enhance endpoints.
    PhotaError400Response:
      properties:
        detail:
          type: string
          title: Detail
          description: Human-readable error message.
        code:
          type: string
          enum:
            - CONTENT_MODERATION
            - INVALID_REQUEST
          title: Code
          description: Machine-readable error code.
        request_id:
          type: string
          title: Request Id
          description: Unique request identifier for support.
      type: object
      required:
        - detail
        - code
        - request_id
      title: PhotaError400Response
      description: Error response for 400 Bad Request.
    PhotaError404Response:
      properties:
        detail:
          type: string
          title: Detail
          description: Human-readable error message.
        code:
          type: string
          enum:
            - NOT_FOUND
            - PROFILE_NOT_FOUND
            - PROFILE_NOT_READY
          title: Code
          description: Machine-readable error code.
        request_id:
          type: string
          title: Request Id
          description: Unique request identifier for support.
      type: object
      required:
        - detail
        - code
        - request_id
      title: PhotaError404Response
      description: Error response for 404 Not Found.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    PhotaError500Response:
      properties:
        detail:
          type: string
          title: Detail
          description: Human-readable error message.
        code:
          type: string
          const: INTERNAL_ERROR
          title: Code
          description: Machine-readable error code.
        request_id:
          type: string
          title: Request Id
          description: Unique request identifier for support.
      type: object
      required:
        - detail
        - code
        - request_id
      title: PhotaError500Response
      description: Error response for 500 Internal Server Error.
    PhotaError503Response:
      properties:
        detail:
          type: string
          title: Detail
          description: Human-readable error message.
        code:
          type: string
          const: SERVICE_UNAVAILABLE
          title: Code
          description: Machine-readable error code.
        request_id:
          type: string
          title: Request Id
          description: Unique request identifier for support.
      type: object
      required:
        - detail
        - code
        - request_id
      title: PhotaError503Response
      description: Error response for 503 Service Unavailable.
    KnownGeneratedSubjectCounts:
      properties:
        counts:
          additionalProperties:
            type: integer
          type: object
          title: Counts
          description: >-
            Mapping of profile ID to the number of times that subject was
            generated.
      type: object
      title: KnownGeneratedSubjectCounts
      description: Counts of known subjects generated, keyed by profile ID.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key

````