Getting Started

Usage & Limits

Every environment's use is metered by the calendar month (UTC): what its modules did, what its machines and databases ran, and what it sent. Studio shows it on the project's Settings › Usage, environment by environment.

An environment is held to limits of three kinds, and each one says so in its answer:

  • Rates, per second: a call over one is refused for that second (429 with Retry-After: 1).
  • Limits on the month: a limit set on one of the environment's metrics refuses that use, or only counts it, until the month ends.
  • What a free project gets: its traffic is slowed past 5 GB, its chat messages past a million a month or 1 GiB kept, and a free database sleeps past its 400 hours. None of them stops the project or loses its data.

Where usage is shown

Project › Settings › Usage shows one environment at a time (choose it at the top when the project has more than one) over the last 3, 6 or 12 months:

  • this month's API requests, monthly active users, stored data and machine hours, each beside its months;
  • Limits: each limit set on the environment, with what this month has used against it, and Blocked once a limit that refuses is reached;
  • a chart per month of requests, active users, notifications sent by channel, stored data, download traffic, realtime messages, analytics events, machine hours, machine internet traffic, response traffic and database hours by size;
  • Every metered item: every metric the environment used, this month and the month before.

Every member of the organization reads it (Organizations). The organization's owners are also mailed when a free project has sent 80% of its month's traffic and when it has sent all of it, and when a free database has been awake 80% of its hours and all of them.

What is metered

MetricWhat counts
requestsAPI requests: each request to the environment's address that a module answers. Not among them: the cache's calls, the stores' reports to purchases (/purchases/webhooks/…), and the files the platform moves for a module's own work, such as an AI workspace's
auth.mauMonthly active users: the users who signed in or kept a session alive in the month
notify.email, notify.push, notify.sms, notify.whatsappEmail, Push, SMS and WhatsApp sent: an email through any sender (those through Palbase's shared sender are also notify.email.shared), a push delivered to a user on any of their devices, a text or a verification code, a WhatsApp message
storage.bytesStored data: the objects and their renditions, the month's largest
storage.egressDownload traffic: what storage sent, a part of response traffic
storage.operationsThe requests storage served
storage.transformsImage transformations: a picture made over from an original (resized, cropped, re-encoded); one answered from what was made before is not one
cache.bytes, cache.egressCache memory, the month's largest, and Cache reads, a part of response traffic (Cache)
realtime.messagesRealtime messages: each one delivered — a broadcast to ten subscribers is ten
realtime.connectionsRealtime connections open at once, the month's largest
messaging.messagesChat messages: each message the project's people, or its server, sent in its conversations; one sent again with the same client id is one
messaging.bytesChat message storage: what the project's messages weigh where they are kept — each one's sealed text and 768 bytes for its row and indexes — the month's largest
flags.readsThe flag reads clients made, answered in full or not modified
analytics.eventsAnalytics events: captures, identifies, aliases, screens and page views (setting a person's properties is not counted)
analytics.perf, analytics.traces, analytics.consolePerformance samples kept, request traces taken, console records kept (Analytics)
machines.secondsMachine hours: how long the machines were awake, each copy counted; machines.seconds.<size> the same by size
machines.egressMachine internet traffic: what the machines sent to the internet
edge.egressResponse traffic: what the environment's answers sent its clients, its modules' and its machines' alike
machines.builds.secondsBuild hours
machines.images.bytes, machines.logs.bytesMachine images kept, the month's largest, and Machine logs kept
databases.seconds.<size>Database hours: how long the databases of each size were awake
databases.bytes, databases.backupsWhat the databases hold, and what their backups hold, the month's largest
databases.trafficWhat the databases read from and wrote to their disks
databases.egressDatabase client traffic: what the databases sent clients that connect to them over their own addresses (psql, a backend on your computer)
ai.tokens.<provider>.<model>.<kind>AI tokens with Palbase's provider keys, by model and kind: input, image_input, output, cache_read, cache_write. A model used with the project's own provider key is the provider's to count
ai.images.<provider>.<model>AI images made, by model
ai.machines.seconds, ai.voice.seconds, ai.web_search.callsAI workspace hours, AI voice hours and AI web searches

A metric that is "the month's largest" is a level, not a sum: what the environment held at its most during the month.

Rates

WhatHow muchPast it
The environment's requests200 a second, unless Palbase set another429 rate_limited, Retry-After: 1
What apps send to analytics1,000 events, samples, traces and records a second, counted apart from the requests429 rate_limited
The cache's callsAs many a second as the requests, counted apart from them; 8 MiB read and 2 MiB written a second429 rate_limited
Your backend's own routesWhat each route's rateLimit says (Controllers & Routing)429 too_many_requests

Realtime has rates of its own, which a project may lower (Web Realtime), and so do sign-ins and the messages a project sends. The SDKs send a refused call again on their own, waiting what Retry-After asks, when it is a read or a write that cannot be done twice (Server SDK).

Limits on the month

A limit on the month names one metric of one environment and how much of it the month may use, and is one of two kinds: one that refuses past it, and one that only counts. Palbase sets them; the Limits panel lists those set on the environment. A month's use starts again at 00:00 UTC on its first day.

When a limit that refuses is reached, that use is refused until the month ends, and the refusal's Retry-After is the seconds until then:

Limit onWhat is refused
API requestsEvery request to the environment's address but those not counted (above): 429 quota_exceeded
Monthly active usersNew sign-ups: 403 signups_closed. Sign-ins go on: the people already counted keep their accounts
Email, push, SMS or WhatsAppSending on that channel: 429 quota_exceeded
Stored dataWriting to storage: 429 quota_exceeded. Reads go on
Realtime messages or connectionsA new socket: 429 quota_exceeded, with Retry-After: 3600 (an hour, not the month's end); and a server's broadcast: 429 quota_exceeded
Flag readsReading the flags: 429 quota_exceeded
Chat messages, or what they weighSending a message, a person's or the server's: 429 quota_exceeded
Analytics events, samples, traces or console recordsSending that kind: 429 quota_exceeded
Machine hoursThe machines: they are stopped, dedicated sizes too, and a request to one, a new machine, a cron or a task is 429 quota_exceeded

A limit that counts refuses nothing: the use goes on and is metered.

What a free project gets

An environment is free while it is on the Free plan — every environment starts on it — and while its credit has run out or its month is at its monthly limit (Billing). Each environment is free on its own: one running out holds no other.

  • Sizes. Its machines are of the shared-256 size, the one free machine size, and it has one database at most, of the free size: a project holds one database of a free size at a time (Databases). Every other size is paid for: opening a machine or a database of one, or moving one to it, is 403 size_not_available. palbase machines:sizes and palbase databases:sizes list the sizes and which of them the environment may open now (Machines).
  • Traffic. It sends 5 GB a month at full speed: its machines' internet traffic and its response traffic together. Past it, until the month ends, its machines' traffic and answers and the files its storage hands out go at about 256 kbit/s; nothing is stopped, and the API's other answers are not slowed. A slowed project's downloads are paced, and one more than it may have under way at once is 429 rate_limited with Retry-After. See Reaching the internet.
  • Chat messages. 1 million messages a month, and 1 GiB of them kept. Past either, until the month ends, the project's messages go at about one a second, all its people and its server together: a send waits its turn, 10 seconds at the most, and one whose turn is further off is 429 slowed with Retry-After — the SDKs keep it in their outbox and send it again. No message is lost, and reading, syncing and everything else go on at full speed. What is kept counts at its month's largest, so a project that keeps more than 1 GiB is slowed again early each month: remove old messages, or set the project's retention (Messaging), to stay under it.
  • A free database is awake 400 hours a month at most. Past them it sleeps until the month ends, refusing connections, with its data kept; from then its next connection wakes it.
  • AI. $1.00 of Palbase's models a month, at the provider's price and 10%. Past it, until the month ends, a call to them is 402 ai_payment_required; a call under the project's own provider key goes on (AI).

An environment on Pay as you go with credit is never slowed for its traffic, and its machines and databases may be of any size; a database of the free size keeps its 400 hours whoever holds it. What it uses past its own free quotas is charged from its own credit (Billing).

Each module's own limits

ModuleLimits
Storage5 GiB an object unless the bucket says less; a signed URL lives 7 days at most (Storage)
Cache25 MiB of entries, the ones nearest their end dropped to make room; 512 KiB a value (Cache)
Tasks100,000 tasks not yet done, or 256 MiB of what they carry (Tasks)
Machines5 machines, 1 to 5 copies each, 50 builds a day, logs kept 7 days (Machines)
Databases3 a project, one of them of a free size at a time; a database full to its size's storage turns read-only (Databases)
AnalyticsEvents kept 90 days unless changed, 365 at most (Analytics)
  • Billing — each environment's plan and credit, and what is charged
  • Logs — every request, with its status
  • Organizations — who sees the usage page, and who is mailed
  • Machines — sizes, sleep, and traffic to the internet
  • Databases — sizes, sleep and storage