Skip to content

Updating a threat's note

POST /v1/threats/{threat_id}/update-note writes a free-form note onto one of your threats — the same note an analyst edits in MySecutec — so the conclusion your SOAR or your team reached is visible to everyone working that threat.

curl -s -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"note": "Closed in our SOAR — ticket INC-4821, credential rotated."}' \
  "https://api.secutec.com/v1/threats/5f3b94b1-35ad-49bb-b118-8e8fc24abf80/update-note"

The response is 202 Accepted with an empty body. Nothing is echoed back — see below for why.

The request body

Field Required Meaning
note yes The new note. Free text with no length limit. It replaces the current note; an empty string stores an empty note.

The body takes nothing else. In particular it does not take a status: a note write never changes the threat's status, and the verdict has its own operation — Updating threat status. Any other key is rejected with a 422 rather than silently ignored, so a request that tries to do both fails loudly instead of half-applying.

The note is applied asynchronously

This is a command: the platform accepts your note and applies it to the threat and to the views built on top of it. A GET /v1/threats/{threat_id} issued immediately afterwards may briefly return the previous note. Do not build a read-back-and-compare loop on this endpoint; if you need confirmation, poll the threat after a short delay.

A successful write bumps the threat's updated_at, so the threat is re-delivered on your next GET /v1/threats delta poll — including notes your own automation just wrote. De-duplicate on id as usual (see Pagination & deltas).

Retries

The gateway forwards your note exactly once — it never retries a write on your behalf. If your request times out, the outcome is unknown: re-sending the same note is safe and reaches the same end state. Writing a note identical to the stored one is accepted (202) and changes nothing.

Errors

Status type suffix When
400 request/invalid-filter {threat_id} in the path is not a UUID
403 auth/insufficient-role Your credential lacks the role for this operation; nothing is written
404 resource/not-found No threat with that id exists for your organization; nothing is written
422 request/validation Malformed body: note missing, not a string, or an unknown field

See Errors for the error format and the full catalog.