Alerts API: Getting Started
RedShip Alerts watches every new Reddit post and comment for your keywords and hands you each match, unscored, through webhooks, feeds and this API. It is a separate product from the RedShip App and needs an Alerts plan.
Authentication
Every request carries an API key created from your Alerts dashboard → API. Keys created in the RedShip App belong to an App project and get 403 wrong_product here.
Header
Authorization: Bearer rsp_your_api_key_hereReads (GET) are limited to 60 requests per minute per key. The response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset; a refused call answers 429 with Retry-After.
Base URL
https://redship.io/api/v1Endpoints
/api/v1/keywordsPOST/api/v1/keywordsPATCH/api/v1/keywords/:idDELETE/api/v1/keywords/:idGET/api/v1/alertsGET/api/v1/alerts/:idGET/api/v1/webhooksPOST/api/v1/webhooksDELETE/api/v1/webhooks/:idPOST/api/v1/webhooks/:id/testGET/api/v1/usageThe 60-second version
1. Create keywords
curl -X POST https://redship.io/api/v1/keywords \
-H "Authorization: Bearer rsp_your_key" \
-H "Content-Type: application/json" \
-d '{"keywords":[{"text":"stripe webhook"},{"text":"notion alternative","mode":"proximity"}]}'2. Point a webhook at your endpoint
curl -X POST https://redship.io/api/v1/webhooks \
-H "Authorization: Bearer rsp_your_key" \
-H "Content-Type: application/json" \
-d '{"name":"prod","url":"https://example.com/reddit-alerts"}'3. Or poll
curl "https://redship.io/api/v1/alerts?limit=20" \
-H "Authorization: Bearer rsp_your_key"Errors
All errors are JSON with a stable code:
{ "error": "Your plan allows 10 keywords", "code": "keyword_limit_reached" }| Status | Code | Meaning |
| --- | --- | --- |
| 401 | unauthorized | Missing or invalid key |
| 402 | subscription_required | The Alerts plan is not active |
| 403 | wrong_product | The key belongs to a RedShip App project |
| 403 | keyword_limit_reached | Re-activating a keyword would exceed the plan |
| 404 | not_found | Unknown id, or not yours |
| 422 | invalid_body | A field failed validation |
| 429 | rate_limited | Slow down, see Retry-After |
Daily cap
Each keyword delivers up to 100 matches per UTC day. Beyond that, the overflow is dropped and only counted: it never reaches a webhook, a feed or GET /api/v1/alerts. GET /api/v1/usage shows, per keyword, how many were delivered and how many were held back today, which is how you spot a keyword that is too broad.