What to send
Upload a document
versionId. A customer or transaction links the exact DocumentVersion it was
submitted with, rather than a mutable pointer that could later refer to different bytes.
Submit a URL reference
Send exactly one ofcontentBase64 or sourceUrl. Both and neither are rejected. The other
metadata fields stay the same:
PENDING_DOWNLOAD version and returns the existing resource/version response (201 for a new document; 200 for a new version).
It does not fetch, sign, or verify the URL at ingestion time. No stored file or verified size
is claimed, and the reference is not available evidence for a KYB dossier.
Signing and downloading require a later authorized provider integration. A private URL cannot
be signed using Karsa’s own S3 credentials unless Karsa has access to that object. Signed URLs
can expire; prefer stable unsigned references when the provider supports signing them later.
Treat submitted signed URLs as credentials. They are not returned in the ingestion response,
and receipts contain a hash instead of the URL. No public URL-read endpoint is added here.
To supply the downloaded bytes later, submit contentBase64 under the same externalId with
a new idempotency key. This creates a new AVAILABLE version; existing links to an earlier
pending version remain pinned to that version.
Versioning and deduplication
Send the sameexternalId when the same source document receives corrected content or metadata.
Use a new idempotency key for the changed snapshot. Retrying the same logical upload uses the same
idempotency key and does not create another version.
Document uploads do not accept arbitrary customData. Send only the fields in the contract.
Related
- Customers: link identity and onboarding documents
- Transactions: link transaction attachments
- How records fit together: stable resources and immutable versions