REST API
The canonical HTTP contract for Venym Search. No SDK dependency is required.
https://search.venym.io/api.Bearer API Keys
# Every paid request uses this header
Authorization: Bearer VENYM_SEARCH_API_KEYAPI routes are explicitly separate from Clerk browser authentication. Send the Venym API key exactly as Authorization: Bearer <your-api-key>.
Public Contract
https://search.venym.io/api/v1/searchReal-time web search with optional automatic scraping. Base charge: 2 credits.
https://search.venym.io/api/v1/scrapeScrape one URL and return structured primary_content. Base charge: 5 credits.
https://search.venym.io/api/v1/validateValidate a key and return status, plan, and credits without consuming credits.
https://search.venym.io/api/healthPublic application health. No API key required.
Search and Scrape
curl -X POST https://search.venym.io/api/v1/search \
-H "Authorization: Bearer $VENYM_SEARCH_API_KEY" \
-H "Content-Type: application/json" \
--data '{"query":"latest AI developments","max_results":5}'curl -X POST https://search.venym.io/api/v1/scrape \
-H "Authorization: Bearer $VENYM_SEARCH_API_KEY" \
-H "Content-Type: application/json" \
--data '{"url":"https://example.com","extract_options":["title","text"]}'curl https://search.venym.io/api/v1/validate \
-H "Authorization: Bearer $VENYM_SEARCH_API_KEY"Success Shape
{
"query": "latest AI developments",
"search_results": [],
"scraped_content": [],
"credits_used": 2,
"remaining_credits": 4998,
"results_count": 0,
"scraped_count": 0
}Search and Scrape return credits_used and remaining_credits. Scrape returns its page data under primary_content.
Stable Error Shape
{
"error": "Invalid or missing API key",
"code": "UNAUTHORIZED",
"message": "Invalid or missing API key",
"request_id": "req_abc123",
"timestamp": "2026-08-29T12:00:00.000Z",
"documentation_url": "https://search.venym.io/docs/errors"
}Rate-Limit Metadata
X-RateLimit-LimitMaximum requests in the current endpoint window.
X-RateLimit-RemainingRequests remaining in the current window.
X-RateLimit-ResetUnix timestamp when the window resets.
Retry-AfterSeconds to wait on a 429 response.
Current endpoint windows are 60 requests/minute for Search and 10 requests/minute for Scrape, tracked per client IP on the active service instance.
Preserve X-Request-ID and the JSON request_id whenever you report a failed request. Never log the API key.