# Didit — 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) The all-in-one identity platform. Powering the fastest identity verification while fighting fraud and unifying all identity checks. **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": "", "data": { ... } }`. ## Endpoints ### AML Screening The AML Screening API allows you to screen individuals or companies against global watchlists and high-risk databases. This API provides real-time screening capabilities to detect potential matches and mitigate risks associated with financial fraud and terrorism. You can screen both persons and companies by specifying the `entity_type` parameter. `POST /v3/aml` **Estimated cost:** $0.36 **Docs:** https://docs.didit.me/reference/aml-screening-standalone-api | Field | Type | Required | Description | |-------|------|----------|-------------| | `full_name` | string | Yes | Full name of the person or company to be screened. | | `entity_type` | string | No | Type of entity to screen. Either 'person' or 'company'. Defaults to 'person'. | | `date_of_birth` | date | No | Date of birth for persons or incorporation date for companies, with format: YYYY-MM-DD. For example, `1990-05-15`. | | `nationality` | string | No | Nationality of the person to be screened with format ISO 3166-1 alpha-2. For example: `ES`. Only applicable for person entity type. | | `document_number` | string | No | Document number of the person to be screened. Only applicable for person entity type. | | `aml_score_approve_threshold` | number | No | Score threshold below which hits are auto-approved (0-100). Hits with match scores below this threshold will be marked as approved. Default: 86. | | `aml_score_review_threshold` | number | No | Score threshold above which hits are auto-declined (0-100). Hits with match scores above this threshold will be declined. Scores between approve and review thresholds require manual review. Default: 100. | | `aml_name_weight` | integer | No | Weight for name similarity in match score calculation (0-100). The sum of aml_name_weight + aml_dob_weight + aml_country_weight must equal 100. Default: 60. | | `aml_dob_weight` | integer | No | Weight for date of birth in match score calculation (0-100). The sum of aml_name_weight + aml_dob_weight + aml_country_weight must equal 100. Default: 25. | | `aml_country_weight` | integer | No | Weight for country/nationality in match score calculation (0-100). The sum of aml_name_weight + aml_dob_weight + aml_country_weight must equal 100. Default: 15. | | `aml_match_score_threshold` | integer | No | Match score threshold (0-100) that determines if a hit is a False Positive or Unreviewed (Possible Match). Hits with match_score below this are marked as 'False Positive' and excluded from risk assessment. Hits at or above are 'Unreviewed' (Possible Match). Default: 93. | | `include_adverse_media` | boolean | No | Wheter to include adverse media in the screening. If included, the request will take approximately 10 seconds. | | `include_ongoing_monitoring` | boolean | No | Whether to include ongoing monitoring in the screening. If included, the save_api_request must be included as well, otherwise it will raise an error. | | `save_api_request` | boolean | No | Whether to save this API request. If true, then it will appear on the `Manual Checks` section in the Business Console. | | `vendor_data` | string | No | A unique identifier for the vendor or user, such as a UUID or email. This field enables proper session tracking and user data aggregation across multiple verification sessions. | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"didit","path":"/v3/aml","body":{"full_name":"","entity_type":"","date_of_birth":"","nationality":"","document_number":"","aml_score_approve_threshold":"","aml_score_review_threshold":"","aml_name_weight":"","aml_dob_weight":"","aml_country_weight":"","aml_match_score_threshold":"","include_adverse_media":"","include_ongoing_monitoring":"","save_api_request":"","vendor_data":""}}' ``` ### Send Email Code Send a one-time verification code to an email address. `POST /v3/email/send` **Estimated cost:** $0.04 **Docs:** https://docs.didit.me/reference/send-email-verification-code-api | Field | Type | Required | Description | |-------|------|----------|-------------| | `email` | string | Yes | Email address to verify | | `options` | object | No | Options object with code_size (4-8, default 6) and locale (e.g. en-US) | | `signals` | object | No | Fraud detection signals: ip, device_id, user_agent | | `vendor_data` | string | No | Unique identifier for vendor/user (UUID or email) for session tracking | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"didit","path":"/v3/email/send","body":{"email":"","options":"","signals":"","vendor_data":""}}' ``` ### Check Email Code Verify a code sent to an email address. `POST /v3/email/check` **Cost:** Free **Docs:** https://docs.didit.me/reference/check-email-verification-code-api | Field | Type | Required | Description | |-------|------|----------|-------------| | `email` | string | Yes | Email address to verify | | `code` | string | Yes | Verification code (4-8 characters) | | `duplicated_email_action` | string | No | Action for duplicated emails: NO_ACTION (default) or DECLINE | | `breached_email_action` | string | No | Action for breached emails: NO_ACTION (default) or DECLINE | | `disposable_email_action` | string | No | Action for disposable emails: NO_ACTION (default) or DECLINE | | `undeliverable_email_action` | string | No | Action for undeliverable emails: NO_ACTION (default) or DECLINE | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"didit","path":"/v3/email/check","body":{"email":"","code":"","duplicated_email_action":"","breached_email_action":"","disposable_email_action":"","undeliverable_email_action":""}}' ``` ### Database Validation API Validate user-provided identity data against authoritative national and global data sources. `POST /v3/database-validation` **Estimated cost:** $0.31 **Docs:** https://docs.didit.me/reference/database-validation-api | Field | Type | Required | Description | |-------|------|----------|-------------| | `issuing_state` | string | Yes | ISO 3166-1 alpha-3 country code. Valid: ARG, BOL, BRA, CHL, COL, CRI, DOM, ECU, ESP, GTM, HND, MEX, PAN, PER, PRY, SLV, URY, VEN | | `validation_type` | string | Yes | Validation type: one_by_one or two_by_two | | `identification_number` | string | Yes | Universal ID field - auto-maps to country-specific format | | `document_type` | string | No | Document type: P (Passport), DL (Driver License), ID (National ID), RP (Residence Permit). Required for some countries. | | `expiration_date` | string | No | Document expiration date YYYY-MM-DD. Required for some countries (e.g. ESP). | | `first_name` | string | No | First name | | `last_name` | string | No | Last name | | `date_of_birth` | string | No | Date of birth YYYY-MM-DD | | `nationality` | string | No | ISO 3166-1 alpha-3 nationality code | | `address` | string | No | Residential address | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"didit","path":"/v3/database-validation","body":{"issuing_state":"","validation_type":"","identification_number":"","document_type":"","expiration_date":"","first_name":"","last_name":"","date_of_birth":"","nationality":"","address":""}}' ``` ### Send Phone Code Send a one-time verification code to a phone number. `POST /v3/phone/send` **Estimated cost:** $0.3 **Docs:** https://docs.didit.me/reference/send-phone-verification-code-api | Field | Type | Required | Description | |-------|------|----------|-------------| | `phone_number` | string | Yes | Phone number in E.164 format (e.g. +14155552671) | | `options` | object | No | Options object with code_size (4-8, default 6), locale (e.g. en-US), preferred_channel (sms/whatsapp/telegram/voice, default whatsapp) | | `signals` | object | No | Fraud detection signals: ip, device_id, device_platform (android/ios/ipados/tvos/web), device_model, os_version, app_version, user_agent | | `vendor_data` | string | No | Unique identifier for vendor/user (UUID or email) for session tracking | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"didit","path":"/v3/phone/send","body":{"phone_number":"","options":"","signals":"","vendor_data":""}}' ``` ### Check Phone Code Verify a one-time code sent to a phone number. Maximum of three verification attempts per code. `POST /v3/phone/check` **Cost:** Free **Docs:** https://docs.didit.me/reference/check-phone-verification-code-api-1 | Field | Type | Required | Description | |-------|------|----------|-------------| | `phone_number` | string | Yes | Phone number in E.164 format (e.g. +14155552671) | | `code` | string | Yes | Verification code (4-8 characters) | | `duplicated_phone_number_action` | string | No | Action for duplicated numbers: NO_ACTION (default) or DECLINE | | `disposable_number_action` | string | No | Action for disposable numbers: NO_ACTION (default) or DECLINE | | `voip_number_action` | string | No | Action for VoIP numbers: NO_ACTION (default) or DECLINE | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"didit","path":"/v3/phone/check","body":{"phone_number":"","code":"","duplicated_phone_number_action":"","disposable_number_action":"","voip_number_action":""}}' ``` --- Full details and an interactive quickstart: https://orthogonal.com/discover/didit