---
title: "Files uploaded through a one-time link — free"
method: GET
path: "/uploads/links/{code}"
tags: ["Landings"]
---

# Files uploaded through a one-time link — free

`GET /uploads/links/{code}`

## Request

- Base URL: `https://vibemarketolog.ru/api/agent`
- URL: `https://vibemarketolog.ru/api/agent/uploads/links/{code}`
- Auth: HTTP bearer

Returns permanent addresses of what the person uploaded (url, mime, bytes, width, height, name, kind) for <img src>/<video src> and image_input of *-edit models; the addresses do not expire with the link. Only links created by the same account. Returned files are marked as collected and are no longer removed by the cleanup. Videos from iPhone are transcoded for browsers for 1–2 minutes — while they are in pending, ask again. hint says what to do next. MCP twin: upload_link (with code).

## Path parameters

- `code` string, required

## Response `200`

Link state with files, pending and failed

- UploadLink
  - `status` 'ok'
  - `code` string
  - `url` string, uri: Page for the person: lk.vibemarketolog.ru/u/{code}
  - `kinds` string[]
  - `asks` string, nullable: Phrase the page shows to the person
  - `purpose` string, nullable
  - `expires_at` string, date-time, nullable
  - `expires_at_msk` string, nullable
  - `expired` boolean
  - `max_files` integer
  - `count` integer
  - `left` integer
  - `bytes` integer
  - `max_bytes` integer
  - `files` UploadLinkFile[]: Ready files
    - `url` string, uri
    - `mime` string
    - `bytes` integer
    - `width` integer, nullable
    - `height` integer, nullable
    - `name` string: Original name, for showing to the person only
    - `kind` 'image' | 'video'
    - `uploaded_at` string, date-time, nullable
  - `pending` object[]: Videos still being transcoded
    - `name` string
    - `kind` string
    - `uploaded_at` string, nullable
  - `failed` object[]
    - `name` string
    - `message` string
  - `purged_files` integer
  - `accepts` string: Only in the create response
  - `hint` string: What to do next

## Other responses

- `401`: Ключ не передан, недействителен, отозван или истёк (missing_token / invalid_token)
- `403`: sandbox_not_allowed (shared trial key from self-registration: its files would be visible to everyone) / insufficient_scope / ip_not_allowed
- `404`: not_found — no such link or it belongs to another account
- `429`: Превышена частота запросов или суточный лимит траты ключа (rate_limit_exceeded / daily_spend_limit_exceeded)

---

[API](https://skmtc.dev/vibemarketolog/apis/agent-api.md) · [All operations](https://skmtc.dev/vibemarketolog/apis/agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vibemarketolog/apis/agent-api/revisions/6a74f8ad5d58?raw)
