---
title: "Turn an image attachment a quarter turn"
method: POST
path: "/api/preview/attachments/{id}/rotate"
tags: ["attachment"]
---

# Turn an image attachment a quarter turn

`POST /api/preview/attachments/{id}/rotate`

## Request

- Base URL: `https://symbol.chat` (the document declares no server; this is the origin it was published from)
- URL: `https://symbol.chat/api/preview/attachments/{id}/rotate`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `__Secure-next-auth.session-token`
  - OAuth 2
    - Authorization code: `https://mcp.symbol.chat/authorize`
    - Token URL: `https://mcp.symbol.chat/token`

## Path parameters

- `id` string, required: UUID v4 string

## Request body

- object
  - `direction` 'cw' | 'ccw', required: Quarter-turn direction: "cw" (clockwise) or "ccw" (anticlockwise).

## Response `200`

Successful response

- object
  - `attachment` object, nullable, required
    - `available` boolean
    - `capsule_id` string, nullable
    - `capsule_updated_at` string, nullable: Upload confirm only: the capsule's new `updated_at` when the upload rewrote a file-name embed in its body; null when the body was not changed.
    - `created_at` string
    - `deleted_at` string, nullable
    - `embed_markdown` string: Markdown that places this file in a capsule body. Credential-free and durable, unlike any `?cat=` URL.
    - `expires_at` string, nullable
    - `file_name` string
    - `height` integer, nullable
    - `id` string
    - `mime_type` string
    - `object_key` string
    - `optimization` object
      - `height` integer, required
      - `original_height` integer, required
      - `original_width` integer, required
      - `resized` boolean, required
      - `width` integer, required
    - `retention` object
      - `days` integer, nullable, required
      - `expires_at` string, nullable, required
      - `note` string, required
      - `policy` 'expires' | 'permanent', required
    - `rotation_base_key` string, nullable
    - `rotation_base_size` integer, nullable
    - `rotation_degrees` integer, nullable
    - `size` integer
    - `unavailable_at` string, nullable
    - `unavailable_reason` string, nullable
    - `width` integer, nullable
  - `capsule_updated_at` string, nullable, required
  - `success` boolean, required

## Changes

- **2026-10-09** `c7729725d527`: 2 info
  - added the optional property `attachment/anyOf[subschema #1]/capsule_updated_at` to the response with the `200` status
  - added the optional property `attachment/anyOf[subschema #1]/embed_markdown` to the response with the `200` status
- **2026-09-30** `6a95af57f0f6`: 6 info
  - added the optional property `attachment/anyOf[subschema #1]/height` to the response with the `200` status
  - added the optional property `attachment/anyOf[subschema #1]/optimization` to the response with the `200` status
  - added the optional property `attachment/anyOf[subschema #1]/rotation_base_key` to the response with the `200` status
  - added the optional property `attachment/anyOf[subschema #1]/rotation_base_size` to the response with the `200` status
  - …2 more
- **2026-09-01** `1c4a7239821f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/symbol/apis/symbol-api/changes/api/preview/attachments/:id/rotate/post.md)

---

[API](https://skmtc.dev/symbol/apis/symbol-api.md) - [All operations](https://skmtc.dev/symbol/apis/symbol-api/llms.txt) - [OpenAPI document](https://skmtc.dev/symbol/apis/symbol-api/revisions/3a2c4ebeab51?raw)
