{"openapi":"3.0.3","info":{"title":"HurrySign API","version":"1.0.0","description":"Versioned HTTP API for creating envelopes, collecting signatures, and downloading completed PDFs. Authenticate with Authorization: Bearer <api key>."},"servers":[{"url":"https://hurrysign.com"}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer"},"organization":{"type":"apiKey","in":"header","name":"X-HurrySign-Organization","description":"Partner keys may act as a child organization by sending that child's id. X-SignPact-Organization is still accepted."}}},"security":[{"apiKey":[]}],"paths":{"/api/v1/organization":{"get":{"summary":"Current organization, plan usage, and branding (name, colour, logo URL).","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/organization/brand":{"post":{"summary":"Set the company name and brand colour used on signing pages and emails. Colour is a hex value; pale colours are kept for display but buttons stay readable.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/organization/logo":{"post":{"summary":"Upload a PNG, JPEG, or WebP logo (multipart field file). Shown on signing pages and in emails, including embedded signing.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/sub-organizations":{"post":{"summary":"Create a child organization. The caller must be a partner.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/envelopes":{"get":{"summary":"List envelopes. Optional query status.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}},"post":{"summary":"Create an envelope from a subject, recipients, or a template.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/envelopes/{id}":{"get":{"summary":"Envelope status, recipients, documents, and fields.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/envelopes/{id}/documents":{"post":{"summary":"Upload a PDF as multipart field file.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/envelopes/{id}/recipients":{"post":{"summary":"Add a signer or CC.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/envelopes/{id}/fields":{"post":{"summary":"Place a field by normalized coordinates or a text anchor such as {{sig_1}}.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/envelopes/{id}/send":{"post":{"summary":"Send the envelope. Body must include confirmExclusions: true.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/envelopes/{id}/void":{"post":{"summary":"Void an in-progress envelope. Body: { reason }. Signing links stop working.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/envelopes/{id}/duplicate":{"post":{"summary":"Copy an envelope into a new draft, including the PDF and fields.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/envelopes/{id}/resend":{"post":{"summary":"Issue a fresh signing link to whoever can sign now, and email it.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/envelopes/{id}/recipients/{recipientId}":{"post":{"summary":"Correct the name, email, or phone of someone who has not finished. The old link stops working.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/envelopes/{id}/documents/combined":{"get":{"summary":"Download the completed PDF.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/envelopes/{id}/certificate":{"get":{"summary":"Certificate data: hashes and the audit trail.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/templates/{id}/bulk":{"post":{"summary":"Send one envelope per CSV row from a template. JSON body { csv } or multipart field file. Cap is 50 rows. Each send fires envelope.sent; the batch fires bulk.completed.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/templates/{id}/public":{"post":{"summary":"Publish or unpublish a PowerForm-style public link. Enabling requires confirmExclusions: true and exactly one signer role. Optional emailCode emails a one-time code before the envelope is created.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}},"/api/v1/envelopes/{id}/recipients/{recipientId}/signing-url":{"post":{"summary":"Create a short-lived embedded signing URL. Body may include returnUrl and expiresInSeconds.","parameters":[{"name":"id","in":"path","required":false,"schema":{"type":"string"}},{"name":"recipientId","in":"path","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid API key"},"402":{"description":"Plan limit reached"},"422":{"description":"Validation error"}}}}}}