POST /v1/actions/list-tags

List all tags in your tenant with usage counts.

Returns every tag in your tenant with its current contact count. Optional substring filter on the tag name.

POST /api/v1/actions/list-tags

Request body

Field Type Required Notes
name string no Substring match (case-insensitive)
curl -X POST https://www.qyvo.io/api/v1/actions/list-tags \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{}'
const tags = await fetch('https://www.qyvo.io/api/v1/actions/list-tags', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.QYVO_TOKEN}`,
    'Content-Type': 'application/json',
  },
  body: '{}',
}).then((r) => r.json());
$tags = Http::withToken(env('QYVO_TOKEN'))
    ->post('https://www.qyvo.io/api/v1/actions/list-tags', [])
    ->json();
import os, httpx
tags = httpx.post(
    'https://www.qyvo.io/api/v1/actions/list-tags',
    headers={'Authorization': f"Bearer {os.environ['QYVO_TOKEN']}"},
    json={},
).json()

Response — 200 OK

[
  {
    "id": "01J2T...",
    "name": "vip",
    "contacts_count": 217,
    "created_at": "2026-04-15T10:32:00+00:00"
  },
  {
    "id": "01J2U...",
    "name": "fr-FR",
    "contacts_count": 1842,
    "created_at": "2026-04-16T11:00:00+00:00"
  }
]

Tags are tenant-scoped and lower-cased on creation. The contacts_count is computed live (no cache), so it reflects the current state.