Public access
Do not send an Authorization header or invent an API key. The documented public endpoints are available without account authentication.
No developer key issuance, customer account API or public MCP endpoint is provided. Internal delivery-worker credentials are not public API credentials.
Identify a real submission
Production inquiry submissions require an Idempotency-Key header containing a UUID v4. Generate one key for each distinct inquiry.
Keep the key and payload unchanged when retrying. Reusing a key for different content returns an idempotency_conflict error.
An idempotency key prevents duplicate submissions. It does not authenticate a person or grant access to private records.
Validate the request body
Send Content-Type: application/json. Required inquiry fields include kind, quantity, location, email, region, currency and consent: true.
Model and variant fields are optional. When supplying a variant, also supply its matching model identifier. Unknown fields are rejected.
Check the Request schema for enumerations and limits. Obtain the buyer's authorization before transmitting contact details or requirements.
Handle limits and errors
Inspect the public headers without authentication:
curl --include https://cardinalsilicon.com/api/v1/catalogRemaining quota and reset time change with usage. Read the values returned for your request rather than copying a fixed example.
Every API call counts against a limit of 120 requests per minute per client. Real inquiries carry an additional five-per-hour limit and are never refused by the per-minute quota.
RateLimit-Policy describes the quota and window. RateLimit reports the remaining quota and reset delay. Compatibility headers remain available.
Production inquiry responses include rate-limit headers. An accepted inquiry reports its hourly counters; a rejected one reports the per-minute quota. Honor Retry-After on HTTP 429 or 503 instead of sending repeated immediate retries.
Errors use a JSON error object with a machine-readable code and a human-readable message. The resolution gives corrective guidance; documentation links to the relevant reference. Branch on the code, not the message text.
| Status | Client action |
|---|---|
| 400 | Check JSON, the idempotency key and any conflicting retry |
| 413 | Reduce the request body |
| 415 | Send JSON with the correct content type |
| 422 | Correct invalid fields or mismatched variant identifiers |
| 429 | Wait for Retry-After before retrying |
| 503 | Keep the original key and retry after the indicated delay |
The exact statuses vary by endpoint. The OpenAPI contract documents each operation separately.
Keep test traffic separate
Use sandbox validation for synthetic payloads. A sandbox result does not prove production email delivery or consume a real inquiry.