{
"id": "8d2c6f0a-3e95-4a78-b1d4-9f0e5a3c7b62",
"s3Key": "evidence/2e8f6a3c-9d17-4b52-8c4a-7f1e3d9b0a65/0f7b2d9e-5c31-4a86-b4e0-8d2a6c1f9e57-harvest-licence-2025.pdf",
"fileName": "harvest-licence-2025.pdf",
"fileSize": 482113,
"mimeType": "application/pdf",
"message": "Evidence document uploaded successfully. Analysis in progress."
}{
"error": "Validation failed",
"details": [
{
"origin": "string",
"code": "too_small",
"minimum": 1,
"inclusive": true,
"path": [
"address",
"street"
],
"message": "Address is required."
}
]
}{
"error": "Invalid or expired API key"
}{
"error": "Forbidden"
}{
"error": "Resource not found"
}{
"error": "duplicate",
"existing": {
"id": "8d2c6f0a-3e95-4a78-b1d4-9f0e5a3c7b62",
"fileName": "harvest-licence-2025.pdf"
}
}{
"error": {
"code": "rate_limited",
"message": "…"
}
}{
"error": "Internal server error"
}Attach Evidence
Attach evidence to the supplier article named by supplierId + articleId (for per-order origin: the per-order copy’s id and its supplierLinks[].supplierId). For a new file, send uploadedS3Key, uploadedFileName, uploadedFileSize and uploadedMimeType after using the upload URL; the file field instead is for small files only (at most 4.5 MB, the platform request cap). To attach a file already stored by your company to another supplier article, send only its reuseS3Key from an earlier successful response — no second upload or metadata fields. Exactly one of these three upload sources is allowed. Each call attaches to one supplier article and starts asynchronous analysis. The document is recorded as uploaded by you (the API key’s user), not by the supplier. No supplier link of your company for supplierId + articleId answers 404 (another company’s link answers the same); an uploadedS3Key not issued to your company, or a reuseS3Key that your company does not own, answers 403. Requires evidence:write.
{
"id": "8d2c6f0a-3e95-4a78-b1d4-9f0e5a3c7b62",
"s3Key": "evidence/2e8f6a3c-9d17-4b52-8c4a-7f1e3d9b0a65/0f7b2d9e-5c31-4a86-b4e0-8d2a6c1f9e57-harvest-licence-2025.pdf",
"fileName": "harvest-licence-2025.pdf",
"fileSize": 482113,
"mimeType": "application/pdf",
"message": "Evidence document uploaded successfully. Analysis in progress."
}{
"error": "Validation failed",
"details": [
{
"origin": "string",
"code": "too_small",
"minimum": 1,
"inclusive": true,
"path": [
"address",
"street"
],
"message": "Address is required."
}
]
}{
"error": "Invalid or expired API key"
}{
"error": "Forbidden"
}{
"error": "Resource not found"
}{
"error": "duplicate",
"existing": {
"id": "8d2c6f0a-3e95-4a78-b1d4-9f0e5a3c7b62",
"fileName": "harvest-licence-2025.pdf"
}
}{
"error": {
"code": "rate_limited",
"message": "…"
}
}{
"error": "Internal server error"
}403; the body is { "error": "Not available for API keys" }, or { "error": "Forbidden" } when the key lacks the endpoint’s permission). Flow and error cases: Per-order origin via ERP.Authorizations
API key generated in Settings > API Keys. Include as Authorization: Bearer <key>.
Body
The supplier of the supplier link (supplierLinks[].supplierId of the article).
The article — for per-order origin, the per-order fork's id.
The s3Key from POST /api/v1/evidence/upload-url, after the PUT.
File name; required with uploadedS3Key.
Size in bytes (a form field, so a string); required with uploadedS3Key.
MIME type; required with uploadedS3Key.
The s3Key returned by an earlier successful POST /api/v1/evidence. Reuses that company-owned file for this target without another upload; do not send file or uploaded* fields with it.
The file itself, instead of the uploaded* fields — small files only (at most 4.5 MB, the platform request cap); use the upload URL for anything larger.
Default legal_compliance.
legal_compliance, questionnaire Free-text note for the document. It is passed to the document analysis as context.
The certification scheme the document belongs to (e.g. FSC). It is passed to the document analysis as a hint, and the document is then analysed as a risk-mitigation certificate.
Send true to store a second copy of a file that a 409 reported as a duplicate.
true Response
Evidence attached
The new evidence document's id.
Storage key of the stored file.
File name as stored.
Size of the stored file in bytes.
MIME type of the stored file.
Human-readable confirmation, e.g. that the analysis is in progress.