Skip to content

File, image, and request limits

The server enforces these limits.

Requests and uploads

LimitValueApplies to
JSON request body256 KiBEvery /v1 JSON request. Images upload separately.
One image8 MiB, at least 1 bytePOST /v1/uploads. Live value: uploads.maxBytes in GET /v1/config.
Image typesJPEG, PNG, WebPLive list: uploads.contentTypes.
Upload ticket5 minutesThe signed uploadUrl.
Attachment view15 minutesThe signed view URL.
Request timeout30 secondsServer request handling.
CORS preflight cache10 minutesAccess-Control-Max-Age: 600.

Send the exact Content-Type and Content-Length from the ticket with the upload. Attachment kinds are file, capture and captureCrop. The older names screenshot and screenshotCrop are still accepted.

Reactions and projects

LimitValue
Emoji12 code points and 64 UTF-8 bytes. Plain ASCII and keycaps are refused.
Names listed per reaction12. count is still the full count.
Project name1 to 100 characters, one line

Connected agents

LimitValueApplies to
Threads per list25 by default, at most 100list_threads. Follow nextCursor.
One tool call25 secondsEvery tool on /mcp. A call still running after that stops with TOOL_TIMEOUT. Wait a few seconds, then call it again.
One wait20 seconds, the default and the mostwait_for_threads then returns an empty list. waitSeconds can shorten it.
Agent reply4,000 charactersReplies, summaries and reopen reasons. Longer text is shortened.
Changed files named3A resolve summary names three and counts the rest.
Screenshot link15 minutesSigned URLs from get_thread.
Access token1 hourBearer token on /mcp.
Refresh token30 days since last useEach refresh starts a new 30 days.
Authorization code5 minutesUsed once at /oauth/token.
Approval page15 minutesStart again from the client after that.
Client registrations30 per hour per IP address/oauth/register.
Redirect URIs10 per client/oauth/register.
Client name100 bytesShown on approval and on replies.

Identity

LimitValue
Max token age (own identity provider)1 to 60 minutes. Default 5.
Future iat allowed2 minutes
Commenter session length1 to 720 hours in the dashboard. Default 7 days. Renewed after half its life.
Own-identity-provider session12 hours, or the project’s session length if shorter. Not renewed.

If an upload or capture is incomplete

  • No paperclip in the composer means this deployment has no image storage.
  • unsupported_type or too_large describe the file. Convert HEIC, SVG and PDF to JPEG, PNG or WebP.
  • If the ticket works but the PUT fails, check the storage response and the CSP: storage must be in connect-src and img-src.
  • A page capture rebuilds the page from the DOM. Cross-origin images, video, canvas and WebGL, and content in shadow roots can be missing. The note still posts without the image.