Skip to content

Upload Provider Signature

Stores a provider's signature image and returns its signature_key.

Endpoint

POST /v2/providers/{provider_id}/signature

Path Parameters

Parameter Type Required Description
provider_id string Yes The treating provider.

Query Parameters

Parameter Type Required Description
onboarding boolean No Treat the path id as an onboarding_provider_id rather than an operational id. Required to address a provider that has not been published yet.

Request Body

Part Type Required Description
file file Yes JPEG or PNG, max 2 MB.

Request

curl --location '{base_url}/v2/providers/2094/signature' \
  --header 'Authorization: Bearer JWT_TOKEN' \
  --form 'file=@provider-signature.png'

Response

Success Response

Code: 200 OK

{
  "signature_key": "doctor-signature/production/7412/onboarding/6f1c2a9e-4b7d-4c1a-9e3f-2d8b5a7c0e14.png"
}

Response Fields

Field Type Description
signature_key string Key of a signature image stored by Upload Provider Signature for this organisation. Set it on the provider with Update Provider; it reads back through signature_url.

Error Response

Code: 400 Bad Request

{
  "code": "bad_request",
  "message": "Validation failed",
  "errors": [
    {
      "field": "patient_id",
      "message": "must be a string"
    }
  ]
}

Every error has the same shape — a machine-readable code, a message, and an errors[] array that's empty when there's nothing field-specific to report. The HTTP status is authoritative.

Status code Meaning
400 Bad Request bad_request The request body or parameters failed validation. errors[] names the offending fields.
401 Unauthorized unauthorized The access token is missing, malformed or expired.
403 Forbidden forbidden The request references a resource outside the token's organisation or clinic scope.
404 Not Found not_found No such resource, or it's outside your scope.
429 Too Many Requests rate_limited Rate limit exceeded. Back off and retry.
500 Internal Server Error internal_error Unexpected server error.
502 Bad Gateway upstream_error Upstream service failed or timed out.

Notes

  • This only stores the image — the provider is unchanged until you send the signature_key in Update Provider.
  • Only providers created through onboarding (with an onboarding_provider_id) can be written; any other provider returns 400. Pass ?onboarding=true and an onboarding_provider_id to address a provider that is not yet published.