Inbox
Direct messages, comments and reviews of a profile’s accounts. Lists take the profile; actions take the account the item belongs to.
List conversations
Section titled “List conversations”/v1/inbox/conversationsDirect messages on Facebook, Instagram, X, Bluesky, Reddit and Telegram, most recent first.
Parameters
profileIdstringrequiredaccountIdstringstatusstringcursorstringnextCursor of the previous page.
limitinteger
Response 200
data
itemsobject[]requireditems
idstringrequiredOpaque conversation id.
accountIdstringrequiredplatformstringrequiredparticipantobjectrequiredparticipant
namestringusernamestringpicturestring (uri)
lastMessagestringupdatedAtstring (date-time)statusstringrequiredunreadCountintegerrequiredurlstring (uri)Opens the conversation on the network.
nextCursorstring | nullrequiredSend it as cursor for the next page; null on the last one.
curl "https://api.usecrier.com/v1/inbox/conversations" \ -H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/inbox/conversations', { headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.usecrier.com/v1/inbox/conversations", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)data = res.json()["data"]List the messages of a conversation
Section titled “List the messages of a conversation”/v1/inbox/conversations/{id}/messagesParameters
idstringrequiredaccountIdstringrequiredThe account the item belongs to.
cursorstringnextCursor of the previous page.
Response 200
data
itemsobject[]requireditems
idstringrequireddirectionstringrequiredtextstringrequiredsenderNamestringcreatedAtstring (date-time)requiredattachmentsobject[]requiredattachments
typestringrequiredurlstring (uri)namestring
deliveryStatusstringdeletedbooleanrequired
nextCursorstring | nullrequiredSend it as cursor for the next page; null on the last one.
curl "https://api.usecrier.com/v1/inbox/conversations/cnv_…/messages" \ -H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/inbox/conversations/cnv_…/messages', { headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.usecrier.com/v1/inbox/conversations/cnv_…/messages", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)data = res.json()["data"]Send a message
Section titled “Send a message”/v1/inbox/conversations/{id}/messagesText, an attachment or both. Meta only lets a page answer within 24 hours of the person’s last message.
Parameters
idstringrequired
Body
accountIdstringrequiredThe account the item belongs to.
textstringattachmentUrlstring (uri)A public https URL (for example from POST /v1/media/upload-url).
attachmentTypestring
Response 204
No content
curl -X POST "https://api.usecrier.com/v1/inbox/conversations/cnv_…/messages" \ -H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/inbox/conversations/cnv_…/messages', { method: 'POST', headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.post( "https://api.usecrier.com/v1/inbox/conversations/cnv_…/messages", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)data = res.json()["data"]Mark a conversation as read
Section titled “Mark a conversation as read”/v1/inbox/conversations/{id}/readParameters
idstringrequired
Body
accountIdstringrequiredThe account the item belongs to.
Response 204
No content
curl -X POST "https://api.usecrier.com/v1/inbox/conversations/cnv_…/read" \ -H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/inbox/conversations/cnv_…/read', { method: 'POST', headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.post( "https://api.usecrier.com/v1/inbox/conversations/cnv_…/read", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)data = res.json()["data"]Archive or reopen a conversation
Section titled “Archive or reopen a conversation”/v1/inbox/conversations/{id}Parameters
idstringrequired
Body
accountIdstringrequiredThe account the item belongs to.
statusstringrequired
Response 204
No content
curl -X PATCH "https://api.usecrier.com/v1/inbox/conversations/cnv_…" \ -H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/inbox/conversations/cnv_…', { method: 'PATCH', headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.patch( "https://api.usecrier.com/v1/inbox/conversations/cnv_…", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)data = res.json()["data"]List posts with comments
Section titled “List posts with comments”/v1/inbox/postsRecent posts of the profile’s accounts with their comment counts, including posts published outside Crier.
Parameters
profileIdstringrequiredaccountIdstringcursorstringnextCursor of the previous page.
limitinteger
Response 200
data
itemsobject[]requireditems
idstringrequiredOpaque post id for the comment endpoints.
accountIdstringrequiredplatformstringrequiredcontentstringrequiredpicturestring (uri)urlstring (uri)createdAtstring (date-time)commentCountintegerrequiredlikeCountintegerrequired
nextCursorstring | nullrequiredSend it as cursor for the next page; null on the last one.
curl "https://api.usecrier.com/v1/inbox/posts?profileId=prf_8f2k4d" \ -H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/inbox/posts?profileId=prf_8f2k4d', { headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.usecrier.com/v1/inbox/posts?profileId=prf_8f2k4d", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)data = res.json()["data"]List the comments of a post
Section titled “List the comments of a post”/v1/inbox/posts/{id}/commentsParameters
idstringrequiredaccountIdstringrequiredThe account the item belongs to.
cursorstringnextCursor of the previous page.
Response 200
data
itemsobject[]requireditems
idstringrequiredOpaque comment id.
textstringrequiredauthorobjectrequiredauthor
namestringusernamestringpicturestring (uri)isOwnerbooleanrequiredWritten by the connected account.
createdAtstring (date-time)likeCountintegerrequiredreplyCountintegerrequiredurlstring (uri)canobjectrequiredWhat this network allows on it.
can
replybooleanrequireddeletebooleanrequiredhidebooleanrequiredlikebooleanrequired
hiddenbooleanrequiredlikedbooleanrequiredrepliesobject[]requiredreplies
idstringrequiredOpaque comment id.
textstringrequiredauthorobjectrequiredauthor
namestringusernamestringpicturestring (uri)isOwnerbooleanrequiredWritten by the connected account.
createdAtstring (date-time)likeCountintegerrequiredreplyCountintegerrequiredurlstring (uri)canobjectrequiredWhat this network allows on it.
can
replybooleanrequireddeletebooleanrequiredhidebooleanrequiredlikebooleanrequired
hiddenbooleanrequiredlikedbooleanrequired
nextCursorstring | nullrequiredSend it as cursor for the next page; null on the last one.
curl "https://api.usecrier.com/v1/inbox/posts/thr_…/comments" \ -H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/inbox/posts/thr_…/comments', { headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.usecrier.com/v1/inbox/posts/thr_…/comments", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)data = res.json()["data"]Comment or reply to a comment
Section titled “Comment or reply to a comment”/v1/inbox/posts/{id}/commentsParameters
idstringrequired
Body
accountIdstringrequiredThe account the item belongs to.
textstringrequiredcommentIdstringReply under this comment; omit to comment on the post.
Response 204
No content
curl -X POST "https://api.usecrier.com/v1/inbox/posts/thr_…/comments" \ -H "Authorization: Bearer $CRIER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "accountId": "acc_3k9x2m", "text": "Thank you!" }'const res = await fetch('https://api.usecrier.com/v1/inbox/posts/thr_…/comments', { method: 'POST', headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ "accountId": "acc_3k9x2m", "text": "Thank you!" }),});const { data } = await res.json();import os, requests
res = requests.post( "https://api.usecrier.com/v1/inbox/posts/thr_…/comments", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"}, json={ "accountId": "acc_3k9x2m", "text": "Thank you!" },)data = res.json()["data"]Hide or like a comment
Section titled “Hide or like a comment”/v1/inbox/posts/{id}/comments/{commentId}Each comment says in can what its network allows.
Parameters
idstringrequiredcommentIdstringrequired
Body
accountIdstringrequiredThe account the item belongs to.
hiddenbooleanlikedboolean
Response 204
No content
curl -X PATCH "https://api.usecrier.com/v1/inbox/posts/thr_…/comments/cmt_…" \ -H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/inbox/posts/thr_…/comments/cmt_…', { method: 'PATCH', headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.patch( "https://api.usecrier.com/v1/inbox/posts/thr_…/comments/cmt_…", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)data = res.json()["data"]Delete a comment
Section titled “Delete a comment”/v1/inbox/posts/{id}/comments/{commentId}Parameters
idstringrequiredcommentIdstringrequiredaccountIdstringrequiredThe account the item belongs to.
Response 204
No content
curl -X DELETE "https://api.usecrier.com/v1/inbox/posts/thr_…/comments/cmt_…" \ -H "Authorization: Bearer $CRIER_API_KEY"await fetch('https://api.usecrier.com/v1/inbox/posts/thr_…/comments/cmt_…', { method: 'DELETE', headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});import os, requests
requests.delete( "https://api.usecrier.com/v1/inbox/posts/thr_…/comments/cmt_…", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)List mentions
Section titled “List mentions”/v1/inbox/mentionsPosts and comments by others that tag the profile’s accounts, from the last 7 days: Instagram (accounts connected through Facebook) and LinkedIn pages.
Parameters
profileIdstringrequiredaccountIdstringcursorstringnextCursor of the previous page.
limitinteger
Response 200
data
itemsobject[]requireditems
idstringrequiredOpaque mention id.
accountIdstringrequiredThe connected account that was mentioned.
platformstringrequiredkindstringrequiredInstagram: tagged in a comment (
comment) or in a post caption (caption). LinkedIn: tagged in a post (post).contentstringrequiredThe text that mentions the account. Instagram may send it a moment later: empty until then.
authorobjectrequiredauthor
namestringusernamestringpicturestring (uri)
urlstring (uri)The post that mentions the account (LinkedIn).
publishedAtstring (date-time)canReplybooleanrequiredWhether POST /v1/inbox/mentions/{id}/reply works on it: Instagram only.
nextCursorstring | nullrequiredSend it as cursor for the next page; null on the last one.
curl "https://api.usecrier.com/v1/inbox/mentions?profileId=prf_8f2k4d" \ -H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/inbox/mentions?profileId=prf_8f2k4d', { headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.usecrier.com/v1/inbox/mentions?profileId=prf_8f2k4d", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)data = res.json()["data"]Reply to a mention
Section titled “Reply to a mention”/v1/inbox/mentions/{id}/replyInstagram only (canReply): replies under the comment that tagged the account, or comments on the post whose caption did.
Parameters
idstringrequired
Body
accountIdstringrequiredThe account the item belongs to.
textstringrequired
Response 204
No content
curl -X POST "https://api.usecrier.com/v1/inbox/mentions/mtn_…/reply" \ -H "Authorization: Bearer $CRIER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "accountId": "acc_3k9x2m", "text": "Thanks for the shout-out!" }'const res = await fetch('https://api.usecrier.com/v1/inbox/mentions/mtn_…/reply', { method: 'POST', headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ "accountId": "acc_3k9x2m", "text": "Thanks for the shout-out!" }),});const { data } = await res.json();import os, requests
res = requests.post( "https://api.usecrier.com/v1/inbox/mentions/mtn_…/reply", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"}, json={ "accountId": "acc_3k9x2m", "text": "Thanks for the shout-out!" },)data = res.json()["data"]List reviews
Section titled “List reviews”/v1/inbox/reviewsGoogle Business and Facebook reviews, with their total and average rating.
Parameters
profileIdstringrequiredaccountIdstringcursorstringnextCursor of the previous page.
limitintegerhasReplystringOnly reviews with (true) or without (false) a reply.
Response 200
data
itemsobject[]requireditems
idstringrequiredOpaque review id.
accountIdstringrequiredplatformstringrequiredreviewerobjectrequiredreviewer
namestringusernamestringpicturestring (uri)
ratinginteger | nullrequired1 to 5; null on Facebook, which recommends instead.
recommendsbooleantextstringrequiredcreatedAtstring (date-time)replyobject | nullrequiredreply
textstringrequiredcreatedAtstring (date-time)
urlstring (uri)locationstringGoogle Business location.
nextCursorstring | nullrequiredSend it as cursor for the next page; null on the last one.
summaryobjectrequiredsummary
totalintegerrequiredaverageRatingnumber | nullrequired
curl "https://api.usecrier.com/v1/inbox/reviews" \ -H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/inbox/reviews', { headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.usecrier.com/v1/inbox/reviews", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)data = res.json()["data"]Reply to a review
Section titled “Reply to a review”/v1/inbox/reviews/{id}/replyParameters
idstringrequired
Body
accountIdstringrequiredThe account the item belongs to.
textstringrequired
Response 204
No content
curl -X POST "https://api.usecrier.com/v1/inbox/reviews/rev_…/reply" \ -H "Authorization: Bearer $CRIER_API_KEY"const res = await fetch('https://api.usecrier.com/v1/inbox/reviews/rev_…/reply', { method: 'POST', headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.post( "https://api.usecrier.com/v1/inbox/reviews/rev_…/reply", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)data = res.json()["data"]Delete a review reply
Section titled “Delete a review reply”/v1/inbox/reviews/{id}/replyGoogle Business only.
Parameters
idstringrequiredaccountIdstringrequiredThe account the item belongs to.
Response 204
No content
curl -X DELETE "https://api.usecrier.com/v1/inbox/reviews/rev_…/reply" \ -H "Authorization: Bearer $CRIER_API_KEY"await fetch('https://api.usecrier.com/v1/inbox/reviews/rev_…/reply', { method: 'DELETE', headers: { Authorization: `Bearer ${process.env.CRIER_API_KEY}`, },});import os, requests
requests.delete( "https://api.usecrier.com/v1/inbox/reviews/rev_…/reply", headers={"Authorization": f"Bearer {os.environ['CRIER_API_KEY']}"},)© 2026 Crier by TWOFACES ·usecrier.com ·Dashboard ·soporte@twofacesco.com