---
title: "Exchange client credentials for a fresh token"
method: POST
path: "/agent/auth/claim"
tags: ["account"]
---

# Exchange client credentials for a fresh token

`POST /agent/auth/claim`

## Request

- Base URL: `https://aicontentdrop.com`
- URL: `https://aicontentdrop.com/agent/auth/claim`
- Auth: none required

Trade the client_id and client_secret from registration for a new 24-hour read-scoped bearer token. Use this when a token expires rather than registering again.

## Request body

- object
  - `client_id` string, required
  - `client_secret` string, required

## Response `200`

A refreshed read-scope bearer token for an existing client.

- AgentTokenClaim: 200 from POST /agent/auth/claim — a refreshed token for an already-registered client.
  - `access_token` string, required
  - `token_type` 'Bearer', required
  - `expires_in` integer, required
  - `expires_at` integer
  - `scope` 'read', required
  - `documentation` string, uri

## Other responses

- `401`: Unknown client_id or wrong client_secret
- `429`: Rate limited. Read Retry-After (header) or error.retry_after_seconds (body) — they carry the same number — and wait that long. Retrying sooner extends the window rather than shortening it.
- `500`: Unexpected failure on our side. Retry once; nothing was charged.

---

[API](https://skmtc.dev/aicontentdrop/apis/ai-content-drop-api.md) · [All operations](https://skmtc.dev/aicontentdrop/apis/ai-content-drop-api/llms.txt) · [OpenAPI document](https://skmtc.dev/aicontentdrop/apis/ai-content-drop-api/revisions/75a13a8043ae?raw)
