cURL
curl -X PUT "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.put(url, headers=headers)
print(response.text)const options = {method: 'PUT', 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 => "PUT",
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("PUT", 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.put("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::Put.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": true
}{
"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": {}
}
}연락처
연락처에 태그 추가
기존 태그 하나를 연락처 하나에 적용합니다
PUT
/
api
/
preview
/
contacts
/
{contactId}
/
tags
/
{tagName}
cURL
curl -X PUT "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.put(url, headers=headers)
print(response.text)const options = {method: 'PUT', 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 => "PUT",
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("PUT", 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.put("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::Put.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": true
}{
"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": {}
}
}인증
Settings → Developers에서 발급한 키를 Authorization: Bearer dr_live_<12자리 16진수>_<64자리 16진수> 형태로 전송합니다. 키는 명시적인 범위를
가지며 — 각 엔드포인트에 필요한 범위가 해당 엔드포인트에 명시되어 있습니다. 전체 키는 발급 시점에 딱 한
번만 표시되며 다시 조회할 수 없습니다 — 이후에는 keyId 접두어만 표시됩니다. 폐기된
키는 바로 다음 요청부터 인증에 실패합니다.
경로 매개변수
연락처 ID.
이미 만들어 둔 태그의 이름(1~50자)이며 URL 인코딩해야 합니다.
태그 이름은 정확히 일치해야 하며, 정확히 일치하는 태그가 없으면 NFC로 정규화한
형태로 다시 찾습니다.
공백을 잘라내거나 대소문자를 구분 없이 비교하지 않으므로 VIP와 vip는 서로 다른
태그이고, vip와 vip(끝에 공백)도 서로 다릅니다.
공백과 ASCII가 아닌 문자는 인코딩하세요(예: 미구매는 %EB%AF%B8%EA%B5%AC%EB%A7%A4).
%는 %25, ?는 %3F, #은 %23으로 인코딩해야 합니다.
/가 들어간 태그 이름은 이 엔드포인트에서 지원하지 않습니다. 호스팅 환경에
따라 이런 이름은 엔드포인트에 아예 도달하지 않을 수 있습니다. 이름이 정확히 . 또는
..인 태그도 마찬가지입니다(URL 클라이언트가 경로 이동으로 처리합니다). 이런 태그는
대시보드에서 관리할 수 있습니다.
Required string length:
1 - 50