---
title: "Get presigned URLs for synthetics artifacts"
method: POST
path: "/api/{org_id}/synthetics/{id}/artifacts/presign"
tags: ["Synthetics"]
---

# Get presigned URLs for synthetics artifacts

`POST /api/{org_id}/synthetics/{id}/artifacts/presign`

## Request

- Base URL: `https://api.openobserve.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openobserve.ai/api/{org_id}/synthetics/{id}/artifacts/presign`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/:org_id/synthetics/:id/artifacts/presign/post.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `org_id` string, required
- `id` string, required

## Request body

- object
  - `keys` string[], required: Full object-store keys as stored in the stream records (`screenshot_key`, `trace_key`).

## Response `200`

Success

- object
  - `expires_in` integer, required
  - `mode` string, required: "presigned" — urls point directly at object storage (S3/MinIO/Azure). "proxy" — local disk mode; urls are relative API paths that stream bytes.
  - `urls` PresignedArtifact[], required
    - `key` string, required
    - `url` string, required

---

[API](https://skmtc.dev/openobserve/apis/openobserve-api-http.md) - [All operations](https://skmtc.dev/openobserve/apis/openobserve-api-http/llms.txt) - [OpenAPI document](https://skmtc.dev/openobserve/apis/openobserve-api-http/revisions/0529b8a10252?raw)
