Skip to content
SignWithDocs
Esc
  • Developer docs homeDocs
  • ChangelogDocs
  • OverviewREST API · Get started
  • Quick startREST API · Get started
  • Text tagsREST API · Get started
  • AuthenticationREST API · Get started
  • Making requestsREST API · Get started
  • ErrorsREST API · Get started

Feedback API reference

Report bugs, feature requests, feedback or questions to the SignWith team on the user's behalf. Meant for API clients and AI agents such as the SignWith MCP server.

Updated

Send feedback to the SignWith team

post/api/v1/feedback

Sends a bug report, feature request, general feedback or question to the SignWith team on the user's behalf. This is how API clients and AI agents — for example the SignWith MCP server (recorded with source mcp) — pass on problems or ideas the user mentions, without the user having to leave their tool. The team is notified straight away.

Include what happened and, in context, identifiers that help reproduce it (the failing error_code, signature_request_id, etc.). Don't include passwords, API keys or document contents. Read-only keys may call it. Limited to 20 messages per user per hour (429 rate_limited).

Headers

  • Idempotency-Keystring

    A unique value (e.g. a UUID) that makes retries of this request safe. A successful response is stored for 24 hours and replayed for retries with the same key.

    at most 255 characters

Request body

  • typestring

    What kind of message this is.

    One of bug, feature_request, feedback, questionDefault feedback
  • messagestringRequired

    The feedback in plain language. Up to 5,000 characters.

    1 to 5,000 characters
  • contextobject

    Optional details that help the team investigate. Only the keys below are kept; others are dropped.

    7 child fields
    • clientstring

      Name of the client or AI assistant, e.g. claude-desktop.

    • client_versionstring
    • toolstring

      The tool or operation the user was using.

    • signature_request_idinteger or string
    • template_idinteger or string
    • error_codestring

      The API error.code the user ran into, if any.

    • request_idstring

Request sample

curl -X POST https://app.signwith.co/api/v1/feedback \
  -H "Authorization: Bearer $SIGNWITH_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "bug",
  "message": "Prefilling the \"Start date\" field with 2026-11-01 shows an empty date to the signer.",
  "context": {
    "client": "claude-desktop",
    "client_version": "1.4.2",
    "tool": "send_signature_request",
    "signature_request_id": 4812,
    "template_id": 311
  }
}'
Example: Feature request
curl -X POST https://app.signwith.co/api/v1/feedback \
  -H "Authorization: Bearer $SIGNWITH_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "feature_request",
  "message": "Please let me set a different reminder schedule per signature request."
}'

Response 201

The feedback was received. Returns a feedback object.

Example response: see the example object below.

Errors

400The request body is not valid JSON. (invalid_json)
401The API key is missing, invalid or expired, or its account has been archived. (unauthenticated, api_key_expired)
409A request with the same Idempotency-Key is still being processed. Retry shortly. (idempotency_key_in_use)
422The request is valid JSON but can't be processed. See error.code; the codes each endpoint can return are described in the endpoint's description and in the error table above. (missing_parameter, invalid_parameter, invalid_request, missing_documents, too_many_documents, document_too_large, invalid_document, invalid_file_type, pdf_encrypted, missing_signers, invalid_signer, already_completed, not_open, nothing_to_remind, invalid_field, template_has_no_fields, template_archived, signer_finished, idempotency_key_reused, invalid_discount_code, already_purchased, billing_details_required)
429Rate limit exceeded (rate_limited, with Retry-After); more than 20 POST /feedback messages in an hour (rate_limited, with Retry-After: seconds until the next clock hour); or — for POST /signature_requests/{id}/remind — signers were reminded less than an hour ago (remind_too_soon, with Retry-After). (rate_limited, remind_too_soon)
500Something went wrong on SignWith's side. It's safe to retry with the same Idempotency-Key. (internal_error)

Codes listed are the examples the spec gives; see all error codes.

The feedback object

Confirms the feedback was received.

  • objectstringRequired
    Always feedback
  • idintegerRequired
  • typestringRequired
    One of bug, feature_request, feedback, question
  • statusstringRequired
    Always received
  • messagestringRequired

    A confirmation you can show to the user.

JSON
{
  "object": "feedback",
  "id": 57,
  "type": "bug",
  "status": "received",
  "message": "Thanks! The SignWith team has been notified."
}

Base URL, pagination and idempotency work the same on every endpoint: see making requests. Every error code is on errors.

Start building

The API and MCP server come with every account. 3 free documents a month, then pay per document.