curl --request DELETE \
--url https://api.hq.zone/v1/api/conversations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hq.zone/v1/api/conversations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hq.zone/v1/api/conversations/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hq.zone/v1/api/conversations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.hq.zone/v1/api/conversations/{id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.hq.zone/v1/api/conversations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hq.zone/v1/api/conversations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"apps_destroyed": 1,
"artifacts_deleted": 1,
"artifacts_kept": 1,
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}Delete a conversation
Permanently deletes a conversation and cascades teardown of its backing app surfaces, sandbox resources, messages, and related records. Scoped to the caller’s workspace and conversations they participate in. By default the conversation’s delivered artifacts are detached and kept (still downloadable by their existing links); passing delete_artifacts=true permanently deletes those artifacts instead. Returns the conversation id along with counts of apps destroyed and artifacts deleted versus kept. Returns 404 if not found.
curl --request DELETE \
--url https://api.hq.zone/v1/api/conversations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hq.zone/v1/api/conversations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hq.zone/v1/api/conversations/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hq.zone/v1/api/conversations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.hq.zone/v1/api/conversations/{id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.hq.zone/v1/api/conversations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hq.zone/v1/api/conversations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"apps_destroyed": 1,
"artifacts_deleted": 1,
"artifacts_kept": 1,
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}Authorizations
Personal Access Token. Send as Authorization: Bearer hq_pat_....
Path Parameters
Conversation id
Query Parameters
true also permanently deletes the conversation's delivered
artifacts (blobs + rows). Default false - keep them (detach).
Response
Conversation deleted (cascade)
x >= 0Delivered artifacts whose Trove blobs + rows were deleted (when the caller asked to delete them).
x >= 0Delivered artifacts detached (conversation_id -> NULL) and kept
in Trove - the default. They survive the conversation, still
downloadable by their existing /v1/api/artifacts/{id}/download
link, just no longer tied to a (now-deleted) conversation.
x >= 0