listModels method

Future<List<AIModel>> listModels({
  1. String? beforeId,
  2. String? afterId,
  3. int limit = 20,
})

List available models from Anthropic API

API Reference: https://docs.anthropic.com/en/api/models-list

Supports pagination with beforeId, afterId, and limit parameters. Returns a list of available models with their metadata.

Implementation

Future<List<AIModel>> listModels({
  String? beforeId,
  String? afterId,
  int limit = 20,
}) async {
  try {
    final queryParams = <String, dynamic>{};
    if (beforeId != null) queryParams['before_id'] = beforeId;
    if (afterId != null) queryParams['after_id'] = afterId;
    if (limit != 20) queryParams['limit'] = limit;

    final endpoint = queryParams.isEmpty
        ? modelsEndpoint
        : '$modelsEndpoint?${queryParams.entries.map((e) => '${e.key}=${e.value}').join('&')}';

    final responseData = await client.getJson(endpoint);
    final data = responseData['data'] as List?;

    if (data == null) return [];

    return data
        .map((modelData) =>
            AIModel.fromJson(modelData as Map<String, dynamic>))
        .toList();
  } catch (e) {
    client.logger.warning('Failed to list models: $e');
    return [];
  }
}