> For the complete documentation index, see [llms.txt](https://help.delpha.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.delpha.io/delpha-api-and-mcp/api/name.md).

# Name

Names are at the heart of every contact record—yet they're often incomplete, misspelled, or reversed. Delpha's **Name Validator** helps you detect, normalize, and correct person names to ensure consistent, high-quality identity data across your systems.

Each input is evaluated through several smart checks:

* **Completeness:** Measures whether both *first name* and *last name* are present, returning individual scores for each.
* **Validity:** Confirms if the given names exist in trusted linguistic databases.
* **Consistency:** Compares the original input to its normalized form (capitalization, spacing, hyphenation, etc.).
* **Misspelled:** Detects potential typos and suggests the closest valid alternatives.
* **Reversed:** Identifies when *first name* and *last name* appear swapped based on statistical likelihoods.

The API returns a **normalized version** of the name, along with these detailed quality indicators. When needed, it also proposes gentle corrections—like fixing a misspelling or switching first and last names—always preserving the user's intended identity.

With **Name Validator**, your contact data stays clean, standardized, and ready for reliable engagement.

## Submit name for finding and validation

> Submit an name for finding and validation. Returns a job ID for tracking the process.

```json
{"openapi":"3.1.0","info":{"title":"Delpha Data Quality API","version":"1.0.0"},"tags":[{"name":"Name","description":"Names are at the heart of every contact record—yet they're often incomplete, misspelled, or reversed.\nDelpha's **Name Validator** helps you detect, normalize, and correct person names to ensure consistent, high-quality identity data across your systems.\n\nEach input is evaluated through several smart checks:\n- **Completeness:** Measures whether both *first name* and *last name* are present, returning individual scores for each.\n- **Validity:** Confirms if the given names exist in trusted linguistic databases.\n- **Consistency:** Compares the original input to its normalized form (capitalization, spacing, hyphenation, etc.).\n- **Misspelled:** Detects potential typos and suggests the closest valid alternatives.\n- **Reversed:** Identifies when *first name* and *last name* appear swapped based on statistical likelihoods.\n\nThe API returns a **normalized version** of the name, along with these detailed quality indicators. When needed, it also proposes gentle corrections—like fixing a misspelling or switching first and last names—always preserving the user's intended identity.\n\nWith **Name Validator**, your contact data stays clean, standardized, and ready for reliable engagement."}],"servers":[{"url":"https://api.delpha.io","description":"Production API server"}],"security":[{"oauth2":["api/access"]}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"OAuth2 client credentials flow for API access","flows":{"clientCredentials":{"tokenUrl":"https://secure.delpha.io/oauth2/token","scopes":{"api/access":"Access to the public API"}}}}},"schemas":{"NameSubmitInput":{"properties":{"first_name":{"type":"string","title":"First Name","description":"The first name of the entity"},"last_name":{"type":"string","title":"Last Name","description":"The last name of the entity"}},"type":"object","required":["first_name","last_name"],"title":"NameSubmitInput","description":"Payload to submit a new name quality job."},"NameSubmitOutput":{"properties":{"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id","description":"The job ID. Required if status <= 300."},"message":{"type":"string","title":"Message","description":"The message to return"},"status":{"type":"string","enum":["SUCCESS","ERROR"],"title":"Status","description":"The status of the process"},"status_code":{"type":"integer","title":"Status Code","description":"The status code to return"}},"type":"object","required":["message","status","status_code"],"title":"NameSubmitOutput","description":"Response after submitting a new name quality job."}}},"paths":{"/v1/name":{"post":{"tags":["Name"],"summary":"Submit name for finding and validation","description":"Submit an name for finding and validation. Returns a job ID for tracking the process.","operationId":"findAndValidateName","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameSubmitInput"}}},"required":true},"responses":{"202":{"description":"Job submitted to assess_name_v16","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameSubmitOutput"}}}},"400":{"description":"Invalid name format or missing required fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameSubmitOutput"}}}},"401":{"description":"Authentication failed - invalid or missing OAuth 2.0 token","content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameSubmitOutput"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameSubmitOutput"}}}},"502":{"description":"Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameSubmitOutput"}}}}}}}}}
```

## Get name finder and validator job status

> Retrieve the result and status of a previously submitted name finder and validator job.

```json
{"openapi":"3.1.0","info":{"title":"Delpha Data Quality API","version":"1.0.0"},"tags":[{"name":"Name","description":"Names are at the heart of every contact record—yet they're often incomplete, misspelled, or reversed.\nDelpha's **Name Validator** helps you detect, normalize, and correct person names to ensure consistent, high-quality identity data across your systems.\n\nEach input is evaluated through several smart checks:\n- **Completeness:** Measures whether both *first name* and *last name* are present, returning individual scores for each.\n- **Validity:** Confirms if the given names exist in trusted linguistic databases.\n- **Consistency:** Compares the original input to its normalized form (capitalization, spacing, hyphenation, etc.).\n- **Misspelled:** Detects potential typos and suggests the closest valid alternatives.\n- **Reversed:** Identifies when *first name* and *last name* appear swapped based on statistical likelihoods.\n\nThe API returns a **normalized version** of the name, along with these detailed quality indicators. When needed, it also proposes gentle corrections—like fixing a misspelling or switching first and last names—always preserving the user's intended identity.\n\nWith **Name Validator**, your contact data stays clean, standardized, and ready for reliable engagement."}],"servers":[{"url":"https://api.delpha.io","description":"Production API server"}],"security":[{"oauth2":["api/access"]}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"OAuth2 client credentials flow for API access","flows":{"clientCredentials":{"tokenUrl":"https://secure.delpha.io/oauth2/token","scopes":{"api/access":"Access to the public API"}}}}},"schemas":{"NamePullOutput":{"properties":{"message":{"type":"string","title":"Message","description":"A human-readable message describing the current state or outcome of the job."},"status":{"type":"string","enum":["SUCCESS","ERROR"],"title":"Status","description":"The status of the process"},"status_code":{"type":"integer","title":"Status Code","description":"The HTTP status code representing the job's current state."},"result":{"anyOf":[{"$ref":"#/components/schemas/NameModel"},{"type":"null"}],"description":"The result of the name quality job"},"process_time":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Process Time","description":"The total time taken to process the job, in seconds."}},"type":"object","required":["message","status","status_code"],"title":"NamePullOutput","description":"Response after retrieving the status and result of an name quality job."},"NameModel":{"properties":{"data_type":{"$ref":"#/components/schemas/DataType","description":"The type of data for this field"},"normalized_value":{"$ref":"#/components/schemas/NormalizedNameModel","description":"Normalized name value."},"label":{"type":"string","enum":["No","OK","Misspelled","Reversed"],"title":"Label","description":"Label for the name."},"scores":{"$ref":"#/components/schemas/NameScoresModel","description":"Scores for the field"},"suggestions":{"$ref":"#/components/schemas/NameRecommendation","description":"Recommendations for the name."}},"type":"object","required":["data_type","normalized_value","label","scores","suggestions"],"title":"NameModel","description":"Model representing the details of an name field."},"DataType":{"type":"string","enum":["email","social_network","name","legal_id","phone","address","website"],"title":"DataType"},"NormalizedNameModel":{"properties":{"first_name":{"type":"string","title":"First Name","description":"The first name of the entity"},"last_name":{"type":"string","title":"Last Name","description":"The last name of the entity"}},"type":"object","required":["first_name","last_name"],"title":"NormalizedNameModel","description":"Model representing the normalized name."},"NameScoresModel":{"properties":{"accuracy":{"type":"number","title":"Accuracy","description":"The accuracy of the name"},"reversed":{"type":"number","title":"Reversed","description":"The reversed of the name"},"misspelled":{"$ref":"#/components/schemas/DoubleScoresModel","description":"The misspelled of the names"},"consistency":{"$ref":"#/components/schemas/DoubleScoresModel","description":"The consistency of the names"},"validity":{"$ref":"#/components/schemas/DoubleScoresModel","description":"The validity of the names"},"completeness":{"$ref":"#/components/schemas/DoubleScoresModel","description":"The completeness of the names"}},"type":"object","required":["accuracy","reversed","misspelled","consistency","validity","completeness"],"title":"NameScoresModel","description":"Model representing the scores of an name."},"DoubleScoresModel":{"properties":{"first_name":{"type":"number","title":"First Name","description":"The scores of the first name"},"last_name":{"type":"number","title":"Last Name","description":"The scores of the last name"}},"type":"object","required":["first_name","last_name"],"title":"DoubleScoresModel","description":"Model representing the scores of an double name."},"NameRecommendation":{"properties":{"first_name":{"items":{"$ref":"#/components/schemas/SingleNameRecommendation"},"type":"array","title":"First Name","description":"The first name of the entity"},"last_name":{"items":{"$ref":"#/components/schemas/SingleNameRecommendation"},"type":"array","title":"Last Name","description":"The last name of the entity"}},"type":"object","required":["first_name","last_name"],"title":"NameRecommendation","description":"Model representing a recommendation for an name."},"SingleNameRecommendation":{"properties":{"value":{"type":"string","title":"Value","description":"The value of the name"},"score":{"type":"number","maximum":1,"minimum":0,"title":"Score","description":"The score of the name"}},"type":"object","required":["value","score"],"title":"SingleNameRecommendation","description":"Model representing a recommendation for a single name."}}},"paths":{"/v1/name/{job_id}":{"get":{"tags":["Name"],"summary":"Get name finder and validator job status","description":"Retrieve the result and status of a previously submitted name finder and validator job.","operationId":"getNameResult","responses":{"200":{"description":"Job succeeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NamePullOutput"}}}},"202":{"description":"Job is still running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NamePullOutput"}}}},"400":{"description":"Input validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NamePullOutput"}}}},"401":{"description":"Authentication failed - invalid or missing OAuth 2.0 token","content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}}},"500":{"description":"Failed to retrieve job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NamePullOutput"}}}},"504":{"description":"Job timed out.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NamePullOutput"}}}}}}}}}
```

## Submit a batch of name items

> Submit 1..100 name items for asynchronous batch processing as ONE job (never a per-item fan-out). Returns a \`job\_id\` immediately (202); poll \`GET /v1/name/batch/{job\_id}\` for status and results. Each item is validated identically to the single-route \`POST /v1/name\` payload; a payload with 0 items or more than 100 is rejected with 422.

```json
{"openapi":"3.1.0","info":{"title":"Delpha Data Quality API","version":"1.0.0"},"tags":[{"name":"Name","description":"Names are at the heart of every contact record—yet they're often incomplete, misspelled, or reversed.\nDelpha's **Name Validator** helps you detect, normalize, and correct person names to ensure consistent, high-quality identity data across your systems.\n\nEach input is evaluated through several smart checks:\n- **Completeness:** Measures whether both *first name* and *last name* are present, returning individual scores for each.\n- **Validity:** Confirms if the given names exist in trusted linguistic databases.\n- **Consistency:** Compares the original input to its normalized form (capitalization, spacing, hyphenation, etc.).\n- **Misspelled:** Detects potential typos and suggests the closest valid alternatives.\n- **Reversed:** Identifies when *first name* and *last name* appear swapped based on statistical likelihoods.\n\nThe API returns a **normalized version** of the name, along with these detailed quality indicators. When needed, it also proposes gentle corrections—like fixing a misspelling or switching first and last names—always preserving the user's intended identity.\n\nWith **Name Validator**, your contact data stays clean, standardized, and ready for reliable engagement."}],"servers":[{"url":"https://api.delpha.io","description":"Production API server"}],"security":[{"oauth2":["api/access"]}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"OAuth2 client credentials flow for API access","flows":{"clientCredentials":{"tokenUrl":"https://secure.delpha.io/oauth2/token","scopes":{"api/access":"Access to the public API"}}}}},"schemas":{"NameBatchSubmitInput":{"properties":{"items":{"items":{"$ref":"#/components/schemas/NameSubmitInput"},"type":"array","maxItems":100,"minItems":1,"title":"Items","description":"The batch items (1..100), each a single-route input payload."}},"type":"object","required":["items"],"title":"NameBatchSubmitInput","description":"Batch envelope for `POST /v1/name/batch`: `{\"items\": [...]}` (1..100 items, 422 beyond); each item is shaped exactly like the single-route `POST /v1/name` payload (reused here by $ref as `NameSubmitInput`)."},"NameSubmitInput":{"properties":{"first_name":{"type":"string","title":"First Name","description":"The first name of the entity"},"last_name":{"type":"string","title":"Last Name","description":"The last name of the entity"}},"type":"object","required":["first_name","last_name"],"title":"NameSubmitInput","description":"Payload to submit a new name quality job."},"BatchSubmitOutput":{"properties":{"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id","description":"The job ID. Required if status <= 300."},"item_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Item Count","description":"Number of items accepted in the batch (present on success)."},"message":{"type":"string","title":"Message","description":"The message to return"},"status":{"type":"string","enum":["SUCCESS","ERROR"],"title":"Status","description":"The status of the process"},"status_code":{"type":"integer","title":"Status Code","description":"The status code to return"}},"type":"object","required":["message","status","status_code"],"title":"BatchSubmitOutput","description":"Response after submitting a batch quality job."}}},"paths":{"/v1/name/batch":{"post":{"tags":["Name"],"summary":"Submit a batch of name items","description":"Submit 1..100 name items for asynchronous batch processing as ONE job (never a per-item fan-out). Returns a `job_id` immediately (202); poll `GET /v1/name/batch/{job_id}` for status and results. Each item is validated identically to the single-route `POST /v1/name` payload; a payload with 0 items or more than 100 is rejected with 422.","operationId":"submitNameBatch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameBatchSubmitInput"}}},"required":true},"responses":{"202":{"description":"Batch submitted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSubmitOutput"}}}},"401":{"description":"Authentication failed - invalid or missing OAuth 2.0 token","content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSubmitOutput"}}}},"422":{"description":"Invalid batch payload or size (1..100)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSubmitOutput"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSubmitOutput"}}}},"502":{"description":"Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSubmitOutput"}}}}}}}}}
```

## Get name batch job status

> Poll a batch of name items submitted via \`POST /v1/name/batch\`. 202 while running (with \`item\_count\`/\`processed\_count\` progress); 200 once SUCCEEDED (with \`counts\`, a presigned \`result\_url\`, and \`result\_data\` inlined when <=1MB); 409 if the credit reservation expired before delivery (resubmit); 500 if the job failed; 504 past the 24h ceiling (batch jobs run on Batch/Vertex timescales, hours not minutes).

```json
{"openapi":"3.1.0","info":{"title":"Delpha Data Quality API","version":"1.0.0"},"tags":[{"name":"Name","description":"Names are at the heart of every contact record—yet they're often incomplete, misspelled, or reversed.\nDelpha's **Name Validator** helps you detect, normalize, and correct person names to ensure consistent, high-quality identity data across your systems.\n\nEach input is evaluated through several smart checks:\n- **Completeness:** Measures whether both *first name* and *last name* are present, returning individual scores for each.\n- **Validity:** Confirms if the given names exist in trusted linguistic databases.\n- **Consistency:** Compares the original input to its normalized form (capitalization, spacing, hyphenation, etc.).\n- **Misspelled:** Detects potential typos and suggests the closest valid alternatives.\n- **Reversed:** Identifies when *first name* and *last name* appear swapped based on statistical likelihoods.\n\nThe API returns a **normalized version** of the name, along with these detailed quality indicators. When needed, it also proposes gentle corrections—like fixing a misspelling or switching first and last names—always preserving the user's intended identity.\n\nWith **Name Validator**, your contact data stays clean, standardized, and ready for reliable engagement."}],"servers":[{"url":"https://api.delpha.io","description":"Production API server"}],"security":[{"oauth2":["api/access"]}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"OAuth2 client credentials flow for API access","flows":{"clientCredentials":{"tokenUrl":"https://secure.delpha.io/oauth2/token","scopes":{"api/access":"Access to the public API"}}}}},"schemas":{"NameBatchPullOutput":{"properties":{"message":{"type":"string","title":"Message","description":"A human-readable message describing the current state or outcome of the job."},"status":{"type":"string","enum":["SUCCESS","ERROR"],"title":"Status","description":"The status of the process"},"status_code":{"type":"integer","title":"Status Code","description":"The HTTP status code representing the job's current state."},"counts":{"anyOf":[{"$ref":"#/components/schemas/CountsModel"},{"type":"null"}],"description":"Item-level outcome counts (present only once the job has completed)."},"result_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Url","description":"Presigned URL (1h expiry) to download the full batch result JSON from S3."},"result_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result Data","description":"The full batch result JSON, inlined (opaque — assembled by the DataQuality container / DelphaAgents compiler). Present only when status_code == 200 and the result file is <=1MB; otherwise omitted (fetch `result_url` instead). Shape: `{job_id, usecase, counts, items: [...]}`; its `result` is the SAME object `GET /v1/name/{job_id}` returns for a single item."},"item_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Item Count","description":"Total number of items in the batch (present while the job is running)."},"processed_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Processed Count","description":"Number of items processed so far (present while the job is running; may be absent early in the job's lifecycle)."},"process_time":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Process Time","description":"The total time taken to process the job, in seconds."}},"type":"object","required":["message","status","status_code"],"title":"NameBatchPullOutput","description":"Response for `GET /v1/name/batch/{job_id}`. Each `result_data.items[]` entry is keyed to its request item by `dispatch_key` (`{\"record_id\": \"<job_id>#<index>\"}`). On success its `result` is the SAME object `GET /v1/name/{job_id}` returns for a single item. On failure it carries an `error` string instead of `result`."},"CountsModel":{"properties":{"total":{"type":"integer","title":"Total","description":"Total number of items submitted."},"succeeded":{"type":"integer","title":"Succeeded","description":"Number of items that succeeded."},"failed":{"type":"integer","title":"Failed","description":"Number of items that failed."}},"type":"object","required":["total","succeeded","failed"],"title":"CountsModel","description":"Item-level outcome counts for a completed batch job."}}},"paths":{"/v1/name/batch/{job_id}":{"get":{"tags":["Name"],"summary":"Get name batch job status","description":"Poll a batch of name items submitted via `POST /v1/name/batch`. 202 while running (with `item_count`/`processed_count` progress); 200 once SUCCEEDED (with `counts`, a presigned `result_url`, and `result_data` inlined when <=1MB); 409 if the credit reservation expired before delivery (resubmit); 500 if the job failed; 504 past the 24h ceiling (batch jobs run on Batch/Vertex timescales, hours not minutes).","operationId":"getNameBatchResult","responses":{"200":{"description":"97/100 items succeeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameBatchPullOutput"}}}},"202":{"description":"Job is still running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameBatchPullOutput"}}}},"400":{"description":"Missing job_id in path parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameBatchPullOutput"}}}},"401":{"description":"Authentication failed - invalid or missing OAuth 2.0 token","content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}}},"404":{"description":"No job found for job_id: ...","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameBatchPullOutput"}}}},"409":{"description":"Reservation expired; please resubmit the job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameBatchPullOutput"}}}},"500":{"description":"Job failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameBatchPullOutput"}}}},"504":{"description":"Job timed out.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameBatchPullOutput"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.delpha.io/delpha-api-and-mcp/api/name.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
