Table of Contents

Working with Creators

Search for users who publish models on Civitai.

Query Examples

Search by Username:

var searchResult = await apiClient.Creators
    .WhereName("johndoe")
    .ExecuteAsync(resultsLimit: 20);

if (searchResult is Result<PagedResult<Creator>>.Success success)
{
    foreach (var creator in success.Data.Items)
    {
        Console.WriteLine($"{creator.Username}: {creator.ModelCount ?? 0} models");
    }
}

List All:

var allCreators = await apiClient.Creators
    .ExecuteAsync(resultsLimit: 50);

if (allCreators is Result<PagedResult<Creator>>.Success allSuccess)
{
    Console.WriteLine($"Found {allSuccess.Data.Items.Count} creators");
}

Creator Information

if (allCreators is Result<PagedResult<Creator>>.Success creatorInfoSuccess)
{
    foreach (var creator in creatorInfoSuccess.Data.Items)
    {
        Console.WriteLine($"{creator.Username}: {creator.ModelCount ?? 0} models");
    }
}

Model Creators

var models = await apiClient.Models
    .WhereUsername("johndoe")
    .ExecuteAsync();

if (models is Result<PagedResult<Model>>.Success modelSuccess)
{
    foreach (var model in modelSuccess.Data.Items)
    {
        if (model.Creator is { } creator)
        {
            Console.WriteLine($"{model.Name} by {creator.Username}");
            Console.WriteLine($"  Creator has {creator.ModelCount ?? 0} models");
        }
    }
}

Common Patterns

List Creators:

var topCreators = await apiClient.Creators
    .ExecuteAsync(resultsLimit: 50);

if (topCreators is Result<PagedResult<Creator>>.Success topSuccess)
{
    foreach (var creator in topSuccess.Data.Items)
    {
        Console.WriteLine($"{creator.Username}: {creator.ModelCount ?? 0} models");
    }
}

Search Specific:

var searchSpecific = await apiClient.Creators
    .WhereName("artist")
    .ExecuteAsync(resultsLimit: 50);

Models by Creator:

var creatorModels = await apiClient.Models
    .WhereUsername("artistname")
    .OrderBy(ModelSort.Newest)
    .ExecuteAsync(resultsLimit: 100);

if (creatorModels is Result<PagedResult<Model>>.Success creatorModelSuccess)
{
    Console.WriteLine($"Found {creatorModelSuccess.Data.Items.Count} models");
    
    foreach (var model in creatorModelSuccess.Data.Items)
    {
        Console.WriteLine($"  {model.Name}");
        Console.WriteLine($"    Downloads: {model.Stats?.DownloadCount ?? 0}");
    }
}

Endpoint Reliability Warning

The /api/v1/creators endpoint experiences reliability issues: HTTP 500 errors, slow responses (10-30s), and timeouts. Use generous timeouts (60-120s), implement retry logic, handle failures gracefully, and cache results.

var unreliableResult = await apiClient.Creators.ExecuteAsync(resultsLimit: 10);

if (!unreliableResult.IsSuccess)
{
    Console.WriteLine("Creator data unavailable, using fallback");
}

Next Steps