curl -X DELETE "https://docurise.io/api/preview/contacts/3c9d2f4e-6a1b-4f0e-9d7a-5b8e2c1a0f43/tags/vip" \
-H "Authorization: Bearer $DOCURISE_API_KEY"
import requests
url = "https://docurise.io/api/preview/contacts/{contactId}/tags/{tagName}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://docurise.io/api/preview/contacts/{contactId}/tags/{tagName}', 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://docurise.io/api/preview/contacts/{contactId}/tags/{tagName}",
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://docurise.io/api/preview/contacts/{contactId}/tags/{tagName}"
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://docurise.io/api/preview/contacts/{contactId}/tags/{tagName}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://docurise.io/api/preview/contacts/{contactId}/tags/{tagName}")
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{
"contactId": "3c9d2f4e-6a1b-4f0e-9d7a-5b8e2c1a0f43",
"tag": {
"id": "9b1f7d52-0c3a-4e68-8a2d-7f4e1b6c9a05",
"name": "vip"
},
"tagged": false
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}Remove a tag from a contact
Remove a manually applied tag from one contact
curl -X DELETE "https://docurise.io/api/preview/contacts/3c9d2f4e-6a1b-4f0e-9d7a-5b8e2c1a0f43/tags/vip" \
-H "Authorization: Bearer $DOCURISE_API_KEY"
import requests
url = "https://docurise.io/api/preview/contacts/{contactId}/tags/{tagName}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://docurise.io/api/preview/contacts/{contactId}/tags/{tagName}', 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://docurise.io/api/preview/contacts/{contactId}/tags/{tagName}",
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://docurise.io/api/preview/contacts/{contactId}/tags/{tagName}"
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://docurise.io/api/preview/contacts/{contactId}/tags/{tagName}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://docurise.io/api/preview/contacts/{contactId}/tags/{tagName}")
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{
"contactId": "3c9d2f4e-6a1b-4f0e-9d7a-5b8e2c1a0f43",
"tag": {
"id": "9b1f7d52-0c3a-4e68-8a2d-7f4e1b6c9a05",
"name": "vip"
},
"tagged": false
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"retryAfterSeconds": 123,
"details": {}
}
}Authorizations
A key generated from Settings → Developers, sent as
Authorization: Bearer dr_live_<12 hex chars>_<64 hex chars>. Keys
carry explicit scopes — each endpoint states the one it requires.
The full key is shown exactly once at generation time and cannot be
retrieved again; only the keyId prefix is shown afterward. A
revoked key fails auth on its very next request.
Path Parameters
The contact's id.
The name of one of your existing tags (1-50 characters), URL-encoded.
Tag names are matched exactly; if there is no exact match, the
NFC-normalized form is tried. There is no trimming and no case folding,
so VIP and vip are different tags, and so are vip and vip
(trailing space).
Encode spaces and non-ASCII characters (for example
%EB%AF%B8%EA%B5%AC%EB%A7%A4 for 미구매), and encode % as %25,
? as %3F and # as %23.
Tag names containing / are not supported by this endpoint:
depending on the hosting layer, such a name may not reach it at all.
The same goes for a name that is exactly . or .. (URL clients treat
those as path navigation). Such a tag can still be managed in the dashboard.
1 - 50Response
The tag is not on the contact. Also returned when it was not there to begin with.
