Skip to main content
POST
/
api
/
v1
/
tags
/
detach
cURL
curl --request POST \
  --url https://api.nekt.ai/api/v1/tags/detach/ \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "name": "<string>"
}
'
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "name": "<string>",
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z"
}
The detach endpoint removes the association between one or more existing tags and a set of resources. The tag itself is not deleted — only the links between the tag and the resources in the request body are removed. Tag names that do not exist in the organization are ignored silently. The request body is identical to Attach Tags: a list of tag names and one or more resource ID lists.
The interactive API Playground on this page is generated from the OpenAPI schema and may only show the base Tag fields. The canonical request body is the one documented below (names plus the per-resource ID arrays), and the response is an array of tags, not a single object.

Request body

ParameterTypeRequiredDescription
namesarray of stringsYesTag names to detach. Names that don’t exist in the organization are skipped.
sourcesarray of UUIDsNoSource IDs to untag.
transformationsarray of UUIDsNoTransformation IDs to untag (covers queries, notebooks, and histories).
destinationsarray of UUIDsNoDestination IDs to untag.
visualizationsarray of UUIDsNoVisualization IDs to untag.
layersarray of UUIDsNoLayer IDs to untag.
foldersarray of UUIDsNoFolder IDs to untag.
tablesarray of UUIDsNoTable IDs to untag.
volumesarray of UUIDsNoVolume IDs to untag.
Unlike attach, the detach endpoint does not create tags on the fly. If a name in names is not already present in your organization it is simply skipped.

Response

The endpoint returns the list of tags that were matched by names and from which the resources were detached.
[
  {
    "id": "6f2a9c4b-2a10-4e7f-9c54-d2a9b1d28b0e",
    "name": "marketing",
    "created_at": "2026-04-17T10:15:00.000000-03:00",
    "updated_at": "2026-04-17T11:02:00.000000-03:00"
  }
]

Example: detach one tag from a single source

curl --request POST \
  --url https://api.nekt.ai/api/v1/tags/detach/ \
  --header "x-api-key: YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "names": ["marketing"],
    "sources": ["d2c1b472-902c-477a-b300-e7c3fd72609b"]
  }'

Example: detach multiple tags from one transformation

curl --request POST \
  --url https://api.nekt.ai/api/v1/tags/detach/ \
  --header "x-api-key: YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "names": ["weekly-refresh", "owned-by-revops"],
    "transformations": ["a7b4f0d2-5c91-4e34-9c1f-7e3a5f1c9d02"]
  }'

Example: batch detach tags across sources, transformations, and destinations

curl --request POST \
  --url https://api.nekt.ai/api/v1/tags/detach/ \
  --header "x-api-key: YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "names": ["production"],
    "sources": [
      "d2c1b472-902c-477a-b300-e7c3fd72609b",
      "f3e4d5c6-b7a8-49e0-1f2a-3b4c5d6e7f80"
    ],
    "transformations": [
      "a7b4f0d2-5c91-4e34-9c1f-7e3a5f1c9d02",
      "b8c5e1e3-6d02-4f45-ad20-8f4b6e2d0e13"
    ],
    "destinations": [
      "e4d5c6b7-a8b9-40c1-d2e3-f4a5b6c7d8e9"
    ]
  }'

Python example: remove a tag from every destination that currently carries it

import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.nekt.ai"

headers = {
    "x-api-key": API_KEY,
    "Content-Type": "application/json",
}

destinations = requests.get(
    f"{BASE_URL}/api/v1/destinations/",
    headers=headers,
    params={"expand[]": "tags"},
).json()

legacy_destination_ids = [
    d["id"]
    for d in destinations["results"]
    if any(tag["name"] == "legacy" for tag in d.get("tags", []))
]

requests.post(
    f"{BASE_URL}/api/v1/tags/detach/",
    headers=headers,
    json={
        "names": ["legacy"],
        "destinations": legacy_destination_ids,
    },
)

Authorizations

x-api-key
string
header
required

API Key authentication. Format: 'x-api-key: api_key'

Body

name
string
required
Maximum string length: 255

Response

200 - application/json
id
string<uuid>
required
name
string
required
Maximum string length: 255
created_at
string<date-time>
required
updated_at
string<date-time>
required