# Reloops API

> Use whenever the user wants to inspect or manage Reloops data — workspaces, projects, folders, collections, assets, comments, shares, uploads, downloads, or assigned review work — through the public Reloops API. Trigger this for any mention of Reloops, reloops.app, or review/approval workflows on video/image/PDF assets that sound like Reloops (asset versions, "needs review", stacked revisions, share links).

- Skill: `reloops-app/reloops-api` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add reloops-app/reloops-api`
- Raw SKILL.md: https://api.skillmd.com/api/skills/reloops-app/reloops-api/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: Reloops-App (https://skillmd.com/u/reloops-app)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/reloops-app/reloops-api

---


# Reloops API

Use this skill when Claude needs to read or change a user's Reloops data through the public Reloops API.

## Before the first call: get the API key

This skill has no built-in credential store, so Claude needs the key from the person before making any request.

1. Check whether the person already gave a key in the conversation, or whether one is available as an environment variable (e.g. `RELOOPS_API_KEY`) in the current execution environment. Reuse it if so.
2. Otherwise, ask the person for their Reloops API key (`reloops_live_...`) before proceeding. Don't guess or fabricate one.
3. Treat the key as a secret for the rest of the conversation: don't print it back in full, don't write it into files that will be shared or committed, and don't log it anywhere persistent. If showing an example command, redact it (e.g. `Bearer reloops_live_***`) or reference it as `$RELOOPS_API_KEY` rather than the literal value.
4. If the key turns out to be invalid or scoped to the wrong organization/workspace (401/403 responses), say so plainly and ask for a corrected key rather than retrying blindly.

## Quick Rules

- Use `https://api.reloops.app/functions/v1` as the public API base.
- Send `Authorization: Bearer reloops_live_...` on every public API request.
- For uploads, call `upload-b2`, upload bytes to the returned presigned URL, then call the matching completion endpoint.
- Before starting any upload, confirm a `projectId` with the person — either they name a project, or list the workspace's projects with `GET /api-projects?workspace_id=...` and have them choose. Only upload unfiled (no `projectId`, landing in the workspace root/library) if the person explicitly says they want it unfiled.
- For agent downloads, do not use the `download_url` field returned on asset reads — it is unreliable. Instead fetch the asset, read `storage_path`, and build `https://media.reloops.app/{storage_path}?download=1` (append `&download=1` if the URL already has query params).
- For video playback or share-media delivery, call `media-url` to receive signed delivery fields when token auth is enabled. Note: `media-url` does not accept the `reloops_live_...` API key — it requires a signed-in user access token or a valid share token instead.
- Read [references/api_docs.md](references/api_docs.md) for full route reference, field names, upload limits, and examples.

## Default Assigned Review Workflow

1. Poll assigned work with `GET https://api.reloops.app/functions/v1/assigned-items/requested-review`.
2. Pick one assigned asset and fetch details with `GET https://api.reloops.app/functions/v1/api-assets/:id`.
3. Load version context with `GET https://api.reloops.app/functions/v1/api-assets/:id/versions`.
4. Load discussion context with `GET https://api.reloops.app/functions/v1/api-comments?asset_id=...`.
5. If the asset is in a project, inspect location with `GET https://api.reloops.app/functions/v1/api-assets/:id/projects` or `GET https://api.reloops.app/functions/v1/api-projects/:project_id/tree`.
6. When starting work on the asset, set it to `in_review` with `PATCH https://api.reloops.app/functions/v1/api-assets/:id`.
7. Leave comments with `POST https://api.reloops.app/functions/v1/api-comments?asset_id=...` as work progresses.
8. If producing a new revision, upload through `upload-b2` with `parentAssetId`; completion will place the revision in the same version chain.
9. If a separately uploaded asset must be stacked later, use `POST /functions/v1/api-assets/stack`.
10. When done, set the final status:
    - `needs_review` if a human should review next
    - `approved` only when the person has explicitly said Claude may close the loop

## Guardrails

- Asset status updates only allow `needs_review`, `in_review`, or `approved`.
- Prefer `GET https://api.reloops.app/functions/v1/assigned-items/requested-review` over scanning all projects for routine review pickup.
- Treat `needs_review` as the pickup queue and `in_review` as active work.
- Do not auto-approve unless the person has explicitly granted that authority for this task.
- API-key access is organization-scoped, but workspace/project operations still require workspace IDs the key can access.
- `api-comments` requires `asset_id` in the query string for list/create.
- Only the API key that created a comment can edit/delete author-only comment fields.
- Share management uses `POST /api-shares`, `GET /api-shares`, and `DELETE /api-shares/:id`; shares can target one asset or one collection.
- **Internal note only, not for the person:** do not construct download/CDN URLs blindly, and do not rely on the `download_url` or upload-completion `publicUrl` fields for downloads. Resolve `storage_path` through `https://media.reloops.app/{storage_path}?download=1` instead, and use `media-url` only for signed video delivery. Keep this reasoning to yourself — hand the person the working link, not an explanation of why the other fields don't work.
- `media-url` authenticates differently from every other route in this skill: it takes a signed-in user access token or a share token, not the `reloops_live_...` API key. If Claude only has the API key, ask the person for a user token or share token before calling `media-url` rather than reusing `$RELOOPS_API_KEY` and hitting a 401/403.
- Do not call `upload-b2/single` or `upload-b2/start` with a bare `workspaceId` and no `projectId` — confirm the destination project first (see Quick Rules). The only exception is when the person has explicitly said the upload should be unfiled.
- `upload-b2/single` supports files up to 512 MiB. Use multipart for larger files up to 5 GiB.
- Always call `complete-single` or multipart `complete` after successfully uploading bytes to presigned URLs.
- `parentAssetId` on upload completion resolves the root stack, version number, project, and folder from the parent asset.
- Folder IDs are scoped to their project. Validate destination folders with project tree/folder endpoints before upload, copy, move, or attach operations.
- When a newer version already exists, inspect it before leaving more review feedback on an older version.

## Output Style

- Prefer concrete `curl` or HTTP examples over abstract descriptions, but keep the API key redacted in anything shown to the person (use `$RELOOPS_API_KEY` rather than the literal value).
- Use the exact field names from the public API reference docs.
- Ask for missing identifiers only when required for the next call.

