Register an uploaded attachment
Phase 2 of the two-phase upload: attaches the uploaded file (by its file_key) to the task's CURRENT version — exactly how the in-app flow registers uploads after the presigned PUT. Supports the optional Idempotency-Key header for exactly-once retries.
bearerAuthAuthorizationBearer <token>A gid_ API key (Profile → API Keys) or an OAuth 2.1 access token.
task_id*stringTask short id, e.g. T-123 (a bare 123 is also accepted on input).
^(?:T-)?[0-9]{1,12}$Idempotency-Key?stringOptional client-generated key (1-255 visible ASCII characters; a UUID works) making this POST safely retryable. Retrying with the SAME key and byte-identical body within 24h replays the stored first response (marked Idempotency-Replayed: true, never re-executed, never charged against quota). The same key with a different body answers 422 idempotency_key_reused; a retry racing the first execution answers 409 idempotency_in_progress. Omitting the header executes normally with no idempotency guarantee.
1 <= length <= 255application/json- body
Phase 2 of the two-phase upload: register the uploaded file on the task.
file_name*string1 <= length <= 255file_key*stringThe file_key returned by the upload endpoint.
1 <= length <= 1024content_type*string1 <= length <= 255size*integerFile size in bytes as uploaded.
1 <= value <= 9007199254740991The registered attachment.
application/json- response
A file attached to a task's current version. Fetch its bytes via the download-url endpoint.
id*stringStable opaque attachment id.
file_name*stringcontent_type*stringsize*integerFile size in bytes.
-9007199254740991 <= value <= 9007199254740991created_at*string^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$date-timecurl -X POST 'https://app.nowgetitdone.com/v1/tasks/T-123/attachments' \ -H 'Content-Type: application/json' \ -d '{ "file_name": "string", "file_key": "string", "content_type": "string", "size": 1}'{ "id": "string", "file_name": "screenshot.png", "content_type": "image/png", "size": 248312, "created_at": "2019-08-24T14:15:22Z"}List task attachments GET
Cursor-paginated attachments of the task's CURRENT version, newest first (metadata only — mint download URLs per attachment via the download-url endpoint).
Start an attachment upload POST
Phase 1 of the two-phase upload (the SAME presign flow the in-app uploader uses): declares the file and answers a short-lived presigned PUT URL plus the…