> ## Client identification
>
> Requests to this API should include a `Client-Platform` header alongside
> `Authorization`, identifying the application, tool, or model making the
> request. This is used for integration support and analytics.
>
> Use your model or tool name, for example `claude-code` or `chatgpt`.
>
> Example:
>
> ```bash
> curl https://api.salaryboxapp.com/... \
>   -H "Authorization: Api-Key <api-key>" \
>   -H "Client-Platform: claude-code"
> ```

# List New Joinee Requests

GET https://api.salaryboxapp.com/v2/customer/v1/pending-requests/new-joinees

Returns people who asked to join your company through its joining link or company code, newest first, as in New Joinee requests in the app. By default only requests waiting for a decision; use `status` for decided ones too.

- Only requests where the person filled in their details are listed.
- They are not staff yet, so there is no `salarybox_id`. Once approved, they appear in List Staff.
- `status` is `pending`, `approved` or `declined`. `joined_via` is `joining_link` or `company_code`.


Reference: https://docs.salarybox.in/api-reference/staff/pending-requests-new-joinees-retrieve

## Authentication

- `Authorization` header (required) (prefixed with ` Api-Key   `) — Format: "Api-Key \{api-key}"

## Request

### Query parameters

- `status` (enum, optional, default: current) — Which requests to return. Defaults to `current`. - `current`: waiting for a decision. - `approved`: approved. - `declined`: rejected. - `all`: every status.
  - Allowed values: `current`, `approved`, `declined`, `all`
- `page` (integer, optional) — Page number, starting at 1.
- `page_size` (integer, optional) — Results per page. Default and maximum 500.

## Response

### 200

- `data` (list of NewJoineeRequest, required)
- `message` (string, required)
- `status` (boolean, required)
- `count` (integer, required)
- `prev` (string, required, nullable)
- `next` (string, required, nullable)

## Errors

### 400 Bad Request Error

`status` is not one of `current`, `approved`, `declined` or `all`.

- `message` (string, required)
- `status` (boolean, required)
- `errors` (map from string to any, optional, nullable)

## Types

### NewJoineeRequest

One request from a person asking to join your company. They are not staff yet, so there is no `salarybox_id`; once approved they appear in List Staff.

- `name` (string, required) — Name the person entered when asking to join.
- `joined_via` (enum, required) — How the person reached your company. - `joining_link`: they opened your company's joining link. - `company_code`: they typed your company code in the app.
  - Allowed values: `joining_link`, `company_code`
- `status` (enum, required) — `pending` while awaiting a decision (the `current` filter), `approved` once accepted, `declined` once rejected.
  - Allowed values: `pending`, `approved`, `declined`
- `created_on` (datetime, required) — When the request was made, as an ISO 8601 date-time.
- `dial_code` (integer, optional, nullable) — Country dial code of the phone number, for example `91`. `null` if not given.
- `phone_number` (string, optional, nullable) — Phone number the person entered, without the dial code. Masked. Every digit except the last 4 is replaced by `X` (for example `XXXXXX9999`). The full number is visible only in the SalaryBox app. `null` if not given.
- `email` (string, optional, nullable) — Email address the person entered. Masked. The part before `@` keeps only its first and last character and everything between becomes `X` (for example `rXXXXXXXXr@example.com`); a 2-character local part shows its first character plus `X`; the `@domain` is shown in full. The full address is visible only in the SalaryBox app. `null` if not given.
- `date_of_birth` (string, optional, nullable) — Date of birth exactly as the person typed it, so the format is not guaranteed. `null` if not given.
- `address` (string, optional, nullable) — Address the person entered. `null` if not given.

## Examples

**Response**

```json
{
  "data": [
    {
      "name": "Kavya Iyer",
      "joined_via": "joining_link",
      "status": "pending",
      "created_on": "2026-10-27T09:15:30Z",
      "dial_code": 91,
      "phone_number": "XXXXXX3210",
      "email": "kXXXXXXXXr@example.com",
      "date_of_birth": "14/03/1996",
      "address": "12 MG Road, Bengaluru"
    }
  ],
  "message": "Success",
  "status": true,
  "count": 1,
  "prev": null,
  "next": null
}
```

**SDK Code**

```python Example
import requests

url = "https://api.salaryboxapp.com/v2/customer/v1/pending-requests/new-joinees"

headers = {"Authorization": "Api-Key  <apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript Example
const url = 'https://api.salaryboxapp.com/v2/customer/v1/pending-requests/new-joinees';
const options = {method: 'GET', headers: {Authorization: 'Api-Key  <apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Example
package main

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

func main() {

	url := "https://api.salaryboxapp.com/v2/customer/v1/pending-requests/new-joinees"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Api-Key  <apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Example
require 'uri'
require 'net/http'

url = URI("https://api.salaryboxapp.com/v2/customer/v1/pending-requests/new-joinees")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Api-Key  <apiKey>'

response = http.request(request)
puts response.read_body
```

```java Example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.salaryboxapp.com/v2/customer/v1/pending-requests/new-joinees")
  .header("Authorization", "Api-Key  <apiKey>")
  .asString();
```

```php Example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.salaryboxapp.com/v2/customer/v1/pending-requests/new-joinees', [
  'headers' => [
    'Authorization' => 'Api-Key  <apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp Example
using RestSharp;

var client = new RestClient("https://api.salaryboxapp.com/v2/customer/v1/pending-requests/new-joinees");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Api-Key  <apiKey>");
IRestResponse response = client.Execute(request);
```

```swift Example
import Foundation

let headers = ["Authorization": "Api-Key  <apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.salaryboxapp.com/v2/customer/v1/pending-requests/new-joinees")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```