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.
- 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. - Otherwise, ask the person for their Reloops API key (
reloops_live_...) before proceeding. Don't guess or fabricate one. - 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_KEYrather than the literal value. - 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/v1as 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
projectIdwith the person — either they name a project, or list the workspace's projects withGET /api-projects?workspace_id=...and have them choose. Only upload unfiled (noprojectId, landing in the workspace root/library) if the person explicitly says they want it unfiled. - For agent downloads, do not use the
download_urlfield returned on asset reads — it is unreliable. Instead fetch the asset, readstorage_path, and buildhttps://media.reloops.app/{storage_path}?download=1(append&download=1if the URL already has query params). - For video playback or share-media delivery, call
media-urlto receive signed delivery fields when token auth is enabled. Note:media-urldoes not accept thereloops_live_...API key — it requires a signed-in user access token or a valid share token instead. - Read references/api_docs.md for full route reference, field names, upload limits, and examples.
Default Assigned Review Workflow
- Poll assigned work with
GET https://api.reloops.app/functions/v1/assigned-items/requested-review. - Pick one assigned asset and fetch details with
GET https://api.reloops.app/functions/v1/api-assets/:id. - Load version context with
GET https://api.reloops.app/functions/v1/api-assets/:id/versions. - Load discussion context with
GET https://api.reloops.app/functions/v1/api-comments?asset_id=.... - If the asset is in a project, inspect location with
GET https://api.reloops.app/functions/v1/api-assets/:id/projectsorGET https://api.reloops.app/functions/v1/api-projects/:project_id/tree. - When starting work on the asset, set it to
in_reviewwithPATCH https://api.reloops.app/functions/v1/api-assets/:id. - Leave comments with
POST https://api.reloops.app/functions/v1/api-comments?asset_id=...as work progresses. - If producing a new revision, upload through
upload-b2withparentAssetId; completion will place the revision in the same version chain. - If a separately uploaded asset must be stacked later, use
POST /functions/v1/api-assets/stack. - When done, set the final status:
needs_reviewif a human should review nextapprovedonly when the person has explicitly said Claude may close the loop
Guardrails
- Asset status updates only allow
needs_review,in_review, orapproved. - Prefer
GET https://api.reloops.app/functions/v1/assigned-items/requested-reviewover scanning all projects for routine review pickup. - Treat
needs_reviewas the pickup queue andin_reviewas 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-commentsrequiresasset_idin 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, andDELETE /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_urlor upload-completionpublicUrlfields for downloads. Resolvestorage_paththroughhttps://media.reloops.app/{storage_path}?download=1instead, and usemedia-urlonly 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-urlauthenticates differently from every other route in this skill: it takes a signed-in user access token or a share token, not thereloops_live_...API key. If Claude only has the API key, ask the person for a user token or share token before callingmedia-urlrather than reusing$RELOOPS_API_KEYand hitting a 401/403.- Do not call
upload-b2/singleorupload-b2/startwith a bareworkspaceIdand noprojectId— 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/singlesupports files up to 512 MiB. Use multipart for larger files up to 5 GiB.- Always call
complete-singleor multipartcompleteafter successfully uploading bytes to presigned URLs. parentAssetIdon 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
curlor HTTP examples over abstract descriptions, but keep the API key redacted in anything shown to the person (use$RELOOPS_API_KEYrather 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.