> ## Documentation Index
> Fetch the complete documentation index at: https://docs.partnero.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Approve partner

> Approve a partner who is pending approval and give them access to the partner portal

## Endpoint

```
POST https://api.partnero.com/v1/partners/{id}/approve
```

<Note>
  This endpoint is available for affiliate programs only.
</Note>

Approves a partner whose application is pending review. This works the same way as clicking **Approve** in the dashboard: the partner receives the approval email (and a set-password email if they haven't set one yet), and the `partner.approved` [webhook](/api-reference/webhooks/overview) is sent.

The call is safe to retry. Approving a partner who is already approved changes nothing and returns the partner as is.

## Path parameters

| Parameter | Type | Required | Description |
| - | - | - | - |
| `id` | string | Yes | Partner's ID, key or email |

## Request

```bash cURL theme={"system"}
curl --location --request POST 'https://api.partnero.com/v1/partners/partner_123/approve' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY'
```

## Response

Returns the updated partner, in the same format as [Get partner](/api-reference/partners/get).

<ResponseExample>
  ```json 200 OK theme={"system"}
  {
    "data": {
      "id": "partner_123",
      "email": "john.doe@partnero.com",
      "name": "John",
      "surname": "Doe",
      "approved": true,
      "status": "active",
      "created_at": "2025-04-30T16:44:13.000000Z",
      "updated_at": "2025-05-02T09:12:40.000000Z"
    },
    "status": 1
  }
  ```
</ResponseExample>

## Behavior

* **Rejected partners** can be approved. This reactivates them, as in the dashboard.
* **Suspended partners** who are already approved are not unsuspended. The call is a no-op.
* **Partners without an approval request** (for example, partners who signed up through an instant link, or programs that don't require approval) can be approved, but the `partner.approved` webhook is not sent for them, because that event is tied to the approval request. The dashboard behaves the same way.

## Error responses

| Status | Error | Solution |
| - | - | - |
| 401 | Unauthenticated | Check your API key is set in the `Authorization` header |
| 404 | Partner not found | Check the partner ID, key or email. Archived partners can't be approved; [restore](/api-reference/partners/restore) them first |
| 422 | Failed to approve partner | The approval couldn't be completed. The reason is in the `message` field |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.