Limits and defaults
This page lists the limits and defaults built into Peki, grouped by area. Use it when you plan a build, or when something stops and you want to know why. Each row says where you'll hit the limit, so you can tell which screen or API call it applies to.
note
Character limits count characters of text. Sizes in KB and MB are of the data as sent. "Per hour" and "per minute" limits are fixed windows: the count starts again when the window ends. Daily limits reset at midnight UTC unless the row says otherwise.
Accounts and sign-in
| Limit | Value | Where you'll hit it |
|---|---|---|
| Sign-in link lifetime | 15 minutes, works once | Clicking an old or used link shows "This link is invalid or has expired." |
| Sign-in links per email address | 5 per hour | Email me a sign-in link: "Too many sign-in links requested, try again later" |
| Sign-in links per network | 20 per hour | Same message, when many people sign in from one office network |
| Staying signed in | Up to 30 days without use, per browser | After that you're asked to sign in again |
| Workspace name | 1 to 80 characters | Onboarding, New workspace, Settings → Workspace |
| Workspace languages | English, Turkish | Default language |
| Workspace currencies | USD, EUR, TRY | Onboarding |
| Default time zone | Europe/Istanbul | Settings → Business hours → Timezone |
| Owners per workspace | At least 1 | Removing or demoting the last owner: "A workspace needs at least one owner" |
Credits and plans
| Limit | Value | Where you'll hit it |
|---|---|---|
| Credit value | 1 credit = $0.01 | Settings → Plan & credits |
| Free credits | 500, once per person, on the first workspace they create | A new workspace's balance. Later workspaces start at 0 |
| Low balance | Shown as low below 50 credits | The credits line in the sidebar |
| Spending stops at | A balance of 0 or less | Copilot, tests, automations and new Knowledge: "You are out of credits." |
| Publishing | Needs a package (paid plan) | Publish: "Publishing needs a package." |
| Usage report range | Up to 92 days at a time, 30 days by default | Settings → Usage |
| Copilot usage range | Up to 366 days at a time, 30 days by default | Settings → Usage → Copilot |
| Credit history page | 50 entries per page | Settings → Plan & credits → History |
Live replies
| Limit | Value | Where you'll hit it |
|---|---|---|
| Live replies per workspace | 2,000 per day (UTC) | Customers see "This assistant is very busy right now. Please try again later." (Telegram: "We are very busy right now…") |
| Time for one reply | 90 seconds for everything (all models, all steps) | Long tool chains; the fallback reply is sent if nothing finishes |
| Model silence before the fallback model takes over | 25 seconds | A slow or stuck primary model |
| Model retries per model | 0 to 5, default 2 | Instructions → Model |
| Tool steps per reply | 1 to 20, default 8 | An agent that needs many tool calls in one reply (the Copilot can change it) |
| Temperature | 0 to 2, default 0.3 | Instructions → Model → Temperature |
| Memory | 0 to 50 earlier messages, default 20 | Instructions → Memory |
| New session after quiet | 0 to 720 hours, default 24 (0 = only when resolved) | Instructions → Memory |
| Handoff rule ("When to ask for a person") | Up to 1,000 characters | Instructions → Handoff |
| Allowed topics (stay on topic) | Up to 500 characters | Instructions → Guardrails |
| Web search results given to the agent | 5 | Instructions → Web search on |
| Page text the agent reads | 8,000 characters per page; pages up to 2 MB; 15 seconds; 3 redirects | The agent or the Copilot reading a web page |
Agent building blocks
| Limit | Value | Where you'll hit it |
|---|---|---|
| Instruction blocks | At least 1 | Deleting the last block: "An agent needs at least one instruction block" |
| Instruction block title | 1 to 100 characters | Instructions → Prompt |
| HTTP tools per agent | 30 | Tools |
| Functions per agent | 30 | Tools |
| Skills per agent | 30 | Skills |
| Records tables per agent | 20 | Records, Copilot table cards |
| Team members per agent | 10 | Instructions → Team |
| Starter questions | Up to 4, each up to 200 characters | Test panel examples |
| Tool, Function and skill names | Lowercase letters, digits and _, starting with a letter, up to 64 characters; unique per agent | Tools, Skills |
HTTP tools
| Limit | Value | Where you'll hit it |
|---|---|---|
| Title | 1 to 80 characters | Tool editor |
| Description | 1 to 1,000 characters | Tool editor |
| URL | Up to 2,000 characters, http or https | Tool editor: "Use an http(s) URL" |
| Headers | Up to 20 | Tool editor |
| Inputs | Up to 20, each description up to 300 characters | Tool editor |
| Response fields kept | Up to 50 | Tool editor |
| Response size given to the agent | 200 to 20,000 characters, default 4,000 | Large API responses are cut |
| Timeout | 1 to 30 seconds, default 10 | Slow APIs |
| Private network addresses | Blocked | Calling localhost or internal IPs fails |
Functions
| Limit | Value | Where you'll hit it |
|---|---|---|
| Code | Up to 20,000 characters | Function editor |
| Title / description | 80 / 1,000 characters | Function editor |
| Inputs | Up to 20 | Function editor |
| Allowed sites | Up to 10 | Function editor; calling any other site is refused |
| Keys a Function may use | Up to 10 | Function editor |
| Run time | 1 to 10 seconds, default 5 | "Timed out after … ms" |
| Memory | About 256 MB (JavaScript heap 128 MB) | "Memory limit exceeded…" |
| CPU time | The run time plus 1 second | "CPU limit exceeded…" |
| Result | 16 KB | "Result is … KB; the limit is 16 KB" |
| Printed output | 64 KB; logs kept 8 KB | "Output exceeded 64 KB; the function was stopped" |
| Web requests per run | 20 | "A function run may make at most 20 requests" |
| Response size per web request | 1 MB | Large downloads |
| Request body per web request | 1 MB | "The request body is too large (over 1 MB)" |
ctx.store calls per run | 100 | Automation Functions |
ctx.records finds / saves per run | 20 / 50, 64 KB per call | Functions that read or write records |
| Runs per agent | 60 per minute | Busy automations and tests |
| Run time per agent | 3,600 seconds per day (UTC) | Heavy automations |
| Runs at once per agent | 4 (agent replies, tests and automations together) | Many parallel calls |
| Runs shown | Last 50 | Function Runs list |
Skills
| Limit | Value | Where you'll hit it |
|---|---|---|
| Title | 1 to 80 characters | Skill editor |
| Description (when to load it) | 1 to 500 characters | Skill editor |
| Instructions | 1 to 20,000 characters | Skill editor |
| Tools a skill may use | Up to 30 | Skill editor |
Knowledge
| Limit | Value | Where you'll hit it |
|---|---|---|
| File types | PDF, TXT, Markdown, CSV | Upload: "Use a PDF, TXT, Markdown or CSV file" |
| File size | 10 MB | Upload |
| Pasted text | Name up to 120 characters, text up to 200,000 characters | Knowledge → Text |
| Web page URL | Up to 2,000 characters, http or https | Knowledge → URL |
| Text read per source | Up to 2,000,000 characters | Very large files are cut |
| PDF pages | Up to 300 pages, read within 60 seconds | Long PDFs |
| Search query | Up to 1,000 characters | Searching Knowledge |
| Match threshold | Passages with a similarity below 0.7 are not used | Questions far from your content get no Knowledge |
| Credits | Reading a source uses credits; needs a positive balance | Adding sources with no credits left |
Variables and secrets
| Limit | Value | Where you'll hit it |
|---|---|---|
| Variable name | Lowercase letters, digits and _, starting with a letter, up to 40 characters | Settings → Variables |
| Reserved variable names | customer.name, business.name, today | "This name is built in" |
| Variable value | Up to 1,000 characters | Settings → Variables |
| Variable description | Up to 200 characters | Settings → Variables |
| Secret name | 1 to 80 characters | Settings → Secrets, Copilot key card |
| Secret value | 4 to 4,000 characters | "A key is 4 to 4000 characters" |
| Sites per secret | Up to 10 | Key card Sent only to |
| API key name | 1 to 80 characters | Settings → API keys |
Files from customers
| Limit | Value | Where you'll hit it |
|---|---|---|
| Photo types | JPEG, PNG, WebP, GIF | Website chat, Telegram, Sessions API, Test panel, Inbox |
| Document types | PDF, TXT, Markdown, CSV | Same. SVG and HTML are never accepted |
| File size | 10 MB | "Files can be up to 10 MB." |
| Files per message | 5 | "Up to 5 files per message." |
| Files per conversation | 30 | "This conversation has reached its 30-file limit." |
| Website chat uploads per visitor | 20 per hour | "Too many files at once. Please try again later." |
| Website chat uploads per network | 60 per hour per widget, 150 per hour across widgets | Same message |
| Text read from a document | 20,000 characters per file | Long documents are cut for the model |
| Files sent to the model | Files of the last 6 customer messages | Older files stay in the conversation by name only |
| Image size for the model | Longest side scaled to 1,568 pixels | Very large photos |
| Uploaded but never sent | Deleted after 24 hours | Attaching a file and not sending the message |
| Telegram download tries | 3 per file | "I couldn't download that file. Please send it again." |
| Telegram file caption | 1,024 characters | Files your team sends on Telegram |
Website chat
| Limit | Value | Where you'll hit it |
|---|---|---|
| Customer message | Up to 2,000 characters | Widget input |
| Messages per visitor | 20 per minute | "You are sending messages too fast. Please wait a moment." |
| Messages per network | 200 per hour per widget | "Too many messages from this network. Please try again later." |
| Messages per widget | 120 per minute | "This chat is very busy right now. Please try again in a minute." |
| New chats per network | 20 per hour per widget | "Too many new chats from this network. Please try again later." |
| Ratings | 10 taps per minute per visitor, 100 per hour per network | "Too many taps. Please wait a moment." |
| Rating comment | Up to 500 characters | "What went wrong? (optional)" |
| Feedback request | After the agent's last reply, once resolved or quiet for 2 minutes | The widget's 👍/👎 |
| File opens | 60 per minute per visitor, 600 per minute per network | Opening attachments in the widget |
| Allowed websites | Up to 20 | Channels → Website chat |
| Chat box height | 560 pixels by default; change with data-height | Chat box style |
| Upload time | 120 seconds | Slow connections |
Telegram
| Limit | Value | Where you'll hit it |
|---|---|---|
| Messages per chat | 20 per minute | Messages over the limit get no reply for the rest of the minute |
| Feedback per chat | 10 per minute | /feedback |
| Bots per agent | 1; a bot belongs to one agent at a time | Connecting a bot that another agent uses asks to move it |
| "Used elsewhere" warning | Clears 10 minutes after the last conflict | Channels → Telegram |
| Automation alert chats | Up to 20 per automation | Automation delivery |
Inbox and Sessions API
| Limit | Value | Where you'll hit it |
|---|---|---|
| Team reply in the Inbox | Up to 4,000 characters, 5 files | Inbox reply box |
| Test panel message | Up to 4,000 characters, 5 files | Test |
| Sessions API customer id | 1 to 128 characters | POST /agents/:agentId/sessions |
| Sessions API customer name | 1 to 120 characters | Same |
| Session title | 1 to 120 characters | Start or rename a session |
| Sessions API message | Up to 4,000 characters, up to 5 attachments | POST /sessions/:id/messages |
| Sessions listed | 50 by default | GET /agents/:agentId/sessions |
| Streaming reply | Closes after 120 seconds with timedOut | Accept: text/event-stream |
| Customer name | 1 to 80 characters | Customer details |
| Customer tags | Up to 20, each up to 30 characters, stored lowercase | Customer details |
| Customer notes | Up to 2,000 characters | Customer details |
Copilot
| Limit | Value | Where you'll hit it |
|---|---|---|
| Your message | Up to 10,000 characters | Copilot message box |
| Steps per turn | 40 | Very large requests; the Copilot stops and summarises |
| Tool calls per turn | 40 | "Tool call limit (40) reached for this turn" |
| Turn length | 20 minutes | "The turn took too long and was stopped" |
| Copilot chats per agent | 1 | Each agent keeps one build history |
| Onboarding website pages | Home page plus up to 6 more | Build with the Copilot |
| Onboarding questions | Up to 6 | Same |
| Credits | Starts only with credits left; stops before its next model call when the turn would use them up | "You are out of credits." |
| Files in the chat | Same types and sizes as customer files | 📎 in the Copilot |
Agent document
| Limit | Value | Where you'll hit it |
|---|---|---|
| Sections | 10 fixed sections | Document |
| Section text | Up to 4,000 characters | "A section has at most 4000 characters" |
Records
| Limit | Value | Where you'll hit it |
|---|---|---|
| Tables per agent | 20 | "An agent has at most 20 tables" |
| Table key | Lowercase letters, digits and _, starting with a letter, up to 58 characters | Table settings |
| Active fields per table | 50 (100 including deleted ones) | Table settings |
| Match-on fields | Up to 3 | Table settings |
| Options per choice field | Up to 100, each up to 80 characters | Field settings |
| Files per file field | Up to 5 | File fields |
| Record size | 32 KB | "A record holds at most 32 KB; shorten long fields" |
| Records per agent | 100,000 | Large imports |
| Agent finds | Up to 20 rows per search | The agent's find_ tool |
| Records fill | 10 minutes after a conversation goes quiet; reads up to the last 60 messages | Fill from the conversation |
| CSV import | Up to 5,000 rows, file up to 2 MB | Import CSV |
| Records page | Up to 100 rows per page | Records list and API |
| Deleted records | Purged for good after 30 days | Records you deleted |
Approvals
| Limit | Value | Where you'll hit it |
|---|---|---|
| Request lifetime | 24 hours | "Expired: nobody decided within 24 hours." |
| Rejection reason | Up to 500 characters | Reject |
Automations
| Limit | Value | Where you'll hit it |
|---|---|---|
| Name | 1 to 100 characters | Automation setup |
| Every N minutes | 1 to 10,080 minutes (7 days) | Schedule |
| Task on every run | Needs an interval of at least 15 minutes | Schedule with Continue when always |
| Weekly schedule | At least 1 day; 1 to 24 times per day | Schedule |
| Conditions | Up to 10; field path up to 200 characters, value up to 500 | Continue when a rule holds |
| Task text | Up to 4,000 characters | Task |
| Allowed tools for the task | Up to 50 | Task |
| Runs per day | 1 to 10,000, default 1,500, counted in the automation's time zone | Limits → Runs per day; over it, the automation pauses itself |
| Model cost per day | Default $1, counted in the automation's time zone | Limits → Model cost per day; over it, the automation pauses itself |
| Failures in a row | 5, then it pauses itself | "Paused after 5 failed runs in a row…" |
| Memory between runs | Up to 50 keys, 8 KB in total | ctx.store |
| Last check result kept | 16 KB | The Runs tab |
| Sending a message | 30 seconds | "Not sent: sending took longer than 30 s" |
| Runs shown | Last 50 | Runs tab |
| Credits | Pauses when the workspace has no credits | "Paused: the workspace is out of credits…" |
| Schedule repair | Within 10 minutes | "Saved, but its schedule could not be updated right now…" |
Webhooks and Peki events
| Limit | Value | Where you'll hit it |
|---|---|---|
| Request body | 256 KB | 413 "Payload too large"; sample payloads in Run once |
| Requests per webhook | 60 per minute | 429 "Too many requests" |
| Requests per sender IP | 600 per minute | 429 "Too many requests" |
| Duplicate deliveries | Ignored for 24 hours | Retries from Stripe, Shopify and others |
| Runs at once per automation | 4 | More wait their turn |
| Runs waiting per automation | 100 | Beyond that a webhook answers 429 |
| Stripe signature tolerance | 5 minutes | Old or replayed Stripe events |
| JSON nesting | 64 levels | Very deep payloads |
| Requests shown | Last 20, kept 30 days, preview up to 2 KB | Requests |
| Event chains | 3 hops | An automation whose writes start another automation |
Agent teams
| Limit | Value | Where you'll hit it |
|---|---|---|
| Members | 10 | Instructions → Team |
| Depth | 3 levels; no agent twice in one chain | Teams of teams |
| Calls per reply | 10 | A main agent asking many members |
| Time per call | 60 seconds, within the reply's own time | Slow members |
| What the member sees | Brief + last 10 messages (default), brief only, or brief + whole conversation (up to 200 messages) | What it sees |
| Brief | Goal up to 2,000, facts up to 4,000, answer format up to 500 characters | Team calls |
| Member answer | Up to 8,000 bytes | Long specialist answers are cut |
| Description | Up to 500 characters | What it is good at |
| Tool name | Up to 60 characters | Tool name |
Analytics
| Limit | Value | Where you'll hit it |
|---|---|---|
| Ranges | 7, 30 or 90 days | Analytics |
| Evaluation | After 30 minutes of quiet | Topics and "answered" appear after this |
| Conversation counts as ended | After 24 hours of quiet, or when resolved | Resolved without a person |
| Evaluation sampling | Every conversation, 1 in 5, 1 in 10, or off | Analytics settings |
| Minutes per conversation | 0 to 240, default 4 | Time saved |
| Topics per agent | 50 | Topics list |
| Weak topic hint | 3 or more conversations, under 60% resolved; top 3 shown | "A skill for this would help" |
| Problem conversations | Up to 50 | Problem list |
| Weekly summary | Mondays at 09:00, workspace time zone; email on by default, Telegram off | Analytics settings |
Retention
| What | Kept for |
|---|---|
| Sign-in links | 15 minutes |
| Sessions in a browser | 30 days without use |
| Uploaded files never sent | 24 hours |
| Approval requests (pending) | 24 hours, then expired |
| Automation runs | 30 days |
| Function runs | 30 days |
| Webhook requests | 30 days |
| Deleted records | 30 days, then purged |
| Agents, conversations, customers, Knowledge and files | Until you delete the agent or the workspace |