# API keys

Your account provides separate keys for testing and for running live transactions. You can use these keys when sending API requests in either test or live mode. Resources in one mode cannot change resources in another mode.

You can apply a different API version to each individual key or update the version on all keys simultaneously in the current mode (test or production).

Digital River authenticates your API requests using your account's API keys. Digital River returns an error if you do not include your key when you send an API request or use an incorrect or outdated key.

## Keys and versioning

Use the **Update version on all keys** button on the **Keys and versioning** pane to [select a version and update all keys to that version](/digital-river-api/administration/dashboard/developers/api-keys/updating-your-api-version.md). You can select to update all API keys to the latest API version or a previous API version. When you update all keys, the API version column for standard keys and restricted keys displays the version you selected.

<figure><img src="/files/Adg3mfTPXZgd87kUUzVJ" alt=""><figcaption></figcaption></figure>

## Standard keys

Digital River provides each account with four standard keys: a public and confidential (secret) pair for test and live modes. You can use these keys to authenticate Digital River API requests. You cannot create, edit, or delete standard keys, but you can [update ](/digital-river-api/administration/dashboard/developers/api-keys/changing-the-api-version-for-your-standard-key.md)or [rotate them](/digital-river-api/administration/dashboard/developers/api-keys/rotating-keys.md). ‌

The public API keys identify your Digital River account and allow you to create sources. You can use them with [Drop-in payments](/digital-river-api/payments/payment-integrations-1/drop-in.md) and [DigitalRiver.js](https://github.com/DigitalRiver/GitBook/blob/Digital-River-API/payments/payment-integrations-1/digitalriver.js).

The confidential (secret) API keys allow you to send an API call to Digital River without restriction. Keep these secret keys confidential and only store them on your servers.

<figure><img src="/files/c3y5Q1tHIkvJlvjfjF3S" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Note**: Limit access to your API keys and secrets to those who need them. Do not store them in a version control system.
{% endhint %}

## Restricted keys

Restrict API keys when limiting an application, batch job, or partner to a specific API version. You can also use it to let your teams choose when to upgrade their API version. You can [create](/digital-river-api/administration/dashboard/developers/api-keys/creating-a-restricted-key.md), [edit](/digital-river-api/administration/dashboard/developers/api-keys/editing-a-restricted-key.md), [delete](/digital-river-api/administration/dashboard/developers/api-keys/deleting-a-restricted-key.md), and [rotate restricted keys](/digital-river-api/administration/dashboard/developers/api-keys/rotating-keys.md).

<figure><img src="/files/jwGvWj9wvTRcPokmnvMJ" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digitalriver.com/digital-river-api/administration/dashboard/developers/api-keys.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
