Environments
The difference between sandbox and live: separate keys, webhook URLs and data, one base URL, and what sandbox can't do yet.
Gravv has two environments, sandbox and live. Each environment has its own API key, its own webhook URL and secret, and its own data.
Use the sandbox environment to test your integration with Gravv. When the integration works as expected, switch to live.
Both environments share the same base URL:
https://api.gravv.xyz/v1
You don't change the URL to switch environments. The API key you send decides the environment. A key that starts with grvSec_sandbox_ reaches sandbox, and your live key reaches live.
Data does not cross between environments. A customer, account or transfer created with your sandbox key does not exist in live, so its id returns not found there. The same is true the other way round. Gravv sends each environment's webhook events to that environment's URL, signed with that environment's secret.
Switching between environments
Use the Environment toggle in your Dashboard to switch between sandbox and live:

Known sandbox issues
These parts of sandbox don't behave like live today:
| Area | What happens in sandbox |
|---|---|
| KYC | Verification does not complete. A new customer's basic KYC stays pending, and Gravv sends no outcome webhook. You can't complete steps that need verified KYC, such as opening an account, with a new customer |
| Document uploads | Sandbox rejects requests of about 600 KB or more with HTTP 413 the uploaded file is too large — the maximum is 10MB. Keep every file under 500 KB, and the files of one request under 500 KB together. Live takes larger files. See upload sizes |
| FX | Sandbox has no OTC rates, so every quote returns quote currency pair is not supported |
| Card withdrawal | You can't withdraw from a newly issued card yet |
_simulate_web3 |
Do not send it. With success, the transfer stays held and never completes. failed leaves it pending with no event. See Sandbox |