---
title: "Save the supplier's draft answers, link token in a header (public; body at most 256 KiB)"
method: PUT
path: "/shared/supplier-request/draft"
tags: ["Supplier portal"]
---

# Save the supplier's draft answers, link token in a header (public; body at most 256 KiB)

`PUT /shared/supplier-request/draft`

The token travels in the X-Greentally-Share-Token header. Validates the answers' shape and that they stay inside the requested sections and sites (400 VALIDATION_ERROR with details.fields). A submitted request answers 409 INVALID_STATE until the customer returns it.

## Headers

- `X-Greentally-Share-Token` string, required

## Request body

- SharedSupplierRequestDraftInput
  - `answers` SupplierPortalAnswers, required — The questionnaire answers (supplierportal.Answers); validated in Go.

## Response `200`

The questionnaire with the saved draft

- SharedSupplierRequestResponse
  - `data` SharedSupplierRequest, required — What the supplier's link shows: the request, the customer's name, only the request's own sites, the draft and the uploaded files. No organization, user or other row ids.
    - `contactName` string, required
    - `customerName` string, required
    - `draft` SupplierPortalAnswers, required — The questionnaire answers (supplierportal.Answers); validated in Go.
    - `draftSavedAt` string, date-time, nullable, required
    - `dueDate` string, date, nullable, required
    - `expiresAt` string, date-time, required
    - `files` SupplierPortalFile[], required
      - `contentType` string, required
      - `fileName` string, required
      - `id` string, required
      - `sizeBytes` integer, required
      - `uploadedAt` string, date-time, required
    - `limits` SharedSupplierRequestLimits, required
      - `allowedExtensions` string[], required
      - `maxFileBytes` integer, required
      - `maxFiles` integer, required
      - `maxLines` integer, required
    - `message` string, required
    - `periodEnd` string, date, required — Exclusive: the day after the last day.
    - `periodStart` string, date, required
    - `returnComment` string, required — The customer's comment when the latest submission was returned; empty otherwise.
    - `sections` SupplierPortalSections, required
      - `activityData` boolean, required
      - `allocation` boolean, required
      - `evidenceFiles` boolean, required
      - `productFootprint` boolean, required
      - `sbtiStatus` boolean, required
    - `sites` SupplierPortalSite[], required
      - `id` string, required
      - `name` string, required
      - `supplyPoints` string[], required
    - `status` 'sent' | 'opened' | 'submitted' | 'returned', required
    - `supplierName` string, required

## Other responses

- `400` — Bad Request
- `404` — Not Found
- `409` — Conflict
- `410` — Gone
- `413` — Payload Too Large
- `429` — Too Many Requests

## Changes

- **2026-10-06** `461a0ebc7731` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/greentally/apis/esgai-api/changes/shared/supplier-request/draft/put.md)

---

[API](https://skmtc.dev/greentally/apis/esgai-api.md) · [All operations](https://skmtc.dev/greentally/apis/esgai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/greentally/apis/esgai-api/revisions/461a0ebc7731?raw)
