# PUT /affiliate/status/{{id}} — Update Affiliate Status

> Product: **Pabbly Subscription Billing** (v1)
> Base URL: `https://payments.pabbly.com/api/v1`
> Auth: Basic via `Authorization` header
> Canonical: `/subscription-billing/affiliate-modules/update-affiliate-status`

Put request API to approve, disapprove, or block an affiliate by Affiliate Id. You can add the affiliate Id in request URL. In response the affiliate's request status is updated. Approving makes the customer an active affiliate, while disapprove and block remove affiliate access. Approved and disapproved actions trigger email notifications to the customer; block does not send any email.

**Path parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| id | string | Yes |  |

**Body parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| action | string | Yes | Action to perform on the affiliate. Allowed values: approve, disapprove, block |
| blocked_reason | string | No | Reason for blocking the affiliate. Required only when action is block |

**Example request body:**

```json
{
    "action": "approve"
}
```

**Response (200)** — Update Affiliate Status:

```json
{
    "status": "success",
    "message": "Updated Affiliate Status",
    "data": {
        "customer_id": "69afa6cbb4540d2bf5fc72cc",
        "request_status": "approved",
        "is_affiliate": true
    }
}
```

**Code examples:**

_cURL_

```curl
curl -X PUT https://payments.pabbly.com/api/v1/affiliate/status/{{id}} \
  -u {{YOUR_API_KEY}}:{{YOUR_SECRET_KEY}} \
  -H "Content-Type: application/json" \
  -d '{
    "action": "approve"
  }'
```

_Ruby_

```ruby
require 'net/http'
require 'json'

uri = URI('https://payments.pabbly.com/api/v1/affiliate/status/{{id}}')
request = Net::HTTP::Put.new(uri)
request.basic_auth '{{YOUR_API_KEY}}', '{{YOUR_SECRET_KEY}}'
request['Content-Type'] = 'application/json'
request.body = "{\"action\":\"approve\"}"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(request)
end

data = JSON.parse(response.body)
```

_Python_

```python
import requests
from requests.auth import HTTPBasicAuth

response = requests.put(
    'https://payments.pabbly.com/api/v1/affiliate/status/{{id}}',
    auth=HTTPBasicAuth('{{YOUR_API_KEY}}', '{{YOUR_SECRET_KEY}}'),
    json={
    'action': 'approve'
},
)

data = response.json()
```

_PHP_

```php
<?php
$ch = curl_init('https://payments.pabbly.com/api/v1/affiliate/status/{{id}}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_USERPWD, '{{YOUR_API_KEY}}:{{YOUR_SECRET_KEY}}');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"action":"approve"}');

$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
```

_Java_

```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Base64;

String credentials = Base64.getEncoder().encodeToString("{{YOUR_API_KEY}}:{{YOUR_SECRET_KEY}}".getBytes());

HttpClient client = HttpClient.newHttpClient();
HttpRequest.Builder builder = HttpRequest.newBuilder()
    .uri(URI.create("https://payments.pabbly.com/api/v1/affiliate/status/{{id}}"))
    .header("Authorization", "Basic " + credentials)
    .header("Content-Type", "application/json")
    .PUT(HttpRequest.BodyPublishers.ofString("{\"action\":\"approve\"}"));

HttpRequest request = builder.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
```

_Node.js_

```node
const credentials = Buffer.from('{{YOUR_API_KEY}}:{{YOUR_SECRET_KEY}}').toString('base64');

const response = await fetch('https://payments.pabbly.com/api/v1/affiliate/status/{{id}}', {
  method: 'PUT',
  headers: {
    'Authorization': `Basic ${credentials}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "action": "approve"
  }),
});

const data = await response.json();
```

_Go_

```go
package main

import (
    "fmt"
    "io"
    "net/http"
    "strings"
)

func main() {
    payload := strings.NewReader("{\"action\":\"approve\"}")
    req, _ := http.NewRequest("PUT", "https://payments.pabbly.com/api/v1/affiliate/status/{{id}}", payload)
    req.Header.Set("Content-Type", "application/json")
    req.SetBasicAuth("{{YOUR_API_KEY}}", "{{YOUR_SECRET_KEY}}")

    res, _ := http.DefaultClient.Do(req)
    defer res.Body.Close()
    body, _ := io.ReadAll(res.Body)
    fmt.Println(string(body))
}
```

_.NET_

```dotnet
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;

var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes("{{YOUR_API_KEY}}:{{YOUR_SECRET_KEY}}"));

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Put, "https://payments.pabbly.com/api/v1/affiliate/status/{{id}}");
request.Headers.TryAddWithoutValidation("Authorization", $"Basic {credentials}");
request.Content = new StringContent("{\"action\":\"approve\"}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

var response = await client.SendAsync(request);
var data = await response.Content.ReadAsStringAsync();
Console.WriteLine(data);
```

---

**Other endpoints in Affiliate Modules:**

- [POST /commissions/create — Create Commission](/subscription-billing/affiliate-modules/create-commission)
- [GET /commissions — List Commissions](/subscription-billing/affiliate-modules/list-commissions)
- [PUT /commissions/{{commissionId}} — Update Commission](/subscription-billing/affiliate-modules/update-commission)
- [GET /commissions/clicks — Affiliate Clicks](/subscription-billing/affiliate-modules/affiliate-clicks)
- [DELETE /commissions/clicks/{{click_id}} — Delete Clicks](/subscription-billing/affiliate-modules/delete-clicks)
- [POST /affiliate/payout/generate — Create Manual Report](/subscription-billing/affiliate-modules/create-manual-report)
- [GET /affiliate/links — Affiliate Links](/subscription-billing/affiliate-modules/affiliate-links)
- [POST /affiliate/commissionrule/create — Create Commission Rule](/subscription-billing/affiliate-modules/create-commission-rule)

