Email Feed API Documentation
Complete reference for integrating with the Noesis Email Feed API
Quick Start
Get started quickly with a simple cURL request:
curl -X POST https://email.noesistechnology.com/ \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"phone": "5551234567"
}'The Email Feed API allows you to submit email addresses for validation and processing through our email feed system.
Getting your API Key: Contact your account manager to obtain your API key. You can provide it as a header, query parameter, or in the request body.
Authentication
Authenticate your requests using one of these methods:
Option 1: Header (Recommended)
x-api-key: YOUR_API_KEYOption 2: Query Parameter
?apiKey=YOUR_API_KEYOption 3: Request Body
{
"apiKey": "YOUR_API_KEY",
"email": "john.doe@example.com"
}Security Note: Treat your API keys like passwords. Never expose them in client-side code or public repositories. The header method is recommended as the most secure option.
Endpoint & Request
Base URL
https://email.noesistechnology.comEndpoint
POST /Headers
| Header | Required | Description |
|---|---|---|
Content-Type | Yes | Must be application/json |
x-api-key | Yes* | Your API key (*or use query param / request body) |
POST Request
curl -X POST https://email.noesistechnology.com/ \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"phone": "5551234567",
"zip": "90210",
"state": "CA",
"dob": "1990-01-15",
"subid": "campaign123"
}'GET Request
You can also submit data via query parameters:
curl "https://email.noesistechnology.com/?apiKey=YOUR_API_KEY&email=john.doe@example.com&first_name=John&last_name=Doe"Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Email address to verify (max 254 characters) |
first_name | string | No | First name |
last_name | string | No | Last name |
phone | string | No | Phone number (digits, spaces, dashes, parentheses allowed) |
zip | string | No | ZIP code |
state | string | No | State |
dob | string | No | Date of birth (YYYY-MM-DD) |
subid | string | No | Tracking sub-identifier |
ip | string | No | IP address of the end user |
price | string | No | Price value |
Payload Size: Request body must not exceed 10 KB.
Responses
Success Response
When an email is successfully processed:
200 OK
{
"status": "processed"
}Rejection Response
When an email is rejected during validation:
200 OK
{
"status": "rejected",
"reason": "invalid email"
}Rejection Reasons
| Reason | Description |
|---|---|
invalid request | Email format is invalid or missing |
invalid email | Email address failed verification |
optout | Email address has opted out and cannot receive messages |
duplicate | Email address was already accepted earlier the same day (US Eastern). See Duplicate Submissions |
unsupported domain | The email domain is not accepted by the feed |
capacity limit reached | The daily limit for the email domain has been reached. It resets at midnight US Eastern |
Duplicate Submissions
Each email address is accepted once per calendar day (US Eastern time). If the same address is submitted again that day, from any source, the request is not processed again and returns status rejected with reason duplicate:
200 OK
{
"status": "rejected",
"reason": "duplicate"
}- Only submissions that returned
processedcount. An address that was rejected for any other reason can be submitted again. - The window is the calendar day, not a rolling 24 hours. It resets at midnight US Eastern.
- A duplicate rejection is final for that day. Do not retry it.
Error Responses
Bad Request
400 Bad Request
{
"error": "Bad Request",
"message": "Invalid request."
}Authentication Error
401 Unauthorized
{
"error": "Unauthorized"
}Method Not Allowed
405 Method Not Allowed
{
"error": "Method Not Allowed"
}Internal Server Error
500 Internal Server Error
{
"error": "Internal Server Error",
"message": "An unexpected error occurred."
}Error Handling & Retry
Retry Guidelines
| Error Type | Should Retry? | Notes |
|---|---|---|
401 Unauthorized | No | Check your API key |
400 Bad Request | No | Fix the request data and resubmit |
200 (rejected) | No | See Rejection Reasons. A duplicate means the address was already accepted today |
405 Method Not Allowed | No | Use GET or POST |
500 Internal Server Error | Yes | Wait 2-5 seconds, then retry once |
Important: Always check the
status field in the response body to determine the outcome. Do not rely solely on the HTTP status code.Status Codes
| Status Code | Description |
|---|---|
| 200 | OK - Email processed or rejected (check status field in response) |
| 400 | Bad Request - Invalid JSON, oversized payload, or malformed data |
| 401 | Unauthorized - Invalid or missing API key |
| 405 | Method Not Allowed - Use GET or POST only |
| 500 | Internal Server Error - System error, safe to retry |
Rate Limits
Contact your account manager for rate limit information specific to your API key.
Support
For assistance with the API:
- Include the full request details in all support inquiries
- Contact your account representative
- Telegram: @davidacimovic
Changelog
| Version | Date | Changes |
|---|---|---|
1.1.0 | 2026-09-11 | Duplicate submissions now return status: rejected with reason: duplicate (previously processed). Documented the unsupported domain and capacity limit reached rejection reasons. |
1.0.0 | 2025-02-19 | Initial release - email feed and processing |