API referencePOST
Create website
Add a website or product to monitor across Reddit, Hacker News, X, Bluesky, and Facebook.
POST
https://ai.redreplier.com/ai-app/api/v1/websitesAdd a website or product to monitor across Reddit, Hacker News, X, Bluesky, and Facebook.
Bearer Token (RedReplier API token)
Parameters
This endpoint does not take path or query parameters.
Request body
url(string, URL, required): Website URL.name(string, optional): Display name.keywords(string[], optional): Initial keyword values; each value can be up to 255 characters.description(string, optional, max 5000): Manual website description. When omitted, RedReplier scrapes the URL and writes one, using one AI generation from the plan quota. If the scrape fails or the quota is exhausted the website is still created withdescription: null; set one withPATCH /websites/{id}orPOST /websites/analyze-description. Senddescription: ""to skip the scrape and the AI analysis: no generation is used and the website starts without a description.
Response
Returns one public Website object.
Website object
id(string): Website UUID.accountGroupId(string): Account group resolved from the token.domain(string): Normalized website domain.url(string): Website URL.name(string | null): Display name.description(string | null): Context used for relevance scoring.createdAt, updatedAt(ISO string | null): Creation and update timestamps in ISO 8601 format, ornull.keywords(Keyword[]): Keyword objects for this website.
Keyword object
id(string): Keyword UUID.websiteId(string): Parent website UUID.value(string): Keyword text, up to 255 characters.status(string):PENDING,ACTIVE,DISABLED, orSUSPENDED.createdAt, updatedAt(ISO string | null): Creation and update timestamps in ISO 8601 format, ornull.
Notes
Initial keywords are stored as PENDING. Those that fit the plan become ACTIVE on the next GET /websites or POST /websites/{websiteId}/keywords call; the rest stay PENDING until the plan is upgraded in the RedReplier app. A domain already monitored in this workspace returns 400, and so does a plan with no website slot left. Re-adding a deleted domain restores that website.
Errors
400 Bad Request: Invalid input, URL, UUID, enum, query parameter, or body.401 Unauthorized: Missing or invalid Bearer token, orcode: "token_issuer_lost_access"when the person who created the API key was deactivated or left the workspace.403 Forbidden:code: "subscription_required"when the workspace plan does not include API access,code: "workspace_access_denied"whenX-Workspace-Idnames a workspace this credential cannot reach, orcode: "permission_denied"when your role in the workspace does not holdredreplier.write(Admin and Editor hold it).404 Not Found: The resource does not exist for the token account.429 Too Many Requests: Rate limit exceeded. Wait the seconds inRetry-After.500 Internal Server Error: Unexpected server error.
Example request (curl)
curl --request POST \
--url https://ai.redreplier.com/ai-app/api/v1/websites \
--header 'Authorization: Bearer redreplier_test_1234567890' \
--header 'Content-Type: application/json' \
--data '{"url": "https://acmecrm.io","name": "Acme CRM","keywords":["agency CRM"]}'201
{
"id": "9b0f2b8d-4a76-4f59-9f0b-6b4b6f6c2a10",
"accountGroupId": "acct_7dK9pQ2",
"domain": "acmecrm.io",
"url": "https://acmecrm.io",
"name": "Acme CRM",
"description": "CRM for small agencies that need pipeline tracking and client follow-up reminders.",
"createdAt": "2026-05-22T10:15:30.000Z",
"updatedAt": "2026-05-29T14:02:11.000Z",
"keywords": [
{
"id": "73a3c9b6-3e5f-4a53-a2c6-70c5ef7f2f6d",
"websiteId": "9b0f2b8d-4a76-4f59-9f0b-6b4b6f6c2a10",
"value": "agency CRM",
"status": "ACTIVE",
"createdAt": "2026-05-22T10:16:00.000Z",
"updatedAt": "2026-05-29T14:02:11.000Z"
}
]
}