View as Markdown

Environments and sandboxes

There is no separate test API. You test in a sandbox: a company of its own, linked to yours. Its keys start with exa_test_. Your real company's keys start with exa_live_. The API, the SDK and your code are the same in both, so going live is swapping the key.

Make a sandbox

An admin opens Settings → Developer → Sandboxes → New sandbox and names it (1 to 100 characters). Open switches into it. In the company switcher a sandbox has a Sandbox badge.

In the sandbox, make an app and a key as usual (see Apps and keys). An app that belongs to a sandbox gets exa_test_ keys.

How a sandbox differs

AI work in a sandbox

Takeoffs and file reads in a sandbox return results copied from our sample project, at no charge. They are marked "sample": true on the takeoff, on each of its pages and in the assessment.completed webhook. A takeoff you cancel in a sandbox carries "sample": true too.

Estimates, bids, element search and chat answer with samples too, at no charge. An estimate or bid made in a sandbox carries "sample": true, in the response and on the saved document. Other AI answers come from the call's own answer format, or read "This is a sample answer from a sandbox company.". Image generation is refused.

Delete a sandbox

Delete on the sandbox's row closes it: every app in it loses access, and its data is erased after the usual purge window. Calls with its keys then get 401.

Going live

  1. In your real company, make the app and a key the same way. The key starts with exa_live_.
  2. Swap EXAYARD_API_KEY (or whatever holds the key) to the new key.
  3. Register your webhook endpoints in the real company too. Each endpoint has its own signing secret.

Your code needs no other change: a key implies its own company.