API Modes

The Arc API can be used in two different modes, differentiated by the API keys you use to send your request - sandboxed or live.

Users who sign up for the Arc API are automatically granted sandboxed API keys and can begin working with the API immediately. The sandboxed API mode should be used when developing and testing your applications. Some API features and endpoints intended to make development easier are only supported in the sandboxed API mode - like test credentials and triggering specific webhooks. live API keys are only granted to users who have signed up for a paid plan through the Arc Dashboard.

All of the main resources in the Arc API have a sandboxed boolean field on them to help you understand which API mode you are working in. You do not need to worry about populating this field; we will always set this field for you according to which set of API keys you sent your request with. Only sandboxed API keys can interact with resources where sandboxed is true and only live API keys can interact with resources where sandboxed is false.

Test Utility Credentials

You may want to test the Arc API without using real customer credentials. To do so you may use test credentials to access dynamically generated mock data from any zip code or utility. Note that this functionality only works when making requests using the sandboxed API mode.

Please note, although Spark is available in several utilities, for test credentials we have limited the feature availability to the PG&E area. Therefore, if you wish to test Spark functionality with test credentials, please use use a PG&E zip code (e.g. 94609) when going through Connect.

The following credentials will provide different utility account scenarios to test with.

  • If the specified utility uses email addresses as usernames, simply append @any-domain.com to the username.
  • If you have already created one of the test users below in your sandbox, you can always append any numbers to the end of the username to replicate the same scenarios (ex: ARC_TEST_R_SINGLE_ELECT123)
  • If you are testing ConEd, see the special section Testing Consolidated Edison
Username / EmailAccount configurationUtility statements available?
ARC_TEST_R_SINGLE_ELEC1 active electric accountYes
ARC_TEST_R_SINGLE_ELEC_MULTI_METER1 active electric account with multiple electric metersYes
ARC_TEST_R_MULTI_ELEC3 active electric accounts, each with a different tariff when PG&E is specified as the utilityYes
ARC_TEST_R_SINGLE_GAS1 active gas accountNo
ARC_TEST_R_SINGLE_ELEC_SINGLE_GAS1 active electric account and 1 active gas accountNo
ARC_TEST_R_SINGLE_ELEC_GAS1 active electric and gas accountYes
ARC_TEST_R_SINGLE_COMBINED_MULTI_METER1 active electric and gas account with one electric meter and one gas meterElectric: Yes
Gas: Yes
ARC_TEST_R_CLOSED1 closed electric accountNo
ARC_TEST_R_NO_ACCOUNTSNo utility accountsNo
ARC_TEST_R_NEW_ELEC1 active electric accountNo
ARC_TEST_R_UTILITY_ACCOUNTS_DISCOVERY_ERROREncounters an error discovering Utility AccountsNo
ARC_TEST_R_HISTORICAL_STATEMENTS_DISCOVERY_ERROREncounters an error discovering historical Utility StatementsNo
ARC_TEST_R_INTERVALS_DISCOVERY_ERROREncounters an error discovering interval dataYes

The following passwords control the result of test utility credential

verifiedThe credentials will be verified and the data corresponding to the specified username will become available
rejectedThe credentials will be rejected
errorThe credentials will behave as if a credential verification error occurred
timeout_verifiedSame as verified, but delayed until after the Connect component times out
timeout_rejectedSame as rejected, but delayed until after the Connect component times out
timeout_errorSame as error, but delayed until after the Connect component times out

Programmatic credential submission

For general testing or continuous integration purposes, an API endpoint is available in the sandboxed API mode - for submitting test credentials, as an alternative to doing so manually using Connect. Note that real credentials will still need to be tested manually using Connect.