Skip to main content
POST
/
inbound
/
messages
/
{id}
/
reply
curl --request POST \
  --url https://api.autosend.com/v1/inbound/messages/60d5ec49f1b2c72d9c8b1234/reply \
  --header 'Authorization: Bearer as_your-api-key' \
  --header 'Content-Type: application/json' \
  --data '{
  "from": { "email": "[email protected]", "name": "Support Team" },
  "subject": "Re: Question about my order",
  "html": "<p>Hi Jane, your order #4821 shipped today.</p>",
  "text": "Hi Jane, your order #4821 shipped today."
}'
import requests

url = "https://api.autosend.com/v1/inbound/messages/60d5ec49f1b2c72d9c8b1234/reply"

headers = {
    "Authorization": "Bearer as_your-api-key",
    "Content-Type": "application/json"
}

payload = {
    "from": {"email": "[email protected]", "name": "Support Team"},
    "subject": "Re: Question about my order",
    "html": "<p>Hi Jane, your order #4821 shipped today.</p>",
    "text": "Hi Jane, your order #4821 shipped today."
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
fetch('https://api.autosend.com/v1/inbound/messages/60d5ec49f1b2c72d9c8b1234/reply', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer as_your-api-key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    from: { email: '[email protected]', name: 'Support Team' },
    subject: 'Re: Question about my order',
    html: '<p>Hi Jane, your order #4821 shipped today.</p>',
    text: 'Hi Jane, your order #4821 shipped today.'
  })
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
<?php

$messageId = '60d5ec49f1b2c72d9c8b1234';
$url = "https://api.autosend.com/v1/inbound/messages/{$messageId}/reply";

$data = [
    'from' => ['email' => '[email protected]', 'name' => 'Support Team'],
    'subject' => 'Re: Question about my order',
    'html' => '<p>Hi Jane, your order #4821 shipped today.</p>',
    'text' => 'Hi Jane, your order #4821 shipped today.'
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer as_your-api-key',
    'Content-Type: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

func main() {
    url := "https://api.autosend.com/v1/inbound/messages/60d5ec49f1b2c72d9c8b1234/reply"

    payload := map[string]interface{}{
        "from":    map[string]string{"email": "[email protected]", "name": "Support Team"},
        "subject": "Re: Question about my order",
        "html":    "<p>Hi Jane, your order #4821 shipped today.</p>",
        "text":    "Hi Jane, your order #4821 shipped today.",
    }

    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "Bearer as_your-api-key")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public class ReplyToMessage {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://api.autosend.com/v1/inbound/messages/60d5ec49f1b2c72d9c8b1234/reply");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();

            con.setRequestMethod("POST");
            con.setRequestProperty("Authorization", "Bearer as_your-api-key");
            con.setRequestProperty("Content-Type", "application/json");
            con.setDoOutput(true);

            String jsonInputString = "{\n" +
                "  \"from\": { \"email\": \"[email protected]\", \"name\": \"Support Team\" },\n" +
                "  \"subject\": \"Re: Question about my order\",\n" +
                "  \"html\": \"<p>Hi Jane, your order #4821 shipped today.</p>\",\n" +
                "  \"text\": \"Hi Jane, your order #4821 shipped today.\"\n" +
                "}";

            try (OutputStream os = con.getOutputStream()) {
                byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
                os.write(input, 0, input.length);
            }

            int status = con.getResponseCode();
            System.out.println("Response Status: " + status);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
require 'net/http'
require 'json'
require 'uri'

uri = URI('https://api.autosend.com/v1/inbound/messages/60d5ec49f1b2c72d9c8b1234/reply')

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.path)
request['Authorization'] = 'Bearer as_your-api-key'
request['Content-Type'] = 'application/json'

request.body = {
  from: { email: '[email protected]', name: 'Support Team' },
  subject: 'Re: Question about my order',
  html: '<p>Hi Jane, your order #4821 shipped today.</p>',
  text: 'Hi Jane, your order #4821 shipped today.'
}.to_json

response = http.request(request)
puts response.body
{
  "success": true,
  "message": "Reply queued",
  "data": {
    "emailId": "0102018f-0000-0000-0000-000000000000",
    "message": "Email queued successfully.",
    "status": "QUEUED",
    "totalRecipients": 1
  }
}
This endpoint uses a standard project API key (AS_ prefix). The reply is threaded into the original conversation (via In-Reply-To and References) and queued through the standard sending pipeline. The response returns 202 Accepted.
The from.email domain must be a verified sending domain on the project.
curl --request POST \
  --url https://api.autosend.com/v1/inbound/messages/60d5ec49f1b2c72d9c8b1234/reply \
  --header 'Authorization: Bearer as_your-api-key' \
  --header 'Content-Type: application/json' \
  --data '{
  "from": { "email": "[email protected]", "name": "Support Team" },
  "subject": "Re: Question about my order",
  "html": "<p>Hi Jane, your order #4821 shipped today.</p>",
  "text": "Hi Jane, your order #4821 shipped today."
}'
import requests

url = "https://api.autosend.com/v1/inbound/messages/60d5ec49f1b2c72d9c8b1234/reply"

headers = {
    "Authorization": "Bearer as_your-api-key",
    "Content-Type": "application/json"
}

payload = {
    "from": {"email": "[email protected]", "name": "Support Team"},
    "subject": "Re: Question about my order",
    "html": "<p>Hi Jane, your order #4821 shipped today.</p>",
    "text": "Hi Jane, your order #4821 shipped today."
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
fetch('https://api.autosend.com/v1/inbound/messages/60d5ec49f1b2c72d9c8b1234/reply', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer as_your-api-key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    from: { email: '[email protected]', name: 'Support Team' },
    subject: 'Re: Question about my order',
    html: '<p>Hi Jane, your order #4821 shipped today.</p>',
    text: 'Hi Jane, your order #4821 shipped today.'
  })
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
<?php

$messageId = '60d5ec49f1b2c72d9c8b1234';
$url = "https://api.autosend.com/v1/inbound/messages/{$messageId}/reply";

$data = [
    'from' => ['email' => '[email protected]', 'name' => 'Support Team'],
    'subject' => 'Re: Question about my order',
    'html' => '<p>Hi Jane, your order #4821 shipped today.</p>',
    'text' => 'Hi Jane, your order #4821 shipped today.'
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer as_your-api-key',
    'Content-Type: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

func main() {
    url := "https://api.autosend.com/v1/inbound/messages/60d5ec49f1b2c72d9c8b1234/reply"

    payload := map[string]interface{}{
        "from":    map[string]string{"email": "[email protected]", "name": "Support Team"},
        "subject": "Re: Question about my order",
        "html":    "<p>Hi Jane, your order #4821 shipped today.</p>",
        "text":    "Hi Jane, your order #4821 shipped today.",
    }

    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "Bearer as_your-api-key")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public class ReplyToMessage {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://api.autosend.com/v1/inbound/messages/60d5ec49f1b2c72d9c8b1234/reply");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();

            con.setRequestMethod("POST");
            con.setRequestProperty("Authorization", "Bearer as_your-api-key");
            con.setRequestProperty("Content-Type", "application/json");
            con.setDoOutput(true);

            String jsonInputString = "{\n" +
                "  \"from\": { \"email\": \"[email protected]\", \"name\": \"Support Team\" },\n" +
                "  \"subject\": \"Re: Question about my order\",\n" +
                "  \"html\": \"<p>Hi Jane, your order #4821 shipped today.</p>\",\n" +
                "  \"text\": \"Hi Jane, your order #4821 shipped today.\"\n" +
                "}";

            try (OutputStream os = con.getOutputStream()) {
                byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
                os.write(input, 0, input.length);
            }

            int status = con.getResponseCode();
            System.out.println("Response Status: " + status);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
require 'net/http'
require 'json'
require 'uri'

uri = URI('https://api.autosend.com/v1/inbound/messages/60d5ec49f1b2c72d9c8b1234/reply')

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.path)
request['Authorization'] = 'Bearer as_your-api-key'
request['Content-Type'] = 'application/json'

request.body = {
  from: { email: '[email protected]', name: 'Support Team' },
  subject: 'Re: Question about my order',
  html: '<p>Hi Jane, your order #4821 shipped today.</p>',
  text: 'Hi Jane, your order #4821 shipped today.'
}.to_json

response = http.request(request)
puts response.body
{
  "success": true,
  "message": "Reply queued",
  "data": {
    "emailId": "0102018f-0000-0000-0000-000000000000",
    "message": "Email queued successfully.",
    "status": "QUEUED",
    "totalRecipients": 1
  }
}

Authorizations

Authorizations
string | header
required
Project API key header of the form Bearer as_<key>. You can also pass the key via the x-api-key header.

Path Parameters

id
string
required
The unique identifier of the inbound message to reply to. The message must belong to the authenticated project.Example: "60d5ec49f1b2c72d9c8b1234"

Body

from
object
required
The sender address for the reply. The email’s domain must be a verified sending domain on the project.
subject
string
Subject line for the reply. When omitted, defaults to the original subject prefixed with Re: (no double prefixing).Minimum length: 1Maximum length: 998Example: "Re: Question about my order"
html
string
HTML body of the reply.
text
string
Plain-text body of the reply.
cc
object[]
CC recipients. Each entry has a required email and optional name.Maximum items: 50
bcc
object[]
BCC recipients. Each entry has a required email and optional name.Maximum items: 50
attachments
object[]
Attachments to include on the reply. Provide each attachment either inline (base64 content) or by fileUrl.Maximum items: 20

Response

Reply queued successfully (202)
success
boolean
Indicates if the request was successfulExample: true
message
string
Confirmation messageExample: "Reply queued"
data
object
Result of queuing the reply through the sending pipeline.

Error Responses

400 - From address required
object
Returned when from.email is missing.
{
  "success": false,
  "error": {
    "message": "A `from` address is required to reply"
  }
}
400 - From domain not verified
object
Returned when the from domain is not a verified sending domain on the project.
{
  "success": false,
  "error": {
    "message": "Reply `from` address must use the same domain that received the message"
  }
}
404 - Message not found
object
Returned when the inbound message does not exist or does not belong to the authenticated project, or when it has no usable reply target address.
{
  "success": false,
  "error": {
    "message": "Inbound email not found"
  }
}