---
title: "Activate a feature"
description: "Activate a specific feature for a customer. You must provide the feature_id and any required provider_data as specified in the feature's requirements."
protocol: rest
method: POST
endpoint: "/v1/risk/features/activate"
baseUrl: "https://api.gravv.xyz"
group: "Features"
auth:
  label: "Api-Key"
  name: "Api-Key"
  in: header
---

# Activate a feature

<Endpoint method="POST" path="/v1/risk/features/activate" />

Activate a specific feature for a customer. You must provide the feature_id and any required provider_data as specified in the feature's requirements.

## Headers

<ParamField name="Idempotency-Key" header="Idempotency-Key" type="string" required>
  Required for POST requests. Reuse only for an identical retry.
</ParamField>

## Request Body

<ParamField name="customer_id" body="customer_id" type="string" required>
  ID of the customer activating the feature
</ParamField>

<ParamField name="feature_id" body="feature_id" type="string" required>
  ID of the feature to activate

  Possible values: `crypto_wallet`, `virtual_cards`, `eur_account`, `usd_account`, `gbp_account`, `international_transfers`
</ParamField>

<ParamField name="provider_data" body="provider_data" type="object">
  Additional data required by the feature provider
</ParamField>

### Request Examples

<RequestExample>

```json title="ActivateVirtualCards"
{
  "customer_id": "302dabcb-d4fd-4a00-a80b-afad70982614",
  "feature_id": "virtual_cards",
  "provider_data": {
    "annual_remuneration": 12000,
    "estimated_monthly_limit": 200,
    "ip_address": "12.23.31.23",
    "account_id": "5d9e677f-f071-4881-a861-7cdcebacd9d5"
  }
}
```

```json title="ActivateCryptoWallet"
{
  "customer_id": "302dabcb-d4fd-4a00-a80b-afad70982614",
  "feature_id": "crypto_wallet"
}
```

```json title="ActivateInternationalTransfers"
{
  "feature_id": "international_transfers",
  "customer_id": "cust_123456",
  "provider_data": {
    "compliance_check": "approved",
    "country_whitelist": [
      "US",
      "GB",
      "CA"
    ]
  }
}
```

</RequestExample>

## Responses

| Status | Description |
| --- | --- |
| `200` | Feature activated successfully |
| `401` | Unauthorized - Invalid or missing API key |
| `403` | Forbidden - Customer not eligible |
| `404` | Feature or customer not found |

### 200 response

<ResponseField name="data" type="object" required>

  <Expandable title="properties">
    <ResponseField name="activated_at" type="string">
      Timestamp when the feature was activated
    </ResponseField>

    <ResponseField name="customer_id" type="string" required>
      ID of the customer for whom the feature was activated
    </ResponseField>

    <ResponseField name="feature_id" type="string" required>
      ID of the activated feature

      Possible values: `crypto_wallet`, `virtual_cards`, `eur_account`, `usd_account`, `gbp_account`, `international_transfers`
    </ResponseField>

    <ResponseField name="status" type="string" required>
      Current status of the feature
    </ResponseField>

  </Expandable>
</ResponseField>

<ResponseField name="error" type="string" required>
  Error message, if any
</ResponseField>

<ResponseExample>

```json title="SuccessfulActivation"
{
  "data": {
    "activated_at": "2026-01-09T10:29:16.000Z",
    "customer_id": "302dabcb-d4fd-4a00-a80b-afad70982614",
    "feature_id": "virtual_cards",
    "status": "active"
  },
  "error": null
}
```

```json title="LivenessCheckRequired"
{
  "data": {
    "customer_id": "302dabcb-d4fd-4a00-a80b-afad70982614",
    "feature_id": "virtual_cards",
    "status": "active",
    "websdk_url": "https://verify.gravv.xyz/liveness/abc123xyz"
  },
  "error": null
}
```

</ResponseExample>

### 401 response

<ResponseField name="data" type="any" required>
  Always null for error responses
</ResponseField>

<ResponseField name="error" type="string" required>
  Human-readable error message
</ResponseField>

<ResponseExample>

```json title="Response"
{
  "data": null,
  "error": "Invalid or missing Api-Key header. Api-Key is required!"
}
```

</ResponseExample>

### 403 response

<ResponseField name="data" type="any" required>
  Always null for error responses
</ResponseField>

<ResponseField name="error" type="string" required>
  Human-readable error message
</ResponseField>

<ResponseExample>

```json title="Response"
{
  "data": null,
  "error": "Customer does not meet eligibility requirements"
}
```

</ResponseExample>

### 404 response

<ResponseField name="data" type="any" required>
  Always null for error responses
</ResponseField>

<ResponseField name="error" type="string" required>
  Human-readable error message
</ResponseField>

<ResponseExample>

```json title="Response"
{
  "data": null,
  "error": "Feature not found"
}
```

</ResponseExample>

## Authorization

- **ApiKeyAuth**
