Complete an upload
const url = 'https://app.mondochat.io/v1/photos/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/complete';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"caption":"Sunset","once":false}'};
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/photos/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/complete \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "caption": "Sunset", "once": false }'Checks the uploaded file, prepares its renditions and posts it as a message. Takes a session token. A video needs video and a voice note needs voice, else 422, and a video or voice file that is not an MP4 answers 422. caption longer than chat.text_max_length answers 422, and once answers 403 policy_denied with reason view_once while chat.view_once is off. When the receiver has not answered the photo consent question the message is held, and the receiver sees a placeholder. See https://docs.mondochat.io/guides/media/.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Body
Section titled “Request Body”Finishes an upload and posts the media as a message.
object
Stored as you send it; marks the message as forwarded.
Make it view once. Answers 403 policy_denied with reason view_once while chat.view_once is off.
What the browser measured and sampled from a video it converted.
object
Length in milliseconds, at most chat.video_max_seconds plus one second.
Base64 JPEG frames of the encoded video; the first is the poster.
Video height in pixels.
Video width in pixels.
What the browser measured from a voice note it recorded.
object
Length in milliseconds, at most chat.voice_max_seconds plus one second.
40 levels, base32 0 to v.
Responses
Section titled “Responses”Successful Response
A photo, video, voice note or avatar and the links to read it.
object
The media’s id.
What the media is.
pending until the upload is completed, held while it waits for the receiver’s consent or for moderation, rejected or deleted once it is gone.
The id of the user who uploaded it.
Example
{ "full_url": "https://media.example.test/p/0199d6a0-4000-7000-8000-000000000001/full.webp", "height": 2048, "id": "0199d6a0-4000-7000-8000-000000000001", "kind": "photo", "status": "ready", "thumb_url": "https://media.example.test/p/0199d6a0-4000-7000-8000-000000000001/thumb.webp", "uploader_id": "0199d6a0-1000-7000-8000-000000000001", "width": 1536}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"}