Request a call frame upload
const url = 'https://app.mondochat.io/v1/calls/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/frames';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"content_type":"image/jpeg","subject_id":"0199d6a0-1000-7000-8000-000000000002"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://app.mondochat.io/v1/calls/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/frames \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "content_type": "image/jpeg", "subject_id": "0199d6a0-1000-7000-8000-000000000002" }'Returns a presigned POST for one frame of the other participant’s video, which moderation judges like a photo. Only a participant of an active call may call it, naming the other participant as subject_id, and only after the call.capture event was sent for that subject. Past moderation.calls.capture_max_frames for the subject it answers 429. The link lives 2 minutes and takes up to 1 MB. Takes a session token. See https://docs.mondochat.io/guides/calls/.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”Asks for a presigned upload of one captured call frame.
object
The frame’s media type.
The other participant, whose video the frame shows.
Responses
Section titled “Responses”Successful Response
A presigned POST for one call frame.
object
When the upload link stops working, 2 minutes on.
Form fields to send with the file in the POST.
object
The frame’s id. Pass it to the complete route.
Where to POST the frame.
Example
{ "expires_at": "2026-11-01T09:32:00Z", "fields": { "key": "c/0199d6a0-5000-7000-8000-000000000001/frame.jpg" }, "frame_id": "0199d6a0-5100-7000-8000-000000000001", "url": "https://uploads.example.test/"}Problem
An RFC 9457 problem: the body of every error answer.
object
The stable error code to branch on, such as policy_denied.
What went wrong this time, when there is more to say.
For validation, one entry per invalid field.
One invalid field.
object
The path to the field.
What is wrong with it.
The path of the request.
For policy_denied and limit_reached, the rule or limit that refused the request; for forbidden, a short cause such as you_blocked; for banned, temporary when the ban expires.
The HTTP status code.
A short summary of the problem.
A URL that names the problem, https://app.mondochat.io/problems/<code>.
Example
{ "code": "policy_denied", "detail": null, "instance": "/v1/conversations/0199d6a0-2000-7000-8000-000000000001", "reason": "pins", "status": 403, "title": "Policy denied", "type": "https://app.mondochat.io/problems/policy_denied"}