Table of Contents

Working with Tags

Query tags used to categorize models on Civitai.

Query Examples

List All:

var allTags = await apiClient.Tags
    .ExecuteAsync(resultsLimit: 20);

if (allTags is Result<PagedResult<Tag>>.Success success)
{
    foreach (var tag in success.Data.Items)
    {
        Console.WriteLine($"{tag.Name}");
    }
}

Search by Name:

var searchResult = await apiClient.Tags
    .WhereName("anime")
    .ExecuteAsync();

if (searchResult is Result<PagedResult<Tag>>.Success searchSuccess)
{
    Console.WriteLine($"Found {searchSuccess.Data.Items.Count} anime-related tags");
    foreach (var tag in searchSuccess.Data.Items)
    {
        Console.WriteLine($"  {tag.Name}");
    }
}

Using with Models

var animeModels = await apiClient.Models
    .WhereTag("anime")
    .ExecuteAsync(resultsLimit: 50);

if (animeModels is Result<PagedResult<Model>>.Success modelsSuccess)
{
    foreach (var model in modelsSuccess.Data.Items)
    {
        Console.WriteLine($"{model.Name}");
        
        if (model.Tags is { } tags)
        {
            Console.WriteLine($"  Tags: {string.Join(", ", tags)}");
        }
    }
}

Model Tags:

// Example from a model instance
if (animeModels is Result<PagedResult<Model>>.Success modelSuccess && modelSuccess.Data.Items.Count > 0)
{
    var model = modelSuccess.Data.Items[0];
    if (model.Tags is { } modelTags)
    {
        foreach (var tagName in modelTags)
        {
            Console.WriteLine($"  - {tagName}");
        }
    }
}

Common Patterns

List Multiple:

var popularTags = await apiClient.Tags
    .ExecuteAsync(resultsLimit: 100);

if (popularTags is Result<PagedResult<Tag>>.Success popularSuccess)
{
    foreach (var tag in popularSuccess.Data.Items)
    {
        Console.WriteLine($"  {tag.Name}");
    }
}

Related Tags:

var characterTags = await apiClient.Tags
    .WhereName("character")
    .ExecuteAsync(resultsLimit: 50);

Next Steps