A validation-only endpoint
Send synthetic JSON to POST /api/v1/sandbox/requests. No API key is required.
The sandbox checks request fields and model-to-variant relationships. It does not create a production request or return a real request identifier.
curl --fail-with-body 'https://cardinalsilicon.com/api/v1/sandbox/requests' \
-H 'Content-Type: application/json' \
--data '{
"kind": "buy",
"modelId": "h100",
"variantId": "h100-sxm5-80gb",
"quantity": 2,
"location": "Example city, Germany",
"email": "buyer@example.com",
"notes": "Synthetic integration test. No sourcing action requested.",
"region": "EU",
"currency": "EUR",
"consent": true
}'
Interpret the result correctly
HTTP 200 means the submitted payload passed validation. It does not mean a quote request was received.
The response contains status: validated, sandbox: true and the normalized request. Read the sandbox response schema for exact types. Correct validation errors before moving to production.
The sandbox does not require an idempotency key. Use a fresh UUID v4 for every distinct production inquiry; retain it for retries.
What this test does not prove
- Database storage or duplicate suppression for a real inquiry
- Email delivery or an inbox receipt
- Production rate-limit behavior or request-service readiness
- Stock, price, server compatibility or a supplier's response
Use GET /api/v1/health to inspect request-service readiness. A readiness response is not an end-to-end delivery test.
Move to production deliberately
Obtain the buyer's authorization and replace all synthetic details. Send the payload to POST /api/v1/requests with a new idempotency key.
Production returns HTTP 202 and a request identifier when it accepts an inquiry. Save that identifier for follow-up.
Do not change the sandbox URL to production during automated test runs. Keep the endpoint selection explicit in your application configuration.
Read the request controls before implementing production retries.