Seller Auto Reply Listings API Reference
REST API reference for Seller Auto Reply: authenticate with your Unique Key, then create, read, update, and delete the Facebook Marketplace listing context that drives your automatic replies.
The Listings API manages the listing context Seller Auto Reply uses when it writes an automatic reply — the name, description, price, and per-listing instructions attached to each of your Facebook Marketplace listings. It is the programmatic equivalent of the listing importer in the dashboard.
- Base URL:
https://www.fbautoreplyai.com - Media type:
application/jsonfor both requests and responses - Scope: you can only read and modify listings that belong to your own account
Authentication
Every request must carry your account's Unique Key in the X-Unique-Key
header:
X-Unique-Key: your_unique_key
Find the key in the dashboard under Your Unique Key — it is the same key you paste into the browser extension. Treat it like a password: it grants full access to your listing data. There is no OAuth flow and no second credential.
| Condition | Status | Body |
|---|---|---|
| Header missing | 401 | { "success": false, "message": "Authentication required" } |
| Key does not match an account | 404 | { "success": false, "message": "Invalid unique key" } |
| Listing belongs to another account | 403 | { "success": false, "message": "Access denied" } |
Response envelope
Every endpoint returns the same envelope:
{
"success": true,
"data": {},
"message": "Human-readable summary"
}
Failures set "success": false, carry a message, and add an errors
array of validation messages when the request body failed schema validation.
| Status | Meaning |
|---|---|
200 | Request succeeded |
400 | Invalid request format — see errors |
401 | Missing X-Unique-Key header |
403 | The listing belongs to another account |
404 | Unknown unique key, or listing not found |
500 | Unexpected server error |
GET /api/listings
Returns your listings, newest page first.
| Query parameter | Type | Default | Notes |
|---|---|---|---|
limit | integer | 50 | Page size |
offset | integer | 0 | Rows to skip |
curl "https://www.fbautoreplyai.com/api/listings?limit=10&offset=0" \
-H "X-Unique-Key: your_unique_key"
{
"success": true,
"data": {
"listings": [
{
"_id": "listing_id",
"userId": "user_id",
"name": "Vintage Camera",
"description": "Classic film camera in excellent condition",
"price": "$150",
"instructions": "Serious buyers only",
"facebookListingId": "123456789",
"listingUrl": "https://www.facebook.com/marketplace/item/123456789/",
"_creationTime": 1234567890000
}
],
"limit": 10,
"offset": 0,
"count": 1
},
"message": "Listings retrieved successfully"
}
PUT /api/listings
Updates one listing. Omitted fields are left unchanged.
curl -X PUT https://www.fbautoreplyai.com/api/listings \
-H "Content-Type: application/json" \
-H "X-Unique-Key: your_unique_key" \
-d '{
"listingId": "listing_id",
"updates": { "name": "Updated Name", "price": "$200" }
}'
updates accepts name, description, instructions, and price,
all optional strings. The response returns
{ "success": true, "data": { "listingId": "listing_id" } }.
DELETE /api/listings
Deletes one listing, identified by query parameter.
curl -X DELETE "https://www.fbautoreplyai.com/api/listings?listingId=listing_id" \
-H "X-Unique-Key: your_unique_key"
POST /api/listings/batch
Imports or updates many listings at once. Listings are matched on
listingUrl, so re-sending the same URL updates the existing row rather than
creating a duplicate. Processing is asynchronous: the response returns as soon
as the import is scheduled.
curl -X POST https://www.fbautoreplyai.com/api/listings/batch \
-H "Content-Type: application/json" \
-H "X-Unique-Key: your_unique_key" \
-d '{
"listings": [
{
"listingUrl": "https://www.facebook.com/marketplace/item/123456789/",
"name": "Vintage Camera",
"description": "Classic film camera in excellent condition",
"instructions": "Serious buyers only",
"price": "$150"
}
]
}'
| Field | Type | Required | Notes |
|---|---|---|---|
listingUrl | string | yes | Must be a facebook.com URL containing /marketplace/item/ |
name | string | no | Defaults to Listing <id> when omitted |
description | string | no | |
instructions | string | no | Per-listing reply guidance |
price | string | no | Free-form, e.g. "$150" |
{
"success": true,
"data": { "importedCount": 1, "importId": "abc123def456" },
"message": "Batch import scheduled successfully"
}
At least one listing is required. Invalid Marketplace URLs are rejected with
400 before anything is scheduled.
POST /api/listings/csv
Identical request body to /api/listings/batch — it exists so that a
spreadsheet export can be replayed field for field. The difference is the
__NULL__ sentinel:
"__NULL__"clears the field.- An omitted field leaves the current value untouched.
curl -X POST https://www.fbautoreplyai.com/api/listings/csv \
-H "Content-Type: application/json" \
-H "X-Unique-Key: your_unique_key" \
-d '{
"listings": [
{
"listingUrl": "https://www.facebook.com/marketplace/item/123456789/",
"name": "Updated Item Name",
"description": "__NULL__",
"price": "$200"
}
]
}'
{
"success": true,
"data": { "processedCount": 1, "importId": "abc123def456" },
"message": "CSV import scheduled successfully"
}
Notes and limits
- Imports run asynchronously. A
200means the work was scheduled, not that every row has landed; re-read the listing withGET /api/listingsto confirm. - Listing identity is the Marketplace item URL. Two rows with the same
listingUrlare the same listing. - Reply volume is governed by your plan, not by this API. See pricing.
The same surface is described machine-readably in the OpenAPI 3.1 document.