# Abstract — Orthogonal API
> Pay-per-use API on Orthogonal. Each call is billed to your Orthogonal balance.
> Base API: `https://api.orthogonal.com/v1/run` · [llms.txt](https://orthogonal.com/llms.txt) · [browse all APIs](https://orthogonal.com/discover)
Verify every user and stop fraud before it starts. Verify emails, phone numbers and IPs, block fraud and bots, and enrich your data with Abstract.
**Verified:** yes
## Access
**Run API:** `POST https://api.orthogonal.com/v1/run`
**Auth:** `Authorization: Bearer $ORTHOGONAL_API_KEY`
Get an API key at https://orthogonal.com/dashboard/settings/api-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
### Process Image via URL
Process and optimize an image from a given URL.
`POST /v1/url`
**Estimated cost:** $0.003
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | URL of the image to process (max 32MB) |
| `lossy` | boolean | No | Enable lossy compression (true/false) |
| `quality` | integer | No | Quality level (0-100) for lossy compression |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1/url","body":{"url":"<string>","lossy":"<boolean>","quality":"<integer>"}}'
```
### Process Image via Upload
Upload and process an image directly.
`POST /v1/upload`
**Estimated cost:** $0.003
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `image` | string | Yes | The image file to process |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1/upload","body":{"image":"<string>"}}'
```
### Capture Screenshot
Take a screenshot of a given URL with optional customizations like delay and viewport.
`GET /v1/`
**Estimated cost:** $0.003
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | The URL to screenshot |
| `capture_full_page` | string | No | Set to true to capture the full page |
| `delay` | string | No | Delay in ms before capture |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1/","method":"GET","query":{"url":"<string>","capture_full_page":"<string>","delay":"<string>"}}'
```
### Scrape URL
Scrape and return the HTML content and data from a given URL.
`GET /v1/`
**Estimated cost:** $0.003
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | The URL to scrape |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1/","method":"GET","query":{"url":"<string>"}}'
```
### Generate Avatar
Generate an avatar image from a name or initials with customizable styling.
`GET /v1`
**Estimated cost:** $0.001
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | Yes | The name to generate an avatar for |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1","method":"GET","query":{"name":"<string>"}}'
```
### Current Time
Get the current time, date, and timezone for a location.
`GET /v1/current_time`
**Estimated cost:** $0.002
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `location` | string | Yes | Location name, lat/long, or IP address |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1/current_time","method":"GET","query":{"location":"<string>"}}'
```
### Convert Time
Convert time between two locations or timezones.
`GET /v1/convert_time`
**Estimated cost:** $0.002
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `base_location` | string | Yes | The source location |
| `base_datetime` | string | No | Datetime to convert (defaults to now) |
| `target_location` | string | Yes | The target location |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1/convert_time","method":"GET","query":{"base_location":"<string>","base_datetime":"<string>","target_location":"<string>"}}'
```
### Public Holidays Lookup
Get holidays for a specific country, year, month, and day.
`GET /v1`
**Estimated cost:** $0.001
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `country` | string | Yes | 2-letter country code (e.g. US) |
| `year` | string | Yes | Year (e.g. 2024) |
| `month` | string | No | Month (1-12) |
| `day` | string | No | Day (1-31) |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1","method":"GET","query":{"country":"<string>","year":"<string>","month":"<string>","day":"<string>"}}'
```
### Convert Currency
Convert an amount from one currency to another.
`GET /v1/convert`
**Estimated cost:** $0.001
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `base` | string | Yes | Base currency code |
| `target` | string | Yes | Target currency code |
| `amount` | string | No | Amount to convert (defaults to 1) |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1/convert","method":"GET","query":{"base":"<string>","target":"<string>","amount":"<string>"}}'
```
### Live Exchange Rates
Get the latest exchange rates for a given base currency.
`GET /v1/live`
**Estimated cost:** $0.001
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `base` | string | Yes | Base currency code (e.g. USD) |
| `target` | string | No | Target currency code(s), comma-separated |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1/live","method":"GET","query":{"base":"<string>","target":"<string>"}}'
```
### Historical Exchange Rates
Get exchange rates for a specific historical date.
`GET /v1/historical`
**Estimated cost:** $0.001
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `base` | string | Yes | Base currency code |
| `target` | string | No | Target currency code(s) |
| `date` | string | Yes | Historical date in YYYY-MM-DD format |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1/historical","method":"GET","query":{"base":"<string>","target":"<string>","date":"<string>"}}'
```
### Validate VAT Number
Validate a VAT number and get company details associated with it.
`GET /v1/validate`
**Estimated cost:** $0.002
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `vat_number` | string | Yes | The VAT number to validate |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1/validate","method":"GET","query":{"vat_number":"<string>"}}'
```
### VAT Categories
Get VAT rate categories for a specific country.
`GET /v1/categories`
**Estimated cost:** $0.002
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `country_code` | string | Yes | The 2-letter ISO country code |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1/categories","method":"GET","query":{"country_code":"<string>"}}'
```
### Calculate VAT
Calculate VAT amount for a given price and country.
`GET /v1/calculate`
**Estimated cost:** $0.002
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `amount` | string | Yes | The amount to calculate VAT for |
| `country_code` | string | Yes | The 2-letter ISO country code |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1/calculate","method":"GET","query":{"amount":"<string>","country_code":"<string>"}}'
```
### IBAN Validation
Validate an IBAN and retrieve associated bank details, country, and check digits.
`GET /v1`
**Estimated cost:** $0.002
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `iban` | string | Yes | The IBAN to validate |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1","method":"GET","query":{"iban":"<string>"}}'
```
### Company Enrichment Lookup
Get detailed company information from a domain including name, logo, headcount, location, industry, and more.
`GET /v2`
**Estimated cost:** $0.003
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `domain` | string | Yes | The domain to enrich (e.g. google.com) |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v2","method":"GET","query":{"domain":"<string>"}}'
```
### IP Intelligence Lookup
Get geolocation and security intelligence for an IP address including VPN, proxy, Tor, and abuse detection.
`GET /v1`
**Estimated cost:** $0.003
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `ip_address` | string | Yes | The IP address to look up |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1","method":"GET","query":{"ip_address":"<string>"}}'
```
### Phone Intelligence Lookup
Get detailed intelligence about a phone number including carrier, line type, location, risk score, and breach data.
`GET /v1`
**Estimated cost:** $0.005
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `phone` | string | Yes | The phone number to look up |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1","method":"GET","query":{"phone":"<string>"}}'
```
### Email Reputation Lookup
Get detailed reputation data for an email address including deliverability, quality score, and risk indicators.
`GET /v1`
**Estimated cost:** $0.005
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `email` | string | Yes | The email address to validate |
```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api":"abstractapi","path":"/v1","method":"GET","query":{"email":"<string>"}}'
```
---
Full details and an interactive quickstart: https://orthogonal.com/discover/abstractapi