Try asynchronous extraction from a Sensible URL
Use Sensible's asynchronous endpoints in production scenarios. You have two options for asynchronous processing:
-
Provide your own URLs for your documents.
-
Use URLs provided by Sensible for your documents.
This topic covers using URLs provided by Sensible. This is a good option if you can't create either publicly accessible or pre-signed URLs for your documents.
For either option, you can get the results as soon as they're ready by specifying a webhook.
Extract from a URL Sensible provides
Prerequisites
To follow these tutorials, you need:
- An API key. Create this key after you sign up for a Sensible account.
- Postman desktop app, or a command line with cURL installed..
Configure the extraction
To create example extraction configuration, follow the steps in Out-of-the-box extractions to add support for the 1040s document type to your account. You'll use this document type in the following steps.
Generate the upload URL
Generate a temporary, one-time Sensible URL for a document:
- Copy the following code sample and replace
*YOUR_API_KEY*with your API key:
curl --request POST 'https://api.sensible.so/v0/generate_upload_url/1040s' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{"content_type":"application/pdf"}'
- In your Postman workspace, click Import, select Raw text, paste the code sample, and follow the prompts to import the code sample.

- Click Send. The response looks something like the following:
{
"id": "14d82783-c12b-4e70-b0ae-ca1ce35a9836",
"created": "2021-06-16T16:22:56.576Z",
"status": "WAITING",
"type": "1040s",
"upload_url": "https://sensible-so-utility-bucket-prod-us-west-2.s3.us-west-2.amazonaws.com/EXTRACTION_UPLOAD/sensible/fc3484c5-3f35-4129-bb29-0ad1291ee9f8/EXTRACTION/14d82783-c12b-4e70-b0ae-ca1ce35a9836.pdf?AWSAccessKeyId=REDACTED&Expires=1623861476&Signature=REDACTED&x-amz-security-token=REDACTED"
}
Extract the data
Use the one-time URL you generated in the previous step to extract data from the document:
- Copy the following code sample. Replace
YOUR_UPLOAD_URLwith theupload_urlthat you received as a response in the previous steps:
curl --request PUT 'YOUR_UPLOAD_URL' \
--data-binary '@/PATH_TO_DOWNLOADED_DOCUMENT.pdf' \
--header 'Content-Type: application/pdf' \
- In your Postman workspace, click Import, select Raw text, paste the code sample, and follow the prompts to import to code sample.

Troubleshoot: Postman can automatically add authorization and content-type headers that cause errors:
- If Postman automatically specifies authorization for the request, then specify No Auth in the request's Auth tab :

- If Postman automatically specifies a content type header, then ensure that the value of the Content-Type header matches that of the
content_typebody parameter in the request in step 1. In this case, it must beapplication/pdf.

- If you haven't already, download the following example document, which works with the example
1040sdocument type you created in the Prerequisites section:
| Example document | Download link |
|---|
- Correct the path to the downloaded document in your request: click the Body tab, select binary, then click Select file and select the document:

- Click Send to send the request. The response is
200:
Retrieve extraction
To retrieve the document extraction, you have two options:
- Use the
/documentsendpoint. See the following steps. - Use a webhook. See Try a webhook.
To retrieve the extraction results with the /documents endpoint, take the following steps:
-
In a previous step on this page, you generated a URL and got back a response that included an extraction ID:
{ "id": "14d82783-c12b-4e70-b0ae-ca1ce35a9836" } -
Copy the document extraction
idfrom that response. -
Copy the following code sample and replace
*YOUR_EXTRACTION_ID*and*YOUR_API_KEY*:
curl --request GET 'https://api.sensible.so/v0/documents/YOUR_EXTRACTION_ID' \
--header 'Authorization: Bearer YOUR_API_KEY'
- In your Postman workspace, click Import, select Raw text, paste the code sample, and follow the prompts to import to code sample.

- Click Send. The response includes a
parsed_documentobject that looks something like the following:
{
"parsed_document": {
"year": {
"type": "string",
"value": "2021"
},
"filing_status.single": {
"type": "boolean",
"value": true
},
"filing_status.married_filing_jointly": {
"type": "boolean",
"value": false
},
"filing_status.married_filing_separately": {
"type": "boolean",
"value": false
},
"filing_status.head_of_household": {
"type": "boolean",
"value": false
},
"filing_status.qualifying_widow": {
"type": "boolean",
"value": false
},
"name": {
"type": "string",
"value": "Connor Roy"
},
"ssn": {
"type": "string",
"value": "337-18-2333"
}
}
}
Updated 9 months ago