Email Reply API Specification & Integration Reference
Public API Page

POST Email Reply API

/api/v1/ai/email-reply

Generate intelligent, context-aware email replies based on the original email and optional analysis results. Customize the response with different tones, writing styles, languages, and business instructions to produce professional, human-like replies.

Base Billing 1 Credit
Target Latency < 150ms (p50)
Client Timeout 5.0s (recommended)
SLA Guarantee 99.9% Uptime
JSON Contract Deterministic v1

Architecture Role & AI Definition

Email Reply API provides low-latency, deterministic REST execution for production engineering workflows. It processes structured payloads with strict schema validation, returns uniform JSON envelopes, and is secured via SHA-256 API key authentication with atomic credit pre-authorization locks.

Production Reliability Guidelines

1. Strict Timeout Windows

Configure a hard client timeout of 5 to 8 seconds. If network latency spikes, cancel connection to avoid holding open sockets in worker pools.

2. Exponential Backoff with Jitter

Upon receiving 429 Rate Limit or transient 5xx, pause with exponential backoff:
wait = min(max_backoff, base * 2^attempt + jitter).

3. Atomic Pre-Auth Locks

RSFlowHub acquires an atomic lock verifying base credits before model invocation. If validation fails, zero credits are deducted.

Request Body Parameters

Field Type Required Description
email_text string Required The raw text of the incoming email (Max: 20,000 characters).
context string Optional Optional general context or instructions for drafting the reply.
tone string Optional Tone of the reply (e.g., "professional", "empathetic", "casual").
sender_name string Optional Name of the person who sent the email.
recipient_name string Optional Name of your team or agent.
knowledge_base array of strings Optional Array of factual sentences the AI must use to answer questions (e.g., ["Business hours are 9-5", "No refunds after 30 days"]).
rules array of strings Optional Strict rules for the AI to follow (e.g., ["Never promise a refund", "Always escalate chargebacks"]).
model string Optional Optional AI model to use.

Example Request (Autopilot Mode)

Pass specific rules and a knowledge base to strictly constrain the AI's behavior, ensuring it never hallucinates dangerous promises to customers.

JSON Request
{
  "email_text": "Hi, I was charged $49 but I cancelled my account yesterday. Please refund me immediately or I will dispute the charge.",
  "sender_name": "John Doe",
  "recipient_name": "Support Team",
  "knowledge_base": [
    "Refunds are only issued if requested within 14 days of the charge.",
    "Standard response time is 24 hours."
  ],
  "rules": [
    "Never promise a refund if you are unsure.",
    "Be empathetic but firm.",
    "If the user threatens a chargeback, escalate to a human."
  ],
  "tone": "professional"
}
curl-trigger.sh cURL
curl -X POST https://rsflowhub.com/api/v1/ai/email-reply \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email_text": "Hi, I was charged $49 but I cancelled my account yesterday. Please refund me immediately or I will dispute the charge.",
    "knowledge_base": ["Refunds are only issued if requested within 14 days of the charge."],
    "rules": ["If the user threatens a chargeback, escalate to a human."],
    "tone": "professional"
  }'

Example Response

The API safely structures the response. In this example, because the customer threatened a chargeback, the AI followed the rule and flagged requires_human_escalation: true so your automation platform knows to pause the email.

response.json JSON Response
200 OK 118ms
{
  "success": true,
  "data": {
    "result": {
      "reply_text": "Hi John, Thank you for reaching out to the Support Team. I understand you are frustrated about the recent $49 charge after cancelling your account. I have escalated this ticket to a billing specialist who will review your account and get back to you within 24 hours.",
      "confidence_score": 0.85,
      "requires_human_escalation": true,
      "escalation_reason": "Customer threatened a chargeback dispute.",
      "triggered_actions": ["escalate_to_billing_specialist"]
    }
  },
  "meta": {
    "credits_used": 2,
    "credits_remaining": 988
  }
}

API Request Example

Use the cURL snippet below to test the endpoint.

curl-trigger.sh cURL
curl -X POST 'https://rsflowhub.com/api/v1/ai/email-reply' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "email_text": "Hi, I need help logging in.",
    "knowledge_base": [
        "Password resets can be done at /reset"
    ],
    "rules": [
        "Keep it short"
    ]
}'

Common Failure Modes & Troubleshooting Matrix

HTTP Code Error Code Root Cause Recommended Remediation
400 bad_request Malformed JSON syntax or missing required top-level parameters. Validate JSON payload with Content-Type: application/json and ensure all required fields are present.
401 unauthorized Missing, revoked, or incorrectly formatted x-api-key header. Verify API key exists in Dashboard → API Keys and pass in x-api-key or Authorization: Bearer.
402 insufficient_credits Account credit balance is lower than the base required credits (2 credits). Top up credits in billing settings or enable auto-recharge to prevent pipeline interruption.
422 validation_error Input failed parameter constraints (e.g., character length exceeded or invalid array types). Review parameters table above and adjust payload length, types, or structure accordingly.
429 rate_limit_exceeded Concurrency limit (60 requests/minute default) reached for this endpoint key. Back off and retry using the timestamp in Retry-After response header, or batch requests.

Technical Q&A (FAQ)

We recommend setting a client timeout of 5 to 8 seconds. While average latency is under 150ms, large input payloads or complex reasoning models may require additional processing time.

RSFlowHub uses an atomic pre-flight check. Before processing, the gateway validates that your wallet has at least 2 base credits. If the request fails validation (422) or is malformed (400), no credits are charged.

When a 429 is received, your application should respect the 'Retry-After' header and use an exponential backoff retry policy with randomized jitter to prevent thundering herd problems.

Every successful response returns { "success": true, "data": { ... }, "meta": { "credits_used": int, "credits_remaining": int } }.

Ready to build?

Create your free account and make your first API call in minutes.