---
title: "Change Camera - Transform image perspective"
method: POST
path: "/v1/ai/image-change-camera"
tags: ["image-change-camera"]
---

# Change Camera - Transform image perspective

`POST /v1/ai/image-change-camera`

## Request

- Base URL: `https://api.magnific.com`
- URL: `https://api.magnific.com/v1/ai/image-change-camera`
- Auth: API key in header `x-magnific-api-key`

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.

## Request body

- ChangeCameraRequest
  - `image` string, required: Input image to transform. Provide as a publicly accessible HTTPS URL. Supported formats: JPG, PNG, WebP.
  - `horizontal_angle` integer: 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`.
  - `vertical_angle` integer: 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`.
  - `zoom` integer: 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`.
  - `seed` integer: Seed for the random number generator. Using the same seed with identical parameters produces the same output, enabling reproducible results across multiple requests.
  - `output_format` 'png' | 'jpeg': Output image format. - `png`: Lossless compression, best for high-quality results - `jpeg`: Lossy compression, smaller file size suitable for web use
  - `webhook_url` string, uri: 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.

## Response `200`

OK - The task exists and the status is returned

- InlineObject4
  - `data` TaskDetail1, required
    - `task_id` string, uuid, required: Task identifier
    - `status` 'CREATED' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED', required: Task status
    - `generated` string[], required

## Other responses

- `400`: Bad Request - The server could not understand the request due to invalid syntax.
- `401`: Unauthorized - The client must authenticate itself to get the requested response.
- `500`: Internal Server Error - The server has encountered a situation it doesn't know how to handle.
- `503`: Service Unavailable

---

[API](https://skmtc.dev/magnific/apis/magnific-api.md) · [All operations](https://skmtc.dev/magnific/apis/magnific-api/llms.txt) · [OpenAPI document](https://skmtc.dev/magnific/apis/magnific-api/revisions/60711fb082c7?raw)
