Call GET /api/me once to confirm the token works and inspect your remaining allowance.
ReplyCam API reference for creating projects, links, submissions, exports, and transcripts.
https://replycam.com
Authenticate, create a project, send links, then fetch links and submissions by projectId.
https://replycam.com/api/openapi.json for machine-readable schema, then https://replycam.com/api/docs.md for compact prose.
In plain English: create a project, get recording links, send those links to people, then come back later to fetch the videos, transcripts, and exports.
These docs are for project creators who already have an API token. Internal provisioning and admin controls are intentionally out of scope here.
Quick Start
Call POST /api/projects with the title, number of links, and any options like transcription, terms, or interview questions.
Use the returned recipientUrls or the shared universal link and send them however you want.
Use projectId with the submissions and export endpoints to retrieve videos, transcripts, and metadata later.
End-to-End Example
Make sure the API token works before you create anything.
curl https://replycam.com/api/me \
-H 'authorization: Bearer api_...'
This returns the important IDs and links. Save projectId, dashboardUrl, and any recipient URLs you plan to send.
curl -X POST https://replycam.com/api/projects \
-H 'content-type: application/json' \
-H 'authorization: Bearer api_...' \
-d '{
"projectName": "Customer Testimonial Round",
"count": 12,
"expiresInHours": 72,
"neverExpire": false,
"sharedLinkEnabled": true,
"sharedLinkMaxUses": 1000,
"maxDurationSec": 180,
"transcriptionEnabled": true,
"noteEnabled": false,
"requestUrl": "https://example.com/brief",
"interviewQuestions": [
"What problem were you trying to solve?",
"What changed after using it?"
],
"webhookUrl": "https://example.com/replycam/webhooks",
"webhookSecret": "replace-with-your-secret",
"requireTerms": true,
"showSuccessDialog": true
}'
If you need to rehydrate the project from your own system, fetch the links again by projectId.
curl https://replycam.com/api/projects/PROJECT_ID/links \
-H 'authorization: Bearer api_...'
Use the submissions endpoint for live polling, or move to export routes when you want a downloadable bundle.
curl 'https://replycam.com/api/projects/PROJECT_ID/submissions?limit=25&selected=true&transcriptStatus=completed' \
-H 'authorization: Bearer api_...'
Auth Model
Internal-only. Used to create users, mint scoped tokens, inspect logs, and manage projects across the platform.
Normal integration surface. Uses Authorization: Bearer api_... and is the canonical way to create and retrieve projects.
Private URL-based access for reviewing one project and using read-only conveniences like dashboard exports and shared-link QR PNG.
Recording link only. Used by responders at /r/vr_... and not intended for creator retrieval or administration.
Authorization: Bearer api_...
Token Scopes
Required for GET /api/me.
Required for listing projects and reading project detail.
Required for creating or updating projects.
Required for reading recipient links.
Required for reading submissions, transcripts, and media URLs.
curl https://replycam.com/api/me \
-H 'authorization: Bearer api_...'
curl -X POST https://replycam.com/api/projects \
-H 'content-type: application/json' \
-H 'authorization: Bearer api_...' \
-d '{
"projectName": "Customer Testimonial Round",
"count": 12,
"expiresInHours": 72,
"neverExpire": false,
"sharedLinkEnabled": true,
"sharedLinkMaxUses": 1000,
"maxDurationSec": 180,
"transcriptionEnabled": true,
"noteEnabled": false,
"requestUrl": "https://example.com/brief",
"interviewQuestions": [
"What problem were you trying to solve?",
"What changed after using it?"
],
"webhookUrl": "https://example.com/replycam/webhooks",
"webhookSecret": "replace-with-your-secret",
"requireTerms": true,
"showSuccessDialog": true
}'
curl -X PATCH https://replycam.com/api/projects/PROJECT_ID \
-H 'content-type: application/json' \
-H 'authorization: Bearer api_...' \
-d '{
"projectName": "Customer Testimonial Round / Wave 2",
"expiresInHours": 168,
"sharedLinkMaxUses": 1500,
"transcriptionEnabled": true,
"noteEnabled": true,
"requestUrl": "https://example.com/brief-v2",
"interviewQuestions": [
"Tell me what stood out most.",
"Who would you recommend it to?"
],
"requireTerms": true,
"termsLabel": "I authorize the use of my content and agree to the terms.",
"showSuccessDialog": true,
"successMessage": "Thanks. You may close this page."
}'
curl https://replycam.com/api/projects \
-H 'authorization: Bearer api_...'
curl https://replycam.com/api/projects/PROJECT_ID \
-H 'authorization: Bearer api_...'
curl https://replycam.com/api/projects/PROJECT_ID/links \
-H 'authorization: Bearer api_...'
Interview Mode
Set an ordered array of prompts on create or update when one contributor should answer multiple questions in sequence.
ReplyCam keeps a responseSessionId so each interview answer can be stored as its own submission while still belonging to the same contributor session.
Interview answers include questionIndex and questionText, which makes question-level sorting, grouping, exports, and downstream analysis possible.
Set requestUrl when contributors should open a supporting page, brief, or example while they record.
After the final interview answer uploads, the contributor is sent to a dedicated thank-you page instead of remaining inside the recorder review state.
curl 'https://replycam.com/api/projects/PROJECT_ID/submissions?limit=25&selected=true&transcriptStatus=completed' \
-H 'authorization: Bearer api_...'
Project Exports
Richer bundle with project settings, links, and serialized submissions.
curl https://replycam.com/api/projects/PROJECT_ID/export.json \
-H 'authorization: Bearer api_...'
Flat CSV export for spreadsheets, BI tools, and manual review.
curl https://replycam.com/api/projects/PROJECT_ID/export.csv \
-H 'authorization: Bearer api_...' \
--output replycam-submissions.csv
ZIP bundle containing project.json, submissions.csv, transcripts.txt, and the video files.
curl https://replycam.com/api/projects/PROJECT_ID/export/project.zip \
-H 'authorization: Bearer api_...' \
--output replycam-project.zip
Plain-text transcript bundle, optionally filtered with the same selected/transcriptStatus query params.
curl 'https://replycam.com/api/projects/PROJECT_ID/export/transcripts.txt?selected=true' \
-H 'authorization: Bearer api_...' \
--output replycam-transcripts.txt
Dashboard Token Routes
Read-only JSON export using the private dashboard token instead of a creator Bearer token.
curl https://replycam.com/project/PROJECT_TOKEN/export.json
Dashboard-scoped CSV export for direct download from the project page.
https://replycam.com/project/PROJECT_TOKEN/export.csv
Dashboard-scoped ZIP bundle containing the full project export.
https://replycam.com/project/PROJECT_TOKEN/export/project.zip
Dashboard-scoped transcript bundle for quick creator download.
https://replycam.com/project/PROJECT_TOKEN/export/transcripts.txt
Direct PNG QR code route for the project’s shared universal link.
https://replycam.com/project/PROJECT_TOKEN/shared-link/qr.png
curl https://replycam.com/api/projects/PROJECT_ID/submissions/SUBMISSION_ID/transcript.txt \
-H 'authorization: Bearer api_...'
Webhooks
Optional HTTPS endpoint that receives JSON POSTs when a submission lands or a transcript finishes.
Optional shared secret used to sign the request body with replycam-signature: sha256=....
submission.completed, submission.transcript.completed, submission.transcript.failed.
replycam-event, replycam-event-id, and replycam-signature.
Project Settings
The title for this project in the dashboard.
How many unique recipient links to create.
Optional link expiration window in hours.
Set true to keep links valid until manually exhausted or disabled.
Include one reusable universal link in addition to the unique links.
How many times the universal link can be used before it stops accepting submissions.
Text shown after a successful upload when the success dialog is enabled.
Maximum clip length in seconds, currently up to 600 seconds (10 minutes).
Include transcripts for new uploads when enabled.
Show an optional note field to the person recording.
Optional HTTPS link shown on the recorder so contributors can open a brief, example, or source page while recording.
Ordered list of prompts for multi-question interview flows. Leave it empty for the standard one-response recorder.
Optional HTTPS endpoint for event delivery when uploads or transcripts complete.
Optional secret used to sign webhook payloads.
Require terms acceptance before upload.
Response Shape
{
"projectId": "uuid",
"projectName": "Customer Testimonial Round",
"projectToken": "prj_...",
"dashboardUrl": "https://replycam.com/project/prj_...",
"webhookEnabled": true,
"interviewQuestions": [
"What problem were you trying to solve?",
"What changed after using it?"
],
"sharedLink": {
"token": "vr_...",
"url": "https://replycam.com/r/vr_...",
"maxUses": 1000,
"qrCodePngUrl": "https://replycam.com/api/projects/uuid/shared-link/qr.png"
},
"recipientUrls": [
{
"token": "vr_...",
"url": "https://replycam.com/r/vr_..."
}
],
"counts": {
"videosCreated": 4,
"uniqueLinksRemaining": 8,
"sharedUsesRemaining": 996,
"responseSlotsRemaining": 1004
},
"apiUser": {
"userId": "uuid",
"userName": "Acme Team",
"videoLimit": 1000000,
"videosReserved": 1012,
"reservedVideoCount": 1012,
"remainingVideos": 998988
}
}
Retrieval Fields
Stable identifier used by every retrieval endpoint.
How many submissions have been completed so far for the project.
How many more responses the project can still accept across unique and shared links.
The actual recording link you can send or store in your own system.
Authenticated PNG QR code URL for the project’s universal shared link.
Authenticated API URL for the recorded video asset.
Stable session identifier that ties one contributor’s interview answers together across multiple submissions.
Question metadata attached to each interview answer so you can group, sort, and export by prompt.
Transcript text when transcription is enabled and processing has completed.
Current transcript state: pending, processing, completed, failed, or disabled.
Whether that response has been marked as selected in the reviewer dashboard.
Opaque cursor returned when another submissions page is available.
Query filters for narrowing submissions to selected clips or a specific transcript processing state.
Whether this project will push submission and transcript events to your webhook endpoint.
Agent Use
Use /api/openapi.json first when an agent needs a machine-readable contract with path params, response shapes, and auth requirements.
Use /api/docs.md when an agent needs compact prose and examples without the HTML shell.
This repo includes a Codex skill at .agents/skills/replycam-api/SKILL.md plus .agents/skills/replycam-api/agents/openai.yaml so agents can load ReplyCam-specific workflow guidance directly.
Treat projectId and submissionId as the canonical IDs for later retrieval.
If the user only has a private dashboard URL, agents can still use the dashboard-token export and QR routes without needing the creator Bearer token.
For interview projects, preserve responseSessionId, questionIndex, and questionText so grouped answers stay associated with the same contributor.
Video, thumbnail, and audio URLs stay inside the API so agents can fetch them with the same Bearer token.
Typical loop: list projects, pick a projectId, page through submissions with filters, then fetch transcript or media URLs as needed.
Usage Limits
- Your token may have a project/video creation allowance attached to it.
- If a request exceeds that allowance, the API will reject the project creation request.
- Shared links count toward that allowance based on their maximum use count.
- ReplyCam currently supports clips up to 600 seconds (10 minutes).
- ReplyCam also enforces generous runtime rate limits and returns HTTP 429 if one route is hit far too aggressively.