curl --request POST \
--url https://api.next.orenda.finance/v1/customers/{customerId}/documents/presign \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"collection": "kyc",
"documentType": "PROOF_OF_ADDRESS",
"contentType": "application/pdf"
}
'{
"success": true,
"data": {
"uploadUrl": "https://orenda-kyc-documents.s3.eu-west-1.amazonaws.com/cust_3f9a2b7e/kyc/proof-of-address.pdf?X-Amz-Signature=...",
"bucket": "orenda-kyc-documents",
"key": "cust_3f9a2b7e/kyc/proof-of-address.pdf",
"method": "PUT",
"contentType": "application/pdf",
"expiresInSeconds": 900
}
}Onboarding
Document presign URL
Upload or download verification documents via short-lived URLs.
POST
/
v1
/
customers
/
{customerId}
/
documents
/
presign
curl --request POST \
--url https://api.next.orenda.finance/v1/customers/{customerId}/documents/presign \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"collection": "kyc",
"documentType": "PROOF_OF_ADDRESS",
"contentType": "application/pdf"
}
'{
"success": true,
"data": {
"uploadUrl": "https://orenda-kyc-documents.s3.eu-west-1.amazonaws.com/cust_3f9a2b7e/kyc/proof-of-address.pdf?X-Amz-Signature=...",
"bucket": "orenda-kyc-documents",
"key": "cust_3f9a2b7e/kyc/proof-of-address.pdf",
"method": "PUT",
"contentType": "application/pdf",
"expiresInSeconds": 900
}
}Returns a short-lived presigned URL for a verification document. One endpoint, two modes —
the body decides which:
- Upload
- Download
For large files, presign + direct upload beats the inline base64 of
Upload a KYC document. Send Then
collection (kyc or kyb)
and a documentType from the KYC schema:{ "collection": "kyc", "documentType": "PROOF_OF_ADDRESS", "contentType": "application/pdf" }
PUT the file to the returned uploadUrl with the same Content-Type. Keep the
returned key — it identifies the document later.To let the customer re-view a document they’ve submitted, send the Then
applicationId
plus either the document’s s3Url, or its collection + key:{ "applicationId": "app_123", "collection": "kyc", "key": "kyc-documents/…/passport.pdf" }
GET the returned downloadUrl before expiresAt.The URLs expire —
expiresInSeconds is clamped to a server-side maximum. Request the
presign right before the transfer, not ahead of time.Authorizations
The user's access_token from authentication. The program and environment (sandbox/prod) are read from the token.
Path Parameters
The customer's ID.
Body
application/json
Upload: required. Download by key: required. Which document collection.
Available options:
kyc, kyb Upload: required. A document type from the program's KYC schema.
Upload: optional. MIME type the file will be PUT with, e.g. application/pdf.
Download: required. The application the document belongs to.
Download: the document's storage URI (e.g. from the upload response). Use this or collection + key.
Download: the document's storage key. Send with collection.
Optional. How long the URL stays valid (clamped to a server-side maximum).
⌘I