# Trestle — Orthogonal API

> Pay-per-use API on Orthogonal. Each call is billed to your Orthogonal balance.
> Base API: `https://mono.orthogonal.com/v1/run` · [llms.txt](https://mono.orthogonal.com/llms.txt) · [browse all APIs](https://mono.orthogonal.com/catalog)

Trestle identity data APIs: validate, verify and enrich phone numbers, emails, addresses and IP addresses. Phone validation (carrier, line type, activity score), caller name (CNAM), caller identification, reverse phone and reverse address lookups, address validation, contact grading for lead quality (Real Contact), identity decision signals for fraud prevention, and live-call phone feedback. Trestle data is not a consumer report and must not be used for FCRA-regulated eligibility decisions.

**Verified:** yes

## Access

**Run API:** `POST https://mono.orthogonal.com/v1/run`
**Auth:** `Authorization: Bearer $ORTHOGONAL_API_KEY`
Get an API key at https://mono.orthogonal.com/account/keys

Every call goes through the unified Run API: send the API `slug`, the endpoint `path`, and the `query`/`body` parameters. The response is `{ "success": true, "price": "<usd>", "data": { ... } }`.

## Endpoints

### Verify and grade a lead's contact information

Verifies the contactability and consistency of an identity profile across name, phone, email, address, and IP address. Returns contact grades (A–F), activity scores, name-match indicators, and IP trust signals.

`GET /2.0/real_contact`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://docs.trestleiq.com/guides/overview

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | Yes | The name of the person to search. Example `John Doe` |
| `phone` | string | Yes | The phone number provided by the lead. Example `4259853735` |
| `email` | string | No | The email provided by the lead. Example `john.doe@example.com` |
| `address.street_line_1` | string | No |  |
| `address.city` | string | No |  |
| `address.state_code` | string | No |  |
| `address.postal_code` | string | No |  |
| `address.country_code` | string | No | ISO-3166 alpha-2 country code. Example `US` |
| `ip_address` | string | No | The IP address captured at time of interaction. Example `192.0.0.1` |
| `add_ons` | string | No | Comma-separated list of add-ons to enable. Options: `email_checks_deliverability`, `email_checks_age`, `litigator_checks`. Additional charges apply. |
| `business.name` | string | No | The business name to search. Example `The Golden Company` |
| `source_id` | string | No | Optional identifier used to group queries by source, campaign, channel, or cohort. Maximum length is 255 characters. |

```bash
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"trestle","path":"/2.0/real_contact","method":"GET","query":{"name":"<string>","phone":"<string>","email":"<string>","address.street_line_1":"<string>","address.city":"<string>","address.state_code":"<string>","address.postal_code":"<string>","address.country_code":"<string>","ip_address":"<string>","add_ons":"<string>","business.name":"<string>","source_id":"<string>"}}'
```

### Validate a phone number and get metadata

Validates the phone number and returns carrier, line type, prepaid status, country info, and a 0–100 activity score indicating whether the number is active.

`GET /3.0/phone_intel`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://docs.trestleiq.com/guides/overview

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `phone` | string | Yes | Phone number in E.164 or local format. Example `2069735100` |
| `phone.country_hint` | string | No | ISO-3166 alpha-2 country code. Example `US` |
| `add_ons` | string | No | Comma-separated add-ons to enable. Options: `litigator_checks`. Additional charges apply. |
| `source_id` | string | No | Optional identifier used to group queries by source, campaign, channel, or cohort. Maximum length is 255 characters. |

```bash
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"trestle","path":"/3.0/phone_intel","method":"GET","query":{"phone":"<string>","phone.country_hint":"<string>","add_ons":"<string>","source_id":"<string>"}}'
```

---

Full details and an interactive quickstart: https://mono.orthogonal.com/publisher/trestle
