Complete document upload
curl --request POST \
--url https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"upload_id": "<string>",
"parts": [
{
"part_number": 123,
"etag": "<string>"
}
]
}
'import requests
url = "https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete"
payload = {
"upload_id": "<string>",
"parts": [
{
"part_number": 123,
"etag": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({upload_id: '<string>', parts: [{part_number: 123, etag: '<string>'}]})
};
fetch('https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'upload_id' => '<string>',
'parts' => [
[
'part_number' => 123,
'etag' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete"
payload := strings.NewReader("{\n \"upload_id\": \"<string>\",\n \"parts\": [\n {\n \"part_number\": 123,\n \"etag\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"upload_id\": \"<string>\",\n \"parts\": [\n {\n \"part_number\": 123,\n \"etag\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"upload_id\": \"<string>\",\n \"parts\": [\n {\n \"part_number\": 123,\n \"etag\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"file_name": "<string>",
"file_type": "<string>",
"type": "Document",
"presigned_url": "<string>"
}
}{
"description": "<string>",
"meta": {}
}{
"description": "<string>",
"meta": {}
}Multipart Upload
Complete document upload
Completes a multipart upload after all parts have been uploaded to S3. You must provide the upload_id from the create response and the ETag returned by S3 for each uploaded part. The ETag is returned in the response headers when you PUT to each presigned URL.
POST
/
v1
/
businesses
/
{businessId}
/
documents
/
{documentId}
/
complete
Complete document upload
curl --request POST \
--url https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"upload_id": "<string>",
"parts": [
{
"part_number": 123,
"etag": "<string>"
}
]
}
'import requests
url = "https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete"
payload = {
"upload_id": "<string>",
"parts": [
{
"part_number": 123,
"etag": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({upload_id: '<string>', parts: [{part_number: 123, etag: '<string>'}]})
};
fetch('https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'upload_id' => '<string>',
'parts' => [
[
'part_number' => 123,
'etag' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete"
payload := strings.NewReader("{\n \"upload_id\": \"<string>\",\n \"parts\": [\n {\n \"part_number\": 123,\n \"etag\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"upload_id\": \"<string>\",\n \"parts\": [\n {\n \"part_number\": 123,\n \"etag\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.layerfi.com/v1/businesses/{businessId}/documents/{documentId}/complete")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"upload_id\": \"<string>\",\n \"parts\": [\n {\n \"part_number\": 123,\n \"etag\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"file_name": "<string>",
"file_type": "<string>",
"type": "Document",
"presigned_url": "<string>"
}
}{
"description": "<string>",
"meta": {}
}{
"description": "<string>",
"meta": {}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Content-Type must be set to application/json.
Path Parameters
The UUID of the business.
The UUID of the document returned from the create endpoint.
Body
application/json
Response
Upload completed successfully.
A document stored in S3.
Show child attributes
Show child attributes
⌘I