---
title: "Generate a presigned GET URL to display a user-scoped image from R2"
method: GET
path: "/activity/images/read-url"
tags: ["activity"]
---

# Generate a presigned GET URL to display a user-scoped image from R2

`GET /activity/images/read-url`

## Request

- Base URL: `https://api.focusbear.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.focusbear.io/activity/images/read-url`
- Auth: HTTP bearer

Requires query parameter `file_key` (URL-encoded R2 object key under the caller’s namespace).

## Query parameters

- `file_key` string, required

## Response `200`

Presigned read URL generated successfully

- ActivityImageReadUrlResponseDto
  - `readUrl` string, required: Presigned GET URL to load the image from R2 until it expires
  - `expiresInSeconds` number, required: Seconds until readUrl expires

## Other responses

- `400`: Invalid or missing file_key
- `403`: User is not authorized to read this image

---

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