# Usage and limits

Source: https://docs.graphops.xyz/substreams/usage-and-limits

Budget Substreams work before a large backfill or a new live consumer. Streams draw credits from
your organization's balance at the rates below, and limits on concurrent work are shared across
your organization.

## Current credit rates

Estimate stream costs from these billable components, then track actual consumption in
[Platform Usage](/platform/usage-and-limits). For GraphOps-hosted sinks, contact support about
enterprise pricing.

Current rates as of Nov 14, 2026, 12:11 AM UTC.

| Usage component | Applies to | Rate |
| --- | --- | --- |
| Processed blocks | Default | 4,000 credits per 1,000 processed blocks |
| Egress bytes | Default | 375,000 credits per GiB |

## Organization limits

These limits apply to your whole organization, not to each API key, and they do not change with
your plan size. [Contact support](/platform/support-and-status) for the values that apply to your
workload or to request an increase.

| Limit              | Applies to                               | Guidance                                                    |
| ------------------ | ---------------------------------------- | ----------------------------------------------------------- |
| Concurrent streams | Active gRPC streams for the organization | Bound consumer processes and reconnect loops.               |
| Worker concurrency | Parallel package execution work          | Tune backfills to stay within your organization's capacity. |
| Output throughput  | Bytes sent to consumers                  | Reduce selection/output volume or split ranges.             |
| Message size       | Large block-scoped outputs               | Use narrower modules or package outputs when possible.      |
| Backfill pressure  | Large historical ranges                  | Chunk ranges and checkpoint progress.                       |

## Control your usage

* **Bound concurrency.** Cap consumer processes and reconnect loops so a restart does not open
extra streams.
* **Retry with backoff.** Retry transient failures with exponential backoff and jitter, then resume
from the latest committed cursor. If a stream fails repeatedly at the same block, check the
package output, module parameters, and message size.
* **Narrow the output.** Choose an output module that emits only the data you store; output volume
counts toward throughput limits.
* **Split large backfills.** Run bounded ranges you can retry independently, and save progress
after each one.
* **Monitor the work.** Track blocks processed, bytes out, bytes read, bytes written, stream lag,
retries, and errors.

Contact [GraphOps support](https://platform.graphops.xyz/organizations/current/overview?support=open)
when a limit needs to be raised. See
[Platform: Usage and limits](/platform/usage-and-limits)
for billing-window timing and how to confirm your limit values.

## Next steps

* [Backfill a range](/substreams/guides/backfill-a-range): Split a large history into ranges that fit your limits.
* [Resume with cursors](/substreams/guides/resume-with-cursors): Reconnect without replaying work you already committed.
* [Troubleshooting](/substreams/troubleshooting): Diagnose slow backfills and repeated disconnects.