REST API overview

The /v1 resources and endpoints, authentication, pagination, error codes and request IDs, with a call example you can run.

Last updated 2026-10-23

The REST API lives at https://www.renewsell.com/v1. It authenticates with an API key and speaks JSON in both directions. This page lists every resource and endpoint, then the rules for pagination, errors and idempotency.

Authentication

Send an API key with every request; either header works:

curl "https://www.renewsell.com/v1/credits" \
  -H "Authorization: Bearer $RENEWSELL_API_KEY"
curl "https://www.renewsell.com/v1/credits" \
  -H "x-api-key: $RENEWSELL_API_KEY"

Create keys on the API keys page, described in API keys. A key is 64 letters with no fixed prefix. A missing key returns 401; a key without the needed scope returns 403.

Resources and endpoints

ResourceEndpoints
TargetsGET, POST /v1/targets; GET, PATCH, DELETE /v1/targets/{target}
Start and expandPOST /v1/targets/{target}/start, /cancel, /expand; GET, PATCH /v1/targets/{target}/sourcing
ItemsGET /v1/targets/{target}/items; GET, DELETE /v1/targets/{target}/items/{id}; POST /v1/targets/{target}/items/{item}/enrichments/{enrichment}/retry
SearchesPOST /v1/targets/{target}/searches; GET /v1/targets/{target}/searches/{id}; POST /v1/targets/{target}/searches/{id}/cancel
Enrichment columnsPOST, GET /v1/targets/{target}/enrichments; GET, PATCH, DELETE /v1/targets/{target}/enrichments/{id}; POST …/{id}/cancel, …/{id}/retry
EventsGET /v1/events, GET /v1/events/{id}
WebhooksPOST, GET /v1/webhooks; GET, PATCH, DELETE /v1/webhooks/{id}; GET /v1/webhooks/{id}/attempts
MonitorsPOST, GET /v1/monitors; GET, PATCH, DELETE /v1/monitors/{id}; GET /v1/monitors/{monitor}/runs, /runs/{id}
ImportsPOST, GET /v1/imports; GET, PATCH, DELETE /v1/imports/{id}; PUT /v1/imports/{id}/upload?token=…
CreditsGET /v1/credits
JobsGET /v1/jobs/{id}; POST /v1/jobs/{id}/cancel
Connected accountsGET /v1/connect/accounts
Customs dataPOST /v1/customs/{operation}; the seven operations are in Customs data

A few conventions:

  • {target} accepts a Target id or the externalId given at creation.
  • Ids are opaque strings; do not derive meaning from their prefix.
  • GET /v1/targets/{target}?expand=items embeds the first 100 items in the response.
  • POST /v1/targets starts a search immediately by default. Send "start": false to create a draft, then start it with POST /v1/targets/{target}/start.
  • For imports, POST /v1/imports returns an uploadUrl; PUT the CSV there. The upload uses a signed token and needs no API key.
  • GET /v1/credits returns the plan, interval, available credits, reserved credits, monthly allowance and usage in the current period.

Pagination

Every list returns the same shape:

{
  "data": [],
  "hasMore": false,
  "nextCursor": null
}

Page with limit and cursor. Defaults and ceilings:

ListDefaultMaximum
Targets25100
Items20100
Events25200
Webhooks, monitors, imports, delivery attempts25200

nextCursor is opaque and only valid for the same list, account and filters; do not reuse it across lists.

Errors

Failures return an HTTP status and one shape:

{ "error": { "code": "not_found", "message": "Resource not found" } }
StatuscodeMeaning
400invalid_requestBad parameters or body
401unauthorizedMissing or invalid key
402insufficient_creditsNot enough credits
403forbiddenThe key lacks the scope this operation needs
404not_foundNo such resource, or it belongs to another account
409conflictThe current state does not allow this
429rate_limitedToo many requests; wait for Retry-After
500internal_errorServer error
502upstream codeThe external data source failed
503provider_unavailable, service_unavailableThe capability is currently unavailable
504timeoutThe request timed out

Every response carries X-Request-Id. Include it when reporting a problem so the exact request can be found.

Idempotency

Billable customs operations require an Idempotency-Key header; retrying with the same key does not charge twice. Other writes have no idempotency key, so do not blindly retry after a timeout. Read the resource first to see whether the write landed.

Example

export RENEWSELL_API_KEY="your-api-key"

curl "https://www.renewsell.com/v1/targets?limit=10" \
  -H "Authorization: Bearer $RENEWSELL_API_KEY"

An excerpt of the response:

{
  "data": [
    {
      "id": "…",
      "object": "target",
      "status": "idle",
      "title": "German outdoor furniture importers",
      "createdAt": "2026-10-20T09:15:00.000Z"
    }
  ],
  "hasMore": false,
  "nextCursor": null
}

Related pages