Mark a conversation as read
curl --request POST \
--url https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"accountId": "acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3"
}
'import requests
url = "https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read"
payload = { "accountId": "acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({accountId: 'acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3'})
};
fetch('https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'accountId' => 'acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read"
payload := strings.NewReader("{\n \"accountId\": \"acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"accountId\": \"acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"accountId\": \"acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3\"\n}"
response = http.request(request)
puts response.read_body{
"markedCount": 123,
"success": true
}{
"error": {
"code": "<string>",
"details": {},
"message": "<string>",
"param": "<string>",
"retryHint": "never",
"retryable": true,
"type": "<string>"
}
}AIsa Social
Mark a conversation as read
Inbox. Changes your own setup; needs social:draft. Audited. Ids are yours: accounts acc_..., profiles prf_..., posts pst_...; every other object id is checked against your accounts before the call.
Marks all unread incoming messages in the conversation as read.
For WhatsApp, this also sends read receipts (blue ticks) to the contact,
EXCEPT on coexistence accounts (where the WhatsApp Business app on the
customer's phone owns read state and we never override it).
For iMessage, this also marks the conversation read with the contact
(1:1 conversations only). Best-effort.
For Instagram (Instagram Login and Facebook Login) and Facebook Messenger,
this also sends a `mark_seen` read receipt to the contact, so they see the
conversation as seen. Best-effort: a Meta failure never fails the request.
This is the explicit, human-driven counterpart to `GET .../messages`,
which is side-effect-free and does NOT mark anything read. Call this when
a user actually views the conversation.
<!-- aisa-pricing:start -->
A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ.
<!-- aisa-pricing:end -->
POST
https://api.aisa.one
/
apis
/
v1
/
social
/
inbox
/
conversations
/
{conversationId}
/
read
Mark a conversation as read
curl --request POST \
--url https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"accountId": "acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3"
}
'import requests
url = "https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read"
payload = { "accountId": "acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({accountId: 'acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3'})
};
fetch('https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'accountId' => 'acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read"
payload := strings.NewReader("{\n \"accountId\": \"acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"accountId\": \"acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"accountId\": \"acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3\"\n}"
response = http.request(request)
puts response.read_body{
"markedCount": 123,
"success": true
}{
"error": {
"code": "<string>",
"details": {},
"message": "<string>",
"param": "<string>",
"retryHint": "never",
"retryable": true,
"type": "<string>"
}
}Request contract
- Method and path: POST /apis/v1/social/inbox/conversations/{conversationId}/read
- Availability: enabled
- Request URL template:
https://api.aisa.one/apis/v1/social/inbox/conversations/{conversationId}/read - conversationId: path; required
- Runtime facts: 99acb5bddbedc8d3352e7c4fef86c3e6d8852c14772bcd18dbcf415237a642bd
{
"operationId": "post_aisa_social_apis_v1_social_inbox_conversatio_2a39d2",
"method": "POST",
"path": "/apis/v1/social/inbox/conversations/{conversationId}/read",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [
{
"description": "The conversation ID",
"in": "path",
"name": "conversationId",
"required": true,
"schema": {
"type": "string"
}
}
],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"example": {
"accountId": "acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3"
},
"schema": {
"properties": {
"accountId": {
"description": "One of your social accounts (acc_...).",
"pattern": "^acc_[0-9A-Za-z]{22}$",
"type": "string"
}
},
"required": [
"accountId"
],
"type": "object"
}
}
},
"required": true
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"description": "Included with your connected social accounts: AIsa does not charge per call.",
"kind": "no_customer_charge"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
Cost and request rules
A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The conversation ID
Body
application/json
One of your social accounts (acc_...).
Pattern:
^acc_[0-9A-Za-z]{22}$