Freepik Image Change Camera API

The image-change-camera API from Freepik — 2 operation(s) for image-change-camera.

Operations 3

GET /v1/ai/image-change-camera Change Camera - List tasks #
POST /v1/ai/image-change-camera Change Camera - Transform image perspective #
GET /v1/ai/image-change-camera/{task-id} Change Camera - Get task status #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/freepik:freepik-image-change-camera-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

freepik-image-change-camera-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: The Magnific API is your gateway to a vast collection of high-quality digital resources for your applications and projects. As a leading platform, it offers a wide range of graphics, including vectors, photos, illustrations, icons, PSD templates, and more, all curated by talented designers from around the world.
  title: Magnific Image Change Camera API
  version: 1.0.0
servers:
- description: B2B API Production V1
  url: https://api.magnific.com
security:
- magnificApiKey: []
tags:
- name: image-change-camera
paths:
  /v1/ai/image-change-camera:
    get:
      description: Retrieve the status of all Change Camera tasks for the authenticated user. Returns a list of tasks with their current status, creation time, and result URLs for completed tasks.
      operationId: get_all_change_camera_tasks
      responses:
        '200':
          $ref: '#/components/responses/task-list-200-default-response'
        '400':
          $ref: '#/components/responses/400-bad-request'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '500':
          $ref: '#/components/responses/500-internal-server-error'
        '503':
          $ref: '#/components/responses/503-service-unavailable'
      summary: Change Camera - List tasks
      tags:
      - image-change-camera
    post:
      description: 'Transform an image by changing the camera angle using AI. Adjust horizontal rotation (0-360 degrees), vertical tilt (-30 to 90 degrees), and zoom level (0-10) to generate a new image as if the camera had been repositioned around the subject.


        This is an asynchronous endpoint. After submitting a request, use the task ID to poll for results or provide a `webhook_url` to receive a notification when processing completes.


        **Camera controls:**

        - **Horizontal angle** (`horizontal_angle`): Rotate the viewpoint 0-360 degrees around the subject. `0` = front view, `90` = right side, `180` = back view, `270` = left side.

        - **Vertical angle** (`vertical_angle`): Tilt the camera from -30 (looking up) to 90 (bird''s eye view). `0` = eye level.

        - **Zoom** (`zoom`): Adjust from `0` (wide shot, full scene) to `10` (close-up).


        **Use cases:** Product photography with multiple angle views, architectural visualization, creative image manipulation, and generating consistent multi-angle views of objects and scenes.'
      operationId: create_change_camera_task
      requestBody:
        content:
          application/json:
            examples:
              required-params:
                $ref: '#/components/examples/request-change-camera-required-params'
              all-params:
                $ref: '#/components/examples/request-change-camera-all-params'
            schema:
              $ref: '#/components/schemas/change-camera-request'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/task-detail-200-default-response'
        '400':
          $ref: '#/components/responses/400-bad-request'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '500':
          $ref: '#/components/responses/500-internal-server-error'
        '503':
          $ref: '#/components/responses/503-service-unavailable'
      summary: Change Camera - Transform image perspective
      tags:
      - image-change-camera
  /v1/ai/image-change-camera/{task-id}:
    get:
      description: Retrieve the status and result of a specific Change Camera task by its task ID. When the task status is `completed`, the response includes the URL of the generated image with the new camera angle.
      operationId: get_change_camera_task
      parameters:
      - description: ID of the task
        in: path
        name: task-id
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/task-detail-200-default-response'
        '400':
          $ref: '#/components/responses/400-bad-request'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '500':
          $ref: '#/components/responses/500-internal-server-error'
        '503':
          $ref: '#/components/responses/503-service-unavailable'
      summary: Change Camera - Get task status
      tags:
      - image-change-camera
components:
  schemas:
    inline_object_4:
      example:
        data:
          generated:
          - https://openapi-generator.tech
          - https://openapi-generator.tech
          task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          status: CREATED
      properties:
        data:
          $ref: '#/components/schemas/task-detail_1'
      required:
      - data
      type: object
    inline_object_1_problem_invalid_params_inner:
      properties:
        name:
          description: Name of the invalid parameter.
          example: page
          type: string
        field:
          description: Field of the invalid parameter. Mirrors `name`.
          example: page
          type: string
        reason:
          example: Parameter 'page' must be greater than 0
          type: string
      required:
      - field
      - name
      - reason
      type: object
    task:
      example:
        task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        status: CREATED
      properties:
        task_id:
          description: Task identifier
          format: uuid
          type: string
        status:
          description: Task status
          enum:
          - CREATED
          - IN_PROGRESS
          - COMPLETED
          - FAILED
          type: string
      required:
      - status
      - task_id
      type: object
    output-format_1:
      default: png
      description: 'Output image format.

        - `png`: Lossless compression, best for high-quality results

        - `jpeg`: Lossy compression, smaller file size suitable for web use

        '
      enum:
      - png
      - jpeg
      type: string
    inline_object_1:
      properties:
        problem:
          $ref: '#/components/schemas/inline_object_1_problem'
      type: object
    inline_object_1_problem:
      properties:
        message:
          example: Validation error
          type: string
        invalid_params:
          items:
            $ref: '#/components/schemas/inline_object_1_problem_invalid_params_inner'
          type: array
      required:
      - invalid_params
      - message
      type: object
    inline_object_2:
      example:
        message: Internal Server Error
      properties:
        message:
          example: Internal Server Error
          type: string
      type: object
    inline_object:
      example:
        message: message
      properties:
        message:
          type: string
      type: object
    change-camera-request:
      properties:
        image:
          description: 'Input image to transform. Provide as a publicly accessible HTTPS URL.

            Supported formats: JPG, PNG, WebP.

            '
          example: https://example.com/input-image.jpg
          type: string
        horizontal_angle:
          default: 0
          description: 'Horizontal rotation angle in degrees. Controls the left-right rotation of the camera around the subject.

            - `0`: Front view (no rotation)

            - `90`: Right side view

            - `180`: Back view

            - `270`: Left side view

            - `360`: Full rotation (equivalent to 0)


            Valid values: `0` to `360`. Default: `0`.

            '
          example: 45
          maximum: 360
          minimum: 0
          type: integer
        vertical_angle:
          default: 0
          description: 'Vertical tilt angle in degrees. Controls the up-down tilt of the camera relative to the subject.

            - `-30`: Looking up at the subject from below

            - `0`: Eye-level view (no tilt)

            - `45`: Moderate downward angle

            - `90`: Bird''s eye view (directly above)


            Valid values: `-30` to `90`. Default: `0`.

            '
          example: 15
          maximum: 90
          minimum: -30
          type: integer
        zoom:
          default: 5
          description: 'Zoom level controlling how close the camera appears to the subject.

            - `0`: Wide shot (far away, full scene visible)

            - `5`: Medium shot (standard framing)

            - `10`: Close-up (very close to the subject)


            Valid values: `0` to `10`. Default: `5`.

            '
          example: 5
          maximum: 10
          minimum: 0
          type: integer
        seed:
          description: 'Seed for the random number generator. Using the same seed with identical parameters produces the same output, enabling reproducible results across multiple requests.

            '
          example: 42
          minimum: 1
          type: integer
        output_format:
          $ref: '#/components/schemas/output-format_1'
        webhook_url:
          description: 'Optional callback URL that will receive asynchronous notifications whenever the task changes status. The payload sent to this URL is the same as the corresponding GET endpoint response, but without the data field.

            '
          example: https://www.example.com/webhook
          format: uri
          type: string
      required:
      - image
      type: object
    inline_object_3:
      example:
        message: Service Unavailable. Please try again later.
      properties:
        message:
          example: Service Unavailable. Please try again later.
          type: string
      type: object
    get_all_style_transfer_tasks_200_response:
      example:
        data:
        - task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          status: CREATED
        - task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          status: CREATED
      properties:
        data:
          items:
            $ref: '#/components/schemas/task'
          type: array
      required:
      - data
      type: object
    task-detail_1:
      allOf:
      - $ref: '#/components/schemas/task'
      - properties:
          generated:
            items:
              description: URL of the generated image
              format: uri
              type: string
            type: array
        required:
        - generated
        type: object
      example:
        generated:
        - https://openapi-generator.tech
        - https://openapi-generator.tech
        task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        status: CREATED
  responses:
    401-unauthorized:
      content:
        application/json:
          examples:
            invalid_api_key:
              summary: API key is not valid
              value:
                message: Invalid API key
            missing_api_key:
              summary: API key is not provided
              value:
                message: Missing API key
          schema:
            $ref: '#/components/schemas/inline_object'
      description: Unauthorized - The client must authenticate itself to get the requested response.
    503-service-unavailable:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/inline_object_3'
      description: Service Unavailable
    task-detail-200-default-response:
      content:
        application/json:
          examples:
            success - created task:
              $ref: '#/components/examples/200-task-created'
            success - in progress task:
              $ref: '#/components/examples/200-task-in-progress'
            success - completed task:
              $ref: '#/components/examples/200-task-completed'
            success - failed task:
              $ref: '#/components/examples/200-task-failed'
          schema:
            $ref: '#/components/schemas/inline_object_4'
      description: OK - The task exists and the status is returned
    400-bad-request:
      content:
        application/json:
          examples:
            invalid_page:
              summary: Parameter 'page' is not valid
              value:
                message: Parameter 'page' must be greater than 0
            invalid_query:
              summary: Parameter 'query' is not valid
              value:
                message: Parameter 'query' must not be empty
            invalid_filter:
              summary: Parameter 'filter' is not valid
              value:
                message: Parameter 'filter' is not valid
            generic_bad_request:
              summary: Bad Request
              value:
                message: Parameter ':attribute' is not valid
          schema:
            $ref: '#/components/schemas/inline_object'
        application/problem+json:
          examples:
            invalid_page:
              summary: Parameter 'page' is not valid
              value:
                message: Validation error
                invalid_params:
                - field: page
                  reason: Parameter 'page' must be greater than 0
                - field: per_page
                  reason: Parameter 'per_page' must be greater than 0
          schema:
            $ref: '#/components/schemas/inline_object_1'
      description: Bad Request - The server could not understand the request due to invalid syntax.
    500-internal-server-error:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/inline_object_2'
      description: Internal Server Error - The server has encountered a situation it doesn't know how to handle.
    task-list-200-default-response:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/get_all_style_transfer_tasks_200_response'
      description: OK - Returns a list of tasks for the current type of Task
  examples:
    200-task-failed:
      summary: Success - Task failed
      value:
        data:
          generated: []
          task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          status: FAILED
    200-task-in-progress:
      summary: Success - Task in progress
      value:
        data:
          generated: []
          task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          status: IN_PROGRESS
    200-task-created:
      summary: Success - Task created
      value:
        data:
          generated: []
          task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          status: CREATED
    request-change-camera-all-params:
      description: Full request with all available parameters including camera angle rotation, tilt, zoom, seed for reproducibility, output format, and webhook notification.
      summary: Change Camera - All parameters
      value:
        image: https://example.com/product-photo.jpg
        horizontal_angle: 45
        vertical_angle: 15
        zoom: 7
        seed: 42
        output_format: png
        webhook_url: https://www.example.com/webhook
    200-task-completed:
      summary: Success - Task completed
      value:
        data:
          generated:
          - https://ai-statics.freepik.com/completed_task_image.jpg
          task_id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          status: COMPLETED
    request-change-camera-required-params:
      description: Minimal request with only the required image parameter. Uses default values for all other settings (horizontal_angle=0, vertical_angle=0, zoom=5, output_format=png).
      summary: Change Camera - Required parameters only
      value:
        image: https://example.com/product-photo.jpg
  securitySchemes:
    magnificApiKey:
      description: 'Your Magnific API key. Required for authentication. [Learn how to obtain an API key](https://docs.magnific.com/quickstart)

        '
      in: header
      name: x-magnific-api-key
      type: apiKey
x-provenance:
  method: harvested
  publisher: Freepik
  source: https://storage.googleapis.com/fc-freepik-pro-rev1-eu-api-specs/magnific-api-v1-openapi.yaml?v=46\
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)