API referencePOST

Create website

Add a website or product to monitor across Reddit, Hacker News, X, Bluesky, and Facebook.

POSThttps://ai.redreplier.com/ai-app/api/v1/websites

Add 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 with description: null; set one with PATCH /websites/{id} or POST /websites/analyze-description. Send description: "" 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, or null.
  • 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, or SUSPENDED.
  • createdAt, updatedAt (ISO string | null): Creation and update timestamps in ISO 8601 format, or null.

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, or code: "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" when X-Workspace-Id names a workspace this credential cannot reach, or code: "permission_denied" when your role in the workspace does not hold redreplier.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 in Retry-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"
    }
  ]
}