> This is Payabli documentation. For a complete page index, fetch https://docs.payabli.com/llms.txt — append .md to any page URL for lightweight markdown. For section-level indexes, query parameters, and other AI-optimized access methods, see https://docs.payabli.com/ai-agents.md

# Get a person (unmasked)

GET https://api-sandbox.payabli.com/api/v2/people/{personReference}/unmasked

Retrieves a person by reference with sensitive fields unmasked.

Reference: https://docs.payabli.com/developers/api-reference/people/get-a-person-unmasked

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Servers

- `https://api-sandbox.payabli.com/api` (Sandbox, default)
- `https://api.payabli.com/api` (Production)

## Request

### Path parameters

- `personReference` (string, required) — The person reference.

## Response

### 200

The person with unmasked sensitive data.

- `success` (boolean, required) — Whether the request succeeded.
- `message` (string, required, nullable) — A human-readable result message.
- `traceId` (string, required, nullable) — The trace identifier for the request, useful for support.
- `data` (PersonDetailResponse, required, nullable) — The person detail.
- `warnings` (list of BoardingWarning, required, nullable) — Non-blocking warnings, such as a business link that didn't complete.

## Errors

### 401 Unauthorized Error

Unauthorized request.

- `isSuccess` (boolean, required) — Always `false` for error responses.
- `responseText` (string, required) — Error text describing what went wrong.
- `responseCode` (integer, optional) — Code for the response. Learn more in [API Response Codes](/developers/api-reference/api-responses).
- `responseData` (PayabliErrorBodyResponseData, optional) — Object with detailed error context.

### 404 Not Found Error

The requested resource wasn't found.

- `isSuccess` (boolean, required) — Always `false` for error responses.
- `responseText` (string, required) — Error text describing what went wrong.
- `responseCode` (integer, optional) — Code for the response. Learn more in [API Response Codes](/developers/api-reference/api-responses).
- `responseData` (PayabliErrorBodyResponseData, optional) — Object with detailed error context.

### 500 Internal Server Error

Internal server error.

- `isSuccess` (boolean, required) — Always `false` for error responses.
- `responseText` (string, required) — Error text describing what went wrong.
- `responseCode` (integer, optional) — Code for the response. Learn more in [API Response Codes](/developers/api-reference/api-responses).
- `responseData` (PayabliErrorBodyResponseData, optional) — Object with detailed error context.

## Types

### PersonDetailResponse

The full detail of a person. Sensitive fields are masked unless read from the unmasked endpoint.

- `personReference` (string, required) — The person reference.
- `firstName` (string, required, nullable) — The person's first name.
- `lastName` (string, required, nullable) — The person's last name.
- `verificationStatus` (string, required) — The person's identity verification status, for example `not_started`.
- `createdAt` (datetime, required) — When the person was created.
- `lastUpdated` (datetime, required) — When the person was last updated.
- `_links` (PersonLinks, required) — Hypermedia links for the person resource.
- `externalId` (string, optional, nullable) — Your own identifier for the person.
- `middleName` (string, optional, nullable) — The person's middle name.
- `primaryEmail` (string, optional, nullable) — The person's primary email address.
- `secondaryEmail` (string, optional, nullable) — The person's secondary email address.
- `primaryPhoneNumber` (string, optional, nullable) — The person's primary phone number.
- `secondaryPhoneNumber` (string, optional, nullable) — The person's secondary phone number.
- `dateOfBirth` (string, optional, nullable) — The person's date of birth. Masked on standard reads (for example `****-**-14`); read the unmasked endpoint for the raw value.
- `ssn` (string, optional, nullable) — The person's US Social Security Number. Populated when `nationality` is `US`, otherwise null. Masked on standard reads (for example `***-**-9021`); read the unmasked endpoint for the raw value.
- `nationality` (string, optional, nullable) — The person's nationality, as a two-letter ISO 3166-1 alpha-2 country code. Not masked. When `US`, `ssn` is populated and the national ID fields are null; for any other value, `nationalIdNumber` and `nationalIdIssuer` are populated and `ssn` is null.
- `nationalIdNumber` (string, optional, nullable) — The person's national identification number. Populated when `nationality` is not `US`, otherwise null. Masked on standard reads; read the unmasked endpoint for the raw value.
- `nationalIdIssuer` (string, optional, nullable) — The authority that issued the national ID, for example the two-letter country code. Populated when `nationality` is not `US`, otherwise null.
- `driversLicenseNumber` (string, optional, nullable) — The person's driver's license number. Masked on standard reads (for example `D1***567`); read the unmasked endpoint for the raw value.
- `driversLicenseState` (string, optional, nullable) — The two-letter state code for the driver's license.
- `customData` (map from string to any, optional, nullable) — Arbitrary key-value data attached to the person. When present, `templateAnswers` holds this owner's answers to a boarding template's person-scoped custom questions, meaning questions whose field path starts with `person.`, such as `person.backgroundCheck`. Payabli saves them on each owner. It's an object keyed by field path, and each answer is a string. A multi-select answer is one comma-separated string. Payabli saves the answers when an application is submitted through the hosted boarding application. Submitting an application with the API (`POST /v2/requests/{requestsReference}/submit`) doesn't save them. Only answers to custom questions are saved, and blank answers, standard-field answers, and document uploads aren't. A later hosted submit replaces the answer to the same question and keeps every other answer, including answers from other applications. Leaving a question blank on a later submit doesn't remove the stored answer.
- `addresses` (list of PersonAddressResponse, optional, nullable) — Postal addresses associated with the person.
- `identificationDocuments` (list of IdentificationDocumentResponse, optional, nullable) — Government-issued identification documents for the person.
- `businessRelationship` (BusinessRelationshipResponse, optional, nullable) — The business link created with the person, present when the person was created with a `businessRelationship`. Null on a standalone person read, since the relationship is scoped to the business rather than the shared person.

### BoardingWarning

A non-blocking warning returned alongside a successful response.

- `code` (string, optional) — A machine-readable warning code.
- `message` (string, optional) — A human-readable description of the warning.

### PayabliErrorBodyResponseData

Object with detailed error context.

- `explanation` (string, optional) — Human-readable explanation of what happened.
- `todoAction` (string, optional) — Suggested resolution.

### PersonLinks

Hypermedia links for a person resource.

- `self` (string, optional) — Relative path to the person resource.
- `business` (string, optional) — Relative path to the linked business, present when the person is linked to a business.

### PersonAddressResponse

An address in a person response.

- `addressLine1` (string, optional, nullable) — The first line of the street address.
- `addressLine2` (string, optional, nullable) — The second line of the street address.
- `cityLocality` (string, optional, nullable) — The city or locality.
- `stateProvince` (string, optional, nullable) — The two-letter state or province code.
- `postalCode` (string, optional, nullable) — The postal or ZIP code.
- `country` (string, optional, nullable) — The two-letter ISO 3166-1 alpha-2 country code.
- `type` (string, optional, nullable) — The role the address plays for the person, for example `legal` or `physical`.

### IdentificationDocumentResponse

A government-issued identification document in a person response.

- `type` (string, optional, nullable) — The document type, for example `passport` or `drivers_license`.
- `number` (string, optional, nullable) — The document number. Masked on standard reads; read the unmasked endpoint for the raw value.
- `issuingState` (string, optional, nullable) — The two-letter issuing state code.
- `issuingCountry` (string, optional, nullable) — The two-letter issuing country code.
- `expirationDate` (string, optional, nullable) — The document expiration date.

### BusinessRelationshipResponse

The business-person relationship returned when a person is created with a `businessRelationship`. Its contact fields are scoped to the relationship and are distinct from the person's own top-level contact fields.

- `businessReference` (string, required) — The reference of the linked business.
- `personType` (string, required) — The person's role on the business, returned in lowercase (for example `owner`).
- `ownershipPercentage` (double, required, nullable) — The person's ownership percentage (0 to 100).
- `beneficialOwner` (boolean, required) — Whether the person qualifies as a beneficial owner. Derived by Payabli, not sent on create.
- `isPrimaryController` (boolean, required) — Whether the person is the business's primary controller.
- `isSigner` (boolean, required) — Whether the person signs the business's boarding applications.
- `title` (string, required, nullable) — The person's job title at this business.
- `primaryEmail` (string, required, nullable) — The relationship's primary email address.
- `secondaryEmail` (string, required, nullable) — The relationship's secondary email address.
- `primaryPhoneNumber` (string, required, nullable) — The relationship's primary phone number.
- `secondaryPhoneNumber` (string, required, nullable) — The relationship's secondary phone number.
- `billingAddressUuid` (string, required, nullable) — Reference to the stored billing address for the relationship. The address is sent as an object on create, then stored and returned by ID.
- `mailingAddressUuid` (string, required, nullable) — Reference to the stored mailing address for the relationship. The address is sent as an object on create, then stored and returned by ID.

## Examples

**Response**

```json
{
  "success": true,
  "message": "Person retrieved successfully",
  "traceId": "0HNNQ4R2OT26Q:0000001E",
  "data": {
    "personReference": "01a0014d-ce1a-7110-9bac-c4c59647a88d",
    "firstName": "Marcus",
    "lastName": "Delgado",
    "verificationStatus": "not_started",
    "createdAt": "2026-08-14T17:24:31.387724",
    "lastUpdated": "2026-08-14T17:24:31.387724",
    "_links": {
      "self": "/v2/people/01a0014d-ce1a-7110-9bac-c4c59647a88d"
    },
    "externalId": "person-001",
    "middleName": "James",
    "primaryEmail": "marcus.delgado@example.com",
    "secondaryEmail": "m.delgado@example.net",
    "primaryPhoneNumber": "3055551212",
    "secondaryPhoneNumber": "3055559876",
    "dateOfBirth": "1985-03-14",
    "ssn": "412-55-9021",
    "nationality": "US",
    "driversLicenseNumber": "D1234567",
    "driversLicenseState": "FL",
    "customData": {
      "department": "finance"
    },
    "addresses": [
      {
        "addressLine1": "123 Main Street",
        "addressLine2": "Suite 400",
        "cityLocality": "Miami",
        "stateProvince": "FL",
        "postalCode": "33101",
        "country": "US",
        "type": "legal"
      }
    ],
    "identificationDocuments": [
      {
        "type": "passport",
        "number": "X1234567",
        "issuingCountry": "US",
        "expirationDate": "2030-06-30"
      }
    ]
  }
}
```

**SDK Code**

```python
import requests

url = "https://api-sandbox.payabli.com/api/v2/people/01a0014d-ce1a-7110-9bac-c4c59647a88d/unmasked"

headers = {"Authorization": "Bearer <token>"}

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

print(response.json())
```

```javascript
const url = 'https://api-sandbox.payabli.com/api/v2/people/01a0014d-ce1a-7110-9bac-c4c59647a88d/unmasked';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

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

```go
package main

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

func main() {

	url := "https://api-sandbox.payabli.com/api/v2/people/01a0014d-ce1a-7110-9bac-c4c59647a88d/unmasked"

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

	req.Header.Add("Authorization", "Bearer <token>")

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

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

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

}
```

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

url = URI("https://api-sandbox.payabli.com/api/v2/people/01a0014d-ce1a-7110-9bac-c4c59647a88d/unmasked")

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

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

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

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

HttpResponse<String> response = Unirest.get("https://api-sandbox.payabli.com/api/v2/people/01a0014d-ce1a-7110-9bac-c4c59647a88d/unmasked")
  .header("Authorization", "Bearer <token>")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api-sandbox.payabli.com/api/v2/people/01a0014d-ce1a-7110-9bac-c4c59647a88d/unmasked', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api-sandbox.payabli.com/api/v2/people/01a0014d-ce1a-7110-9bac-c4c59647a88d/unmasked");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/v2/people/01a0014d-ce1a-7110-9bac-c4c59647a88d/unmasked")! 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()
```