> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.emtelligent.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.emtelligent.com/_mcp/server.

# Submit files containing documents for processing

POST https://nlp.emtelligent.com/emtellipro/submit
Content-Type: multipart/form-data

Submit files containing documents, starting a task that will process them.

Reference: https://docs.emtelligent.com/nlp/api/tasks/submit-files-containing-documents-for-processing

## Authentication

- `Authorization` header (required) — This API uses [our API key HMAC authentication](/nlp/reference/hmac-authentication), with empty credential scope. Access keys and secret access keys will be provided by Emtelligent; contact us for key management. Keys will consist of only printable ASCII characters, and leading and trailing whitespace is insignificant.
- `x-api-key` header (required) — API keys will be provided by Emtelligent; contact us for key management. Keys will consist of only printable ASCII characters, and leading and trailing whitespace is insignificant.

## Request

### Query parameters

- `callback` (string, optional) — URL to call on task completion (either success or failure). Will be given the task ID as a query parameter 'id'. Any other information or results must be fetched through other API calls.
- `features` (list of enum, optional) — List of features to enable, comma separated. If not given, a default set of features will be enabled that depends on the NLP API deployment configuration. This set of features is chosen during NLP API deployment. For the list of default features for your API server please contact Emtelligent.
  - Allowed values: `text`, `emtelligent-ontology`, `snomed-ontology`, `radlex-ontology`, `umlsnci-ontology`, `medcin-ontology`, `rxnorm-ontology`, `umlshgnc-ontology`, `umlsloinc-ontology`, `snomedicd10-ontology`, `snomedicd10cm-ontology`, `radplaybook-ontology`, `experiencer-relations`, `followup-relations`, `measurement-relations`, `imagelink-relations`, `qualifier-relations`, `medication-relations`, `temporality-relations`, `reportedevent-relations`, `anatomicsite-relations`, `entity-polarity`, `entity-uncertainty`, `entity-question-status`, `entity-guidance`, `entity-measurement-unit`, `entity-known-ambiguity`, `entity-concept-link-confidence`, `entity-experiencer`, `entity-factuality`, `entity-contextual-validity`, `document-infer-structure`

### Headers

- `Authorization` (string, required) — Authentication information.
- `Host` (string, required) — Host of server.
- `X-Auth-Date` (string, required) — Date and time of request.

### Body (multipart/form-data)

This endpoint expects a multipart form.

- `file` (list of MultipartInputDocument, required)

## Response

### 202

Accepted, returning task information.

- `id` (string, required) — Unique ID for a task. Use it to check task status or retrieve results.

## Errors

### 400 Bad Request Error

Invalid submission.

- `any`

### 401 Unauthorized Error

Authentication information is missing or invalid.

- `any`

### 500 Internal Server Error

Internal server error.

- `any`

### 503 Service Unavailable Error

Server is currently unavailable, for example: if server is out of storage space.

- `any`

## Examples

**Request**

```json
{
  "file": [
    "INDICATION: ABDOMINAL PAIN.\n\nTECHNIQUE: Multiple axial CT images were obtained through the abdomen and pelvis after administration of oral contrast material only.\n\nFINDINGS:\nThere is evidence of diffuse hepatic hypoattenuation compatible with fatty infiltration. There is no intra or extrahepatic biliary ductal dilatation. "
  ]
}
```

**Response**

```json
{
  "id": "2b871be2-f8d2-44d2-b5bd-e184fb317657"
}
```

**SDK Code**

```python
import requests

url = "https://nlp.emtelligent.com/emtellipro/submit"

querystring = {"callback":"http://www.example.com/taskcomplete","features":"emtelligent-ontology,radlex-ontology,entity-polarity"}

payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n[\n  \"INDICATION: ABDOMINAL PAIN.\\n\\nTECHNIQUE: Multiple axial CT images were obtained through the abdomen and pelvis after administration of oral contrast material only.\\n\\nFINDINGS:\\nThere is evidence of diffuse hepatic hypoattenuation compatible with fatty infiltration. There is no intra or extrahepatic biliary ductal dilatation. \"\n]\r\n-----011000010111000001101001--\r\n"
headers = {
    "Authorization": "<apiKey>",
    "Host": "nlp.emtelligent.com",
    "X-Auth-Date": "20171225T031510Z",
    "Content-Type": "multipart/form-data; boundary=---011000010111000001101001"
}

response = requests.post(url, data=payload, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://nlp.emtelligent.com/emtellipro/submit?callback=http%3A%2F%2Fwww.example.com%2Ftaskcomplete&features=emtelligent-ontology%2Cradlex-ontology%2Centity-polarity';
const form = new FormData();
form.append('file', '[
  "INDICATION: ABDOMINAL PAIN.\n\nTECHNIQUE: Multiple axial CT images were obtained through the abdomen and pelvis after administration of oral contrast material only.\n\nFINDINGS:\nThere is evidence of diffuse hepatic hypoattenuation compatible with fatty infiltration. There is no intra or extrahepatic biliary ductal dilatation. "
]');

const options = {
  method: 'POST',
  headers: {
    Authorization: '<apiKey>',
    Host: 'nlp.emtelligent.com',
    'X-Auth-Date': '20171225T031510Z'
  }
};

options.body = form;

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"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://nlp.emtelligent.com/emtellipro/submit?callback=http%3A%2F%2Fwww.example.com%2Ftaskcomplete&features=emtelligent-ontology%2Cradlex-ontology%2Centity-polarity"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n[\n  \"INDICATION: ABDOMINAL PAIN.\\n\\nTECHNIQUE: Multiple axial CT images were obtained through the abdomen and pelvis after administration of oral contrast material only.\\n\\nFINDINGS:\\nThere is evidence of diffuse hepatic hypoattenuation compatible with fatty infiltration. There is no intra or extrahepatic biliary ductal dilatation. \"\n]\r\n-----011000010111000001101001--\r\n")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<apiKey>")
	req.Header.Add("Host", "nlp.emtelligent.com")
	req.Header.Add("X-Auth-Date", "20171225T031510Z")

	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://nlp.emtelligent.com/emtellipro/submit?callback=http%3A%2F%2Fwww.example.com%2Ftaskcomplete&features=emtelligent-ontology%2Cradlex-ontology%2Centity-polarity")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Host"] = 'nlp.emtelligent.com'
request["X-Auth-Date"] = '20171225T031510Z'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n[\n  \"INDICATION: ABDOMINAL PAIN.\\n\\nTECHNIQUE: Multiple axial CT images were obtained through the abdomen and pelvis after administration of oral contrast material only.\\n\\nFINDINGS:\\nThere is evidence of diffuse hepatic hypoattenuation compatible with fatty infiltration. There is no intra or extrahepatic biliary ductal dilatation. \"\n]\r\n-----011000010111000001101001--\r\n"

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.post("https://nlp.emtelligent.com/emtellipro/submit?callback=http%3A%2F%2Fwww.example.com%2Ftaskcomplete&features=emtelligent-ontology%2Cradlex-ontology%2Centity-polarity")
  .header("Authorization", "<apiKey>")
  .header("Host", "nlp.emtelligent.com")
  .header("X-Auth-Date", "20171225T031510Z")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n[\n  \"INDICATION: ABDOMINAL PAIN.\\n\\nTECHNIQUE: Multiple axial CT images were obtained through the abdomen and pelvis after administration of oral contrast material only.\\n\\nFINDINGS:\\nThere is evidence of diffuse hepatic hypoattenuation compatible with fatty infiltration. There is no intra or extrahepatic biliary ductal dilatation. \"\n]\r\n-----011000010111000001101001--\r\n")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://nlp.emtelligent.com/emtellipro/submit?callback=http%3A%2F%2Fwww.example.com%2Ftaskcomplete&features=emtelligent-ontology%2Cradlex-ontology%2Centity-polarity', [
  'multipart' => [
    [
        'name' => 'file',
        'contents' => '[
  "INDICATION: ABDOMINAL PAIN.\\n\\nTECHNIQUE: Multiple axial CT images were obtained through the abdomen and pelvis after administration of oral contrast material only.\\n\\nFINDINGS:\\nThere is evidence of diffuse hepatic hypoattenuation compatible with fatty infiltration. There is no intra or extrahepatic biliary ductal dilatation. "
]'
    ]
  ]
  'headers' => [
    'Authorization' => '<apiKey>',
    'Host' => 'nlp.emtelligent.com',
    'X-Auth-Date' => '20171225T031510Z',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://nlp.emtelligent.com/emtellipro/submit?callback=http%3A%2F%2Fwww.example.com%2Ftaskcomplete&features=emtelligent-ontology%2Cradlex-ontology%2Centity-polarity");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Host", "nlp.emtelligent.com");
request.AddHeader("X-Auth-Date", "20171225T031510Z");
request.AddParameter("undefined", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n[\n  \"INDICATION: ABDOMINAL PAIN.\\n\\nTECHNIQUE: Multiple axial CT images were obtained through the abdomen and pelvis after administration of oral contrast material only.\\n\\nFINDINGS:\\nThere is evidence of diffuse hepatic hypoattenuation compatible with fatty infiltration. There is no intra or extrahepatic biliary ductal dilatation. \"\n]\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "<apiKey>",
  "Host": "nlp.emtelligent.com",
  "X-Auth-Date": "20171225T031510Z"
]
let parameters = [
  [
    "name": "file",
    "value": "[
  \"INDICATION: ABDOMINAL PAIN.\n\nTECHNIQUE: Multiple axial CT images were obtained through the abdomen and pelvis after administration of oral contrast material only.\n\nFINDINGS:\nThere is evidence of diffuse hepatic hypoattenuation compatible with fatty infiltration. There is no intra or extrahepatic biliary ductal dilatation. \"
]"
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body += "--\(boundary)\r\n"
  body += "Content-Disposition:form-data; name=\"\(paramName)\""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
    if (error != nil) {
      print(error as Any)
    }
    body += "; filename=\"\(filename)\"\r\n"
    body += "Content-Type: \(contentType)\r\n\r\n"
    body += fileContent
  } else if let paramValue = param["value"] {
    body += "\r\n\r\n\(paramValue)"
  }
}

let request = NSMutableURLRequest(url: NSURL(string: "https://nlp.emtelligent.com/emtellipro/submit?callback=http%3A%2F%2Fwww.example.com%2Ftaskcomplete&features=emtelligent-ontology%2Cradlex-ontology%2Centity-polarity")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```