---
title: "Resolve Chat Image Urls"
method: POST
path: "/api/upload/chat-image-urls"
tags: ["upload", "upload"]
---

# Resolve Chat Image Urls

`POST /api/upload/chat-image-urls`

Batch variant of /chat-image-url: mint signed URLs for many private chat-image
gs:// refs in ONE round-trip. The message list resolves all visible images at
once (was one POST per image, each a separate GCS existence round-trip + auth).
The per-object .exists() checks run concurrently in a thread pool so the batch
is bounded by the slowest single check, not their sum.

Returns {results: {ref: {url} | {expired: true} | {error: true}}}. Same
bucket restriction and per-object expiry semantics as the singular endpoint.

## Headers

- `authorization` string, nullable

## Request body

- BodyResolveChatImageUrlsApiUploadChatImageUrlsPost
  - `refs` unknown[], required
    - unknown

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored.md) · [All operations](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/fluentea/aurqa-language-learning-platform-refactored/revisions/78f314acd8bf/schema)
