---
title: "Refresh the model catalog from models.dev"
method: POST
path: "/api/models-catalog/refresh"
tags: ["Pricing"]
---

# Refresh the model catalog from models.dev

`POST /api/models-catalog/refresh`

Unforced calls skip the network when the last models.dev check is younger than 4h (`skipped-fresh`). `force: true` always fetches, still conditional on the stored ETag (`not-modified` on 304), but a forced call within a minute of the previous one returns `skipped-cooldown` with `retryAfterMs`. Concurrent refreshes share one fetch. Lead agent or operator only. `added` lists provider/modelId keys new since the previous fetch.

## Request body

- object
  - `force` boolean

## Response `200`

Refresh outcome

- object
  - `status` 'updated' | 'not-modified' | 'skipped-fresh' | 'skipped-cooldown' | 'error', required
  - `models` number, required
  - `added` string[], required
  - `checkedAt` number, nullable, required
  - `retryAfterMs` number
  - `error` string

## Other responses

- `403` — Forbidden

## Changes

- **2026-09-30** `e248ce78b701` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/desplega-ai/apis/agent-swarm-api/changes/api/models-catalog/refresh/post.md)

---

[API](https://skmtc.dev/desplega-ai/apis/agent-swarm-api.md) · [All operations](https://skmtc.dev/desplega-ai/apis/agent-swarm-api/llms.txt) · [OpenAPI document](https://skmtc.dev/desplega-ai/apis/agent-swarm-api/revisions/78f58e6d81be?raw)
