POST/v1/signals/deletions

Create a Data Deletion Job

To permanently delete Signals conversation data, send a POST request to /v1/signals/deletions. Deletion cannot be undone.

Two deletion types are supported:

  • agent — deletes Signals conversations for one Harness Runtime environment and turns off collection for that environment. Requires agent_id, which is the environment's Environment Config ID (the environment's agent_id). On create, matching conversations are hidden from Signals reads immediately. Wait until the job is complete before enabling Signals for the environment again.
  • inference — deletes Serverless Inference Signals conversations for your whole team (team-wide; not limited to one endpoint or model) that were collected at or before the deletion request, and turns off team inference collection (source=inference). Do not send agent_id. On create, matching conversations are hidden from Signals reads immediately.

The job runs asynchronously; poll the get endpoint until status is complete or failed. DigitalOcean may retry transient processing errors while a job is still active. If a job ends as failed, matching conversations stay hidden and collection stays off; send the same create request again to retry. Earlier export files are not deleted and remain available until they expire.

Note: Deletion removes Signals conversation data for the requested scope. Aggregated Insights or metrics charts may still show historical summary datapoints after deletion. Those summaries are not the same as recoverable conversation content.

The endpoint is idempotent: if a queued or running job already exists for the same target, it is returned with 200 OK. A new job returns 202 Accepted. Each team can have a limited number of active jobs; requests beyond that limit return 429 Too Many Requests.

  • IdempotentThe SDK sends Idempotency-Key, so a retried request is only applied once.

3 body fields
typestringrequired
The scope of the deletion. `agent` deletes Signals conversations for one Harness Runtime environment and requires `agent_id`. `inference` deletes Serverless Inference Signals conversations for the whole team (team-wide; omit `agent_id`).
Allowed:agentinference
team_idintegerrequired
The team whose data should be deleted. Must match the authenticated team.
agent_idstringoptional
The Harness Runtime Environment Config ID of the environment whose conversations should be deleted. This is the environment's `agent_id`. Required when `type` is `agent`; must be omitted when `type` is `inference`.

9 status codes
200A single deletion job.
team_idintegerrequired
The team that owns the deletion job.
deletion_idstringrequired
The unique identifier for the deletion job (ULID).
typestringrequired
The scope of the deletion. `agent` deletes Signals conversations for one Harness Runtime environment. `inference` deletes Serverless Inference Signals conversations for the whole team.
Allowed:agentinference
agent_idstringoptional
The Harness Runtime Environment Config ID (agent UUID) whose conversations are being deleted. Only present for `agent` deletions.
statusstringrequired
The current status of the deletion job.
Allowed:queuedrunningcompletefailed
error_messagestringoptional
Error message if the deletion failed, or null otherwise.
created_atintegerrequired
Unix timestamp when the deletion job was created.
started_atintegeroptional
Unix timestamp when processing started, or null if still queued.
completed_atintegeroptional
Unix timestamp when the deletion finished, or null if still in progress.
202The deletion job was accepted and will be processed asynchronously.
team_idintegerrequired
The team that owns the deletion job.
deletion_idstringrequired
The unique identifier for the deletion job (ULID).
typestringrequired
The scope of the deletion. `agent` deletes Signals conversations for one Harness Runtime environment. `inference` deletes Serverless Inference Signals conversations for the whole team.
Allowed:agentinference
agent_idstringoptional
The Harness Runtime Environment Config ID (agent UUID) whose conversations are being deleted. Only present for `agent` deletions.
statusstringrequired
The current status of the deletion job.
Allowed:queuedrunningcompletefailed
error_messagestringoptional
Error message if the deletion failed, or null otherwise.
created_atintegerrequired
Unix timestamp when the deletion job was created.
started_atintegeroptional
Unix timestamp when processing started, or null if still queued.
completed_atintegeroptional
Unix timestamp when the deletion finished, or null if still in progress.
400There was an error parsing the request body.
idstringrequired
A short identifier corresponding to the HTTP status code returned. For example, the ID for a response returning a 404 status code would be "not_found."
messagestringrequired
A message providing additional information about the error, including details to help resolve it when possible.
request_idstringoptional
Optionally, some endpoints may include a request ID that should be provided when reporting bugs or opening support tickets to help identify the issue.
401Authentication failed due to invalid credentials.
idstringrequired
A short identifier corresponding to the HTTP status code returned. For example, the ID for a response returning a 404 status code would be "not_found."
messagestringrequired
A message providing additional information about the error, including details to help resolve it when possible.
request_idstringoptional
Optionally, some endpoints may include a request ID that should be provided when reporting bugs or opening support tickets to help identify the issue.
403The authenticated principal does not have permission to perform this action on the requested resource.
idstringrequired
A short identifier corresponding to the HTTP status code returned. For example, the ID for a response returning a 404 status code would be "not_found."
messagestringrequired
A message providing additional information about the error, including details to help resolve it when possible.
request_idstringoptional
Optionally, some endpoints may include a request ID that should be provided when reporting bugs or opening support tickets to help identify the issue.
404The resource was not found.
idstringrequired
A short identifier corresponding to the HTTP status code returned. For example, the ID for a response returning a 404 status code would be "not_found."
messagestringrequired
A message providing additional information about the error, including details to help resolve it when possible.
request_idstringoptional
Optionally, some endpoints may include a request ID that should be provided when reporting bugs or opening support tickets to help identify the issue.
429The API rate limit has been exceeded.
idstringrequired
A short identifier corresponding to the HTTP status code returned. For example, the ID for a response returning a 404 status code would be "not_found."
messagestringrequired
A message providing additional information about the error, including details to help resolve it when possible.
request_idstringoptional
Optionally, some endpoints may include a request ID that should be provided when reporting bugs or opening support tickets to help identify the issue.
500There was a server error.
idstringrequired
A short identifier corresponding to the HTTP status code returned. For example, the ID for a response returning a 404 status code would be "not_found."
messagestringrequired
A message providing additional information about the error, including details to help resolve it when possible.
request_idstringoptional
Optionally, some endpoints may include a request ID that should be provided when reporting bugs or opening support tickets to help identify the issue.
defaultThere was an unexpected error.
idstringrequired
A short identifier corresponding to the HTTP status code returned. For example, the ID for a response returning a 404 status code would be "not_found."
messagestringrequired
A message providing additional information about the error, including details to help resolve it when possible.
request_idstringoptional
Optionally, some endpoints may include a request ID that should be provided when reporting bugs or opening support tickets to help identify the issue.

Error handling

A 400 is returned: There was an error parsing the request body. A 401 is returned: Authentication failed due to invalid credentials. A 403 is returned: The authenticated principal does not have permission to perform this action on the requested resource. A 404 is returned: The resource was not found. A 429 is returned: The API rate limit has been exceeded. A 500 is returned: There was a server error. Any other status is an error: There was an unexpected error.