# Get Redis Key API

> Read one or several keys of your own from the Redis of API Maker with the get redis key system API - values set with set redis key, in the namespace of your account.

Source: https://docs.apimaker.dev/v1/docs/apis-all/system-apis/system-generated-get-redis-key-api.html

Reads values you stored with [set redis key](https://docs.apimaker.dev/v1/docs/apis-all/system-apis/system-generated-set-redis-key-api.html) from the external Redis of API Maker (the one which also holds the cache of the APIs). Keys are kept in a namespace of the account, so two accounts never see each other's keys.

| | |
|---|---|
| Method | POST |
| URL | `/api/system-api/admin/get-redis-key` : `admin` is the user path of your account |
| Body | `{ keys }` |
| Answer | `data` : the value (a string, `null` when the key is not there), or an array of values |
| From code | [`g.sys.cache.getKey`](https://docs.apimaker.dev/v1/examples/sys/cache/getKey.html) |

## The call

**Body : one key**

```json
{ "keys": "session:user123" }
```

**Answer**

```json
{ "success": true, "statusCode": 200, "data": "{\"cart\":3}" }
```

**Body : several keys**

```json
{ "keys": [ "session:user123", "captcha:abc" ] }
```

**Answer**

```json
{ "success": true, "statusCode": 200, "data": [ "{\"cart\":3}", null ] }
```

- Values are strings : `JSON.parse` what you stored as JSON.

## From code

```typescript
const raw = await g.sys.cache.getKey('session:user123');
const session = raw ? JSON.parse(raw) : null;
```

## Access and settings

- Over HTTP, a system API answers once its [settings](https://docs.apimaker.dev/v1/docs/settings/systemApiSettings.html) give it `apiAccessType: TOKEN_ACCESS` (the token of an API user whose [group](https://docs.apimaker.dev/v1/docs/apis-security/api-group-permission.html) grants this system API, in `x-am-authorization`) or `IS_PUBLIC`. Without settings it is `NO_ACCESS` : your code calls it through `g.sys`, the admin panel tests it, and an HTTP call is refused.
- The settings can also cache the answer or require person tokens (`authProviders`) ; [pre and post hooks](https://docs.apimaker.dev/v1/docs/apis-all/hooks/preHook-api.html) run around it like around any API.
- The [request headers](https://docs.apimaker.dev/v1/docs/apis-all/header/requestHeader.html) apply : `x-am-response-case`, `x-am-content-type-response`, `x-am-internationalization`, `x-am-tenant-username`…

## Errors

| Code | When |
|---|---|
| `400` | The body is wrong : the message names the missing or invalid key. |
| `401` | No valid API user token, or the API is `NO_ACCESS` : `You are not authorized to access this API.` |
| `403` | No group grants this system API. |

## Related

- [All APIs at a glance](https://docs.apimaker.dev/v1/docs/apis-all/overview.html) · [Response format](https://docs.apimaker.dev/v1/docs/apis-all/response-format.html) · [System API settings](https://docs.apimaker.dev/v1/docs/settings/systemApiSettings.html) · [System APIs from code](https://docs.apimaker.dev/v1/examples/sys/system/system.html)
