Rascador

Using AI

Copy one of these into Claude, ChatGPT, Copilot, or whatever you're building with — they carry enough context for the assistant to write working Rascador integration code without guessing at the API shape.

Base context

Paste this first in a new chat, or keep it in your assistant's system prompt / project instructions, before any of the task prompts below.

text
Rascador is a REST API at https://api.rascador.store. All V1 endpoints are under /v1 and return JSON envelopes: { data, meta } on success, { error: { code, message, retryable } } on failure. Authenticate every request with "Authorization: Bearer <RASCADOR_API_KEY>". Endpoints: GET /v1/me (introspect the key), GET /v1/sources, GET /v1/categories, GET /v1/products, GET /v1/products/{id}, GET /v1/search. Keys are either "test" (stored-data reads only) or "live" (adds live search/live product fetch, counts against quota). Handle 429 rate_limited (retry after error.retry_after_seconds) and 402 quota_exceeded gracefully. GET /v1/search can take 20-90 seconds, so use a client timeout of at least 130 seconds for it.

Task prompts

Build a product search integration

Rascador is a REST API at https://api.rascador.store. All V1 endpoints are under /v1 and return JSON envelopes: { data, meta } on success, { error: { code, message, retryable } } on failure. Authenticate every request with "Authorization: Bearer <RASCADOR_API_KEY>". Endpoints: GET /v1/me (introspect the key), GET /v1/sources, GET /v1/categories, GET /v1/products, GET /v1/products/{id}, GET /v1/search. Keys are either "test" (stored-data reads only) or "live" (adds live search/live product fetch, counts against quota). Handle 429 rate_limited (retry after error.retry_after_seconds) and 402 quota_exceeded gracefully. GET /v1/search can take 20-90 seconds, so use a client timeout of at least 130 seconds for it. Write a function in [my language/framework] that takes a search term and a source ("shein" | "aliexpress" | "amazon" | "backmarket"), calls GET /v1/search, and returns a normalized list of { title, price, image, url } for the top results. Handle the case where the search takes a while (long client timeout) and surface a clear error if the response is an error envelope.

Paginate through stored products

Rascador is a REST API at https://api.rascador.store. All V1 endpoints are under /v1 and return JSON envelopes: { data, meta } on success, { error: { code, message, retryable } } on failure. Authenticate every request with "Authorization: Bearer <RASCADOR_API_KEY>". Endpoints: GET /v1/me (introspect the key), GET /v1/sources, GET /v1/categories, GET /v1/products, GET /v1/products/{id}, GET /v1/search. Keys are either "test" (stored-data reads only) or "live" (adds live search/live product fetch, counts against quota). Handle 429 rate_limited (retry after error.retry_after_seconds) and 402 quota_exceeded gracefully. GET /v1/search can take 20-90 seconds, so use a client timeout of at least 130 seconds for it. Write a script that pages through GET /v1/products for source=shein using limit/offset until meta.pagination shows no more results, collecting every product into one array. Retry on 429 using error.retry_after_seconds, and stop with a clear message on 402 quota_exceeded.

Cache category lookups

Rascador is a REST API at https://api.rascador.store. All V1 endpoints are under /v1 and return JSON envelopes: { data, meta } on success, { error: { code, message, retryable } } on failure. Authenticate every request with "Authorization: Bearer <RASCADOR_API_KEY>". Endpoints: GET /v1/me (introspect the key), GET /v1/sources, GET /v1/categories, GET /v1/products, GET /v1/products/{id}, GET /v1/search. Keys are either "test" (stored-data reads only) or "live" (adds live search/live product fetch, counts against quota). Handle 429 rate_limited (retry after error.retry_after_seconds) and 402 quota_exceeded gracefully. GET /v1/search can take 20-90 seconds, so use a client timeout of at least 130 seconds for it. Write a small caching layer around GET /v1/categories that stores the response for a source in [Redis/SQLite/memory — pick one] for 24 hours before refetching, since the category catalogue changes rarely. Key the cache by source + query params.

Resolve a product from a search hit

Rascador is a REST API at https://api.rascador.store. All V1 endpoints are under /v1 and return JSON envelopes: { data, meta } on success, { error: { code, message, retryable } } on failure. Authenticate every request with "Authorization: Bearer <RASCADOR_API_KEY>". Endpoints: GET /v1/me (introspect the key), GET /v1/sources, GET /v1/categories, GET /v1/products, GET /v1/products/{id}, GET /v1/search. Keys are either "test" (stored-data reads only) or "live" (adds live search/live product fetch, counts against quota). Handle 429 rate_limited (retry after error.retry_after_seconds) and 402 quota_exceeded gracefully. GET /v1/search can take 20-90 seconds, so use a client timeout of at least 130 seconds for it. Write a function that runs GET /v1/search for a query, takes the first hit, and follows its detail_url (GET /v1/products/{id}) to fetch full product details including price and variants. If the product returns 404 product_not_found, fall back to the search hit's own fields instead of failing.

Wrap the client-facing error envelope

Rascador is a REST API at https://api.rascador.store. All V1 endpoints are under /v1 and return JSON envelopes: { data, meta } on success, { error: { code, message, retryable } } on failure. Authenticate every request with "Authorization: Bearer <RASCADOR_API_KEY>". Endpoints: GET /v1/me (introspect the key), GET /v1/sources, GET /v1/categories, GET /v1/products, GET /v1/products/{id}, GET /v1/search. Keys are either "test" (stored-data reads only) or "live" (adds live search/live product fetch, counts against quota). Handle 429 rate_limited (retry after error.retry_after_seconds) and 402 quota_exceeded gracefully. GET /v1/search can take 20-90 seconds, so use a client timeout of at least 130 seconds for it. Write a typed API client wrapper in [my language] that throws a single RascadorApiError with { code, message, retryable, requestId } for any non-2xx response, and a helper isRetryable(error) that callers can use to decide whether to retry.