circl.

Circl API documentation

The Circl API is a read-only REST API. Public offers need no authentication; a Brand's own data needs an OAuth 2.1 access token. Nothing in the API creates, changes or deletes data. The full machine-readable description is the OpenAPI 3.1 specification. The same data is available through an MCP server.

Base URL

https://joincircl.co/v1. Responses are JSON. Errors are JSON too: {"code": "not_found", "message": "...", "retryable": false, "correlation_id": "..."}.

Public offers (no authentication)

curl https://joincircl.co/v1/offers
curl https://joincircl.co/v1/offers/{offerId}

Limit: 600 requests a minute per address (429 rate_limited, then wait and retry).

Brand data (OAuth, read-only)

An agent connects with OAuth 2.1 authorization code and PKCE; dynamic client registration is open and the Brand user approves on a consent screen. There is no API key. Steps: auth.md; discovery: /.well-known/oauth-protected-resource. Every grant is read-only. A request without a valid token answers 401 with WWW-Authenticate: Bearer resource_metadata="...".

curl https://joincircl.co/v1/brands -H "Authorization: Bearer $TOKEN"
curl "https://joincircl.co/v1/brands/{brandId}/directory?q=beaute&country=FR" -H "Authorization: Bearer $TOKEN"
EndpointReturns
GET /v1/offersPublic offers
GET /v1/offers/{offerId}One public offer, as published
GET /v1/brandsYour Brand spaces (call first)
GET /v1/brands/{brandId}/directoryCreator directory search (q, niche, language, country, page)
GET /v1/brands/{brandId}/directory/{profileId}One creator profile
GET /v1/brands/{brandId}/offersThe Brand's offers
GET /v1/brands/{brandId}/offers/{offerId}An offer with its frozen terms
GET /v1/brands/{brandId}/collaborationsCollaborations with status and next action
GET /v1/brands/{brandId}/collaborations/{collaborationId}One collaboration

Limit: 60 requests a minute per user.

Versioning

The version is in the path (/v1). Changes inside v1 only add fields or endpoints. A breaking change ships as /v2; v1 then answers with Deprecation and Sunset headers at least 6 months before removal. Every response carries RateLimit-Limit and RateLimit-Policy; a 429 carries Retry-After.

More for agents

llms.txt, AI catalog, skills, pricing. Browser agents can use the WebMCP tools registered on the homepage.