> ## Documentation Index
> Fetch the complete documentation index at: https://docs.profy.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# Limits

> Every hard limit: upload, storage, assets, trials, withdrawal, tool timeouts

# Limits

This page enumerates the platform's hard limits. Each row carries a **stability grade** that tells you whether the number is safe to bake into automation:

| Grade                    | Meaning                                                                                         |
| ------------------------ | ----------------------------------------------------------------------------------------------- |
| **Hardcoded**            | Written into the code; changing it requires a release. Safe to rely on                          |
| **Configurable default** | Code holds a default that operations can adjust. Treat the value as indicative, do not hardcode |
| **Ops data**             | Fully driven by backend configuration; this page documents structure only, not values           |

## File uploads

<Info>Stability: **hardcoded**. Source: `apps/web/src/lib/storage/config.ts`.</Info>

| Item                                     | Limit  |
| ---------------------------------------- | ------ |
| Image, per file                          | 20 MB  |
| Document, per file                       | 512 MB |
| Code file, per file                      | 50 MB  |
| Other types, per file                    | 512 MB |
| Avatar                                   | 5 MB   |
| Workspace, per file                      | 512 MB |
| Files per upload                         | 10     |
| Attachments per message (images + files) | 10     |

### Accepted types

Images: `jpeg`, `png`, `gif`, `webp`, `svg+xml`.

Documents: PDF, Word (`doc`/`docx`), Excel (`xls`/`xlsx`), PowerPoint (`ppt`/`pptx`).

Code and text: `txt`, `md`, `json`, `xml`, `yaml`/`yml`, `js`, `ts`, `jsx`, `tsx`, `vue`, `svelte`, `py`, `rb`, `go`, `rs`, `java`, `kt`, `scala`, `c`, `cpp`, `h`, `hpp`, `cs`, `html`, `css`, `scss`, `less`, `sql`, `sh`, `bash`, `zsh`, `toml`, `ini`, `cfg`, `conf`, and more.

Binaries: archives (`zip`/`tar`/`gz`/`rar`/`7z`/`bz2`/`xz`/`tgz`), media (`mp4`/`mp3`/`wav`/`webm`/`ogg`/`flac`/`aac`/`m4a`/`avi`/`mov`/`mkv`), data files (`db`/`sqlite`/`parquet`/`arrow`), fonts (`ttf`/`otf`/`woff`/`woff2`), app packages (`apk`/`ipa`), Python packages (`whl`/`egg`).

<Warning>
  The image types the **sandbox can process** are narrower than what upload accepts: only `png`, `jpeg`/`jpg`, `gif`, `webp`. SVG uploads fine but the expert cannot "look at" it — SVG is not a raster image and the vision model cannot ingest it. Convert to PNG first if the expert needs to see it.
</Warning>

## Storage quota

<Info>Stability: **configurable default**. Code defaults live in `packages/types/src/subscription.ts`; effective values come from the backend plan catalog.</Info>

| Plan         | Storage quota |
| ------------ | ------------- |
| Free         | 10 GB         |
| Plus (`pro`) | 15 GB         |
| Pro (`max`)  | 20 GB         |
| Flagship     | 30 GB         |
| Team         | 50 GB         |
| Enterprise   | 50 GB         |

<Note>
  Internal plan codes and display names diverge for historical reasons: `pro` displays as **Plus**, `max` displays as **Pro**. When reading API responses, branch on the code, never the display name.
</Note>

## Credits and validity

<Info>Stability: grant amounts are **configurable defaults**; validity periods are **hardcoded**.</Info>

| Item                           | Value                    | Stability    |
| ------------------------------ | ------------------------ | ------------ |
| Signup grant                   | 2,000 credits by default | Configurable |
| Signup credit validity         | 90 days                  | Hardcoded    |
| Daily check-in                 | 200 credits by default   | Configurable |
| Plan-granted credit validity   | One subscription cycle   | Hardcoded    |
| Inviter reward                 | 1,000 credits by default | Configurable |
| Invitee reward                 | 1,000 credits by default | Configurable |
| Referral reclaim on inactivity | 100 days                 | Hardcoded    |

Plan-granted credits:

| Plan         | Granted credits                   |
| ------------ | --------------------------------- |
| Free         | 0                                 |
| Plus (`pro`) | 3,900                             |
| Pro (`max`)  | 11,000                            |
| Flagship     | 30,000                            |
| Team         | 100,000 pooled (1,200,000 annual) |

### Referral caps by plan

| Plan              | Max rewarded invites |
| ----------------- | -------------------- |
| Free              | 10                   |
| Plus (`pro`)      | 15                   |
| Pro (`max`)       | 20                   |
| Flagship          | 25                   |
| Team / Enterprise | 30                   |

The counting basis is `rewarded` — **only invites that actually paid out count**. Invites blocked by risk control do not consume the allowance.

## Expert configuration constraints

<Info>Stability: **hardcoded**. Source: request validation in `services/core/src/routes/marketplace-expert/index.ts`.</Info>

| Item                      | Constraint                  |
| ------------------------- | --------------------------- |
| Expert price              | Integer, 0 – 99,900 credits |
| Free trial turns per user | Integer, 0 – 10             |
| Tag count                 | Max 10                      |
| Tag length                | Max 64 characters           |

Price 0 makes the expert free (`billingType = FREE`); anything above 0 makes it unlock-based (`UNLOCK`). There is no third mode.

Setting trial turns to 0 **falls back to the global default** (configurable in the backend), it does not mean "no trial." Actually disabling trials requires the expert mode setting — see [Pricing and billing](/en/creators/pricing-and-billing).

## Asset and output size

<Info>Stability: **hardcoded**.</Info>

| Item                                         | Limit  | Notes                                                                                                                         |
| -------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------- |
| Sites asset directory (`web/public/assets/`) | 40 MiB | Measured at three entry points: `open_preview` (warn, allow), `website_init` (422 + degraded guidance), `deploy` (**reject**) |
| `site_assets` sandbox threshold              | 2 MB   | ≤2MB writes to the sandbox returning `path`; larger or over-budget goes to object storage returning `url`                     |
| Widget HTML persistence threshold            | 256 KB | Above this it is persisted to object storage to survive multi-replica routing                                                 |

<Warning>
  40 MiB is the **asset directory** budget, not the published-bundle budget (which includes JS/CSS/HTML and is larger). Sizing your assets against the publish-side number produces the "built successfully, then rejected" waste.
</Warning>

## Tool execution

<Info>Stability: **hardcoded** defaults, most overridable per call.</Info>

| Tool                 | Item                    | Default        |
| -------------------- | ----------------------- | -------------- |
| `bash`               | Command timeout         | 120 seconds    |
| `read`               | Lines per read          | 2,000          |
| `grep`               | Matching lines returned | 50             |
| `memory`             | Results returned        | 5              |
| `knowledge`          | Results returned        | 5              |
| `obsidian_knowledge` | Results returned        | 10             |
| `canvas_run_dag`     | Concurrency             | 1 (sequential) |
| `inspect_3d`         | Scene tree depth        | 5              |
| `image`              | Resolution              | 1024x1024      |
| `video`              | Resolution / duration   | 720p / 5 s     |
| `music`              | Duration                | 30 s           |

Bigger timeouts are not better: `bash`'s 120 seconds sits between "long enough for a build" and "a hang won't burn the whole turn's budget." Genuinely long jobs should be backgrounded and polled, not given a multi-thousand-second timeout.

## Withdrawal

<Info>Stability: threshold and freeze periods are **configurable defaults**; the rate limit is **hardcoded**.</Info>

<Warning>
  **Withdrawal is currently hard-disabled in code** (`WITHDRAWAL_CREATE_ENABLED = false`); every request is rejected with `WITHDRAWAL_NOT_OPEN`. The table below describes the rules that apply once it opens. See [Withdrawal](/en/creators/withdrawal).
</Warning>

| Item                        | Default              | Stability    |
| --------------------------- | -------------------- | ------------ |
| Minimum withdrawal          | 10,000 diamonds      | Configurable |
| Exchange rate               | 100 diamonds = 1 CNY | Configurable |
| Buyout earnings freeze      | 30 days              | Configurable |
| Usage-share earnings freeze | 30 days              | Configurable |
| Withdrawal frequency        | **3 per 24 hours**   | Hardcoded    |

The verbatim error on hitting the rate limit:

```
WITHDRAWAL_RATE_LIMIT: Maximum 3 withdrawal requests per 24 hours
```

## Creator levels and revenue share

<Info>Stability: **configurable defaults**. Shares are stored as ppm (parts per million).</Info>

| Level          | Threshold (cumulative diamonds) | Buyout share | Usage share |
| -------------- | ------------------------------- | ------------ | ----------- |
| `rising`       | 0                               | 75%          | 10%         |
| `growing`      | 300,000                         | 85%          | 15%         |
| `professional` | 1,000,000                       | 90%          | 20%         |
| `master`       | 5,000,000                       | 95%          | 20%         |

The usage share stops rising after `professional` — 20% is the current ceiling. Beyond that, revenue grows through volume, not level.

## Delegation and collaboration

<Info>Stability: **hardcoded**.</Info>

| Item                      | Limit                                                                                                                       |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Delegation whitelist size | Capped (`DELEGATION_WHITELIST_MAX`); entries beyond it never reach the roster                                               |
| Subagent tool allowlist   | Three-pass resolution: L1 reserved names → glob expansion → validation. Specs that fail resolution are **silently dropped** |

"Silently dropped" is the classic trap when a subagent seems to do nothing: a misspelled tool name raises no error, the subagent simply never appears. See [Subagents and delegation](/en/creators/expert-config/subagents-and-delegation).

## Self-evolution

<Info>Stability: **configurable defaults** via environment variables.</Info>

| Item                                   | Default     |
| -------------------------------------- | ----------- |
| Trigger threshold (conversation turns) | 3           |
| Cooldown                               | 24 hours    |
| Failure backoff                        | 6 hours     |
| Max pending suggestions                | 5           |
| Candidates per batch                   | 10          |
| Per-run timeout                        | 900 seconds |
| Memory consolidation interval          | Every 5     |
| Skill review interval                  | Every 10    |

The `context_footprint` scoring curve (**hardcoded**): a skill document at ≤3,000 characters scores full marks, ≥24,000 scores zero, linear in between.

## Content and plaza

<Info>Stability: **hardcoded**.</Info>

| Item                      | Limit                                                                               |
| ------------------------- | ----------------------------------------------------------------------------------- |
| Note view dedup window    | 24 hours (per device/user)                                                          |
| View count flush interval | 15 seconds (Redis → DB)                                                             |
| Sites design directions   | Exactly 3 (`direction_selection` mode)                                              |
| Sites design brief length | 1 – 4,000 characters                                                                |
| Site slug                 | 3 – 63 chars, lowercase letters / digits / hyphens; must start and end alphanumeric |
| Site slug reserved words  | `api` / `app` / `www` / `admin` / `profy` / `test`                                  |
| Site slug ownership       | One owner per slug, globally; publishing under another user's slug returns 409      |

## What this page deliberately omits

The following are **ops data**; only structure is documented:

| Item                            | Why no number                                                               |
| ------------------------------- | --------------------------------------------------------------------------- |
| Per-model token rates           | Change with supplier pricing and model lifecycle; any written value expires |
| Top-up bonus tiers              | Promotional, adjusted per campaign                                          |
| Actual plan prices              | Backend catalog-driven, and split across China and global catalogs          |
| Per-call cost of creative tools | Varies by model and resolution                                              |

How they are computed is in [Billing formulas](/en/documentation/reference/billing-formulas) — the formulas are stable, the rates fed into them are not.

## Related pages

<CardGroup cols={2}>
  <Card title="Billing formulas" icon="calculator" href="/en/documentation/reference/billing-formulas">
    The five billing unit algorithms
  </Card>

  <Card title="Tool Catalog" icon="wrench" href="/en/documentation/reference/tools-catalog">
    Every parameter default
  </Card>

  <Card title="Withdrawal" icon="wallet" href="/en/creators/withdrawal">
    Full withdrawal rules and state machine
  </Card>

  <Card title="Revenue system" icon="chart-line" href="/en/creators/revenue-system">
    How shares are calculated
  </Card>
</CardGroup>

<Note>
  Verified 2026-08-11. Sources: `apps/web/src/lib/storage/config.ts`, `packages/types/src/subscription.ts`, `packages/types/src/referral-risk.ts`, `services/core/src/db/service/platform-config.ts`, `services/core/src/db/service/withdrawal.ts`, `services/core/src/db/service/credit-consume.ts`, `services/core/src/routes/marketplace-expert/index.ts`, `services/core/src/config/env.ts`, `services/agent-runtime/src/base/tools/sandbox.py`.
</Note>
