import { Crevio } from "@crevio/sdk";
const crevio = new Crevio({
apiKey: process.env["CREVIO_API_KEY"] ?? "",
});
async function run() {
const result = await crevio.email.inboxes.messages.batchUpdate({
inboxId: "<id>",
requestBody: {
messageIds: [
"<value>",
],
addLabels: [
"trash",
],
},
});
console.log(result);
}
run();curl --request POST \
--url https://api.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"message_ids": [
"<string>"
],
"add_labels": "<string>",
"remove_labels": "<string>"
}
'import requests
url = "https://api.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update"
payload = {
"message_ids": ["<string>"],
"add_labels": "<string>",
"remove_labels": "<string>"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({message_ids: ['<string>'], add_labels: '<string>', remove_labels: '<string>'})
};
fetch('https://api.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update', 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.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update",
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([
'message_ids' => [
'<string>'
],
'add_labels' => '<string>',
'remove_labels' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update"
payload := strings.NewReader("{\n \"message_ids\": [\n \"<string>\"\n ],\n \"add_labels\": \"<string>\",\n \"remove_labels\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"message_ids\": [\n \"<string>\"\n ],\n \"add_labels\": \"<string>\",\n \"remove_labels\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"message_ids\": [\n \"<string>\"\n ],\n \"add_labels\": \"<string>\",\n \"remove_labels\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"limit": 123,
"count": 123,
"updates": [
{
"id": "<string>",
"labels": [
"<string>"
]
}
]
}{
"error": {
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request was malformed or contained invalid parameters"
}
}{
"error": {
"type": "invalid_request_error",
"code": "authentication_required",
"message": "You did not provide an API key."
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_missing",
"message": "The requested resource was not found"
}
}{
"error": {
"type": "validation_error",
"code": "validation_failed",
"message": "Email is required",
"errors": {
"email": [
"can't be blank"
]
}
}
}{
"error": {
"type": "invalid_request_error",
"code": "rate_limit_exceeded",
"message": "Too many requests. Please retry later."
}
}Batch update message labels
Applies one label change to up to 50 messages, all or none. Ids that are missing or belong to another inbox are silently omitted; compare count with limit to detect misses. The held label can only be changed by a person in the Crevio inbox.
import { Crevio } from "@crevio/sdk";
const crevio = new Crevio({
apiKey: process.env["CREVIO_API_KEY"] ?? "",
});
async function run() {
const result = await crevio.email.inboxes.messages.batchUpdate({
inboxId: "<id>",
requestBody: {
messageIds: [
"<value>",
],
addLabels: [
"trash",
],
},
});
console.log(result);
}
run();curl --request POST \
--url https://api.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"message_ids": [
"<string>"
],
"add_labels": "<string>",
"remove_labels": "<string>"
}
'import requests
url = "https://api.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update"
payload = {
"message_ids": ["<string>"],
"add_labels": "<string>",
"remove_labels": "<string>"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({message_ids: ['<string>'], add_labels: '<string>', remove_labels: '<string>'})
};
fetch('https://api.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update', 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.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update",
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([
'message_ids' => [
'<string>'
],
'add_labels' => '<string>',
'remove_labels' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update"
payload := strings.NewReader("{\n \"message_ids\": [\n \"<string>\"\n ],\n \"add_labels\": \"<string>\",\n \"remove_labels\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"message_ids\": [\n \"<string>\"\n ],\n \"add_labels\": \"<string>\",\n \"remove_labels\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.crevio.co/v1/email/inboxes/{inbox_id}/messages/batch-update")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"message_ids\": [\n \"<string>\"\n ],\n \"add_labels\": \"<string>\",\n \"remove_labels\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"limit": 123,
"count": 123,
"updates": [
{
"id": "<string>",
"labels": [
"<string>"
]
}
]
}{
"error": {
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request was malformed or contained invalid parameters"
}
}{
"error": {
"type": "invalid_request_error",
"code": "authentication_required",
"message": "You did not provide an API key."
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_missing",
"message": "The requested resource was not found"
}
}{
"error": {
"type": "validation_error",
"code": "validation_failed",
"message": "Email is required",
"errors": {
"email": [
"can't be blank"
]
}
}
}{
"error": {
"type": "invalid_request_error",
"code": "rate_limit_exceeded",
"message": "Too many requests. Please retry later."
}
}Authorizations
API key in the format: Bearer {api_token}
Headers
Makes this write safe to retry: a repeat with the same key replays the first response instead of creating a second resource. Scoped to the account, remembered for 24 hours; reusing a key with a different payload is an error.
255Path Parameters
Inbox id (inbox_…)
Body
At least one of add_labels or remove_labels is required.
Message ids (msg_…), up to 50, no duplicates
50Labels to add. Crevio uses unread (new incoming mail), starred and archived (out of the inbox, still listed) like Gmail; spam and trash hide the mail from lists and search until removed. held can't be changed through the API.
Labels to remove. Removing spam or trash brings the mail back.
Was this page helpful?

