Skip to content
Runtime

How to give sandboxes a static outbound IP address

Run runtime ips reserve. From then on, every sandbox in your account sends traffic from that one IPv4 address, at $5 per 30-day month.

On Runtime, one reservation covers every sandbox in the account, on every port. It costs $5 per 30-day month, prorated to funded time. A dedicated IPv6 address is included. (pricing checked 25 October 2026, network products). No NAT gateway to build and no proxy to run. A database, an API provider or a firewall can allow only your account. No other account sends from the address while you hold it.

Reserve it

Terminalruntime ips reserve# 203.0.113.50runtime ips reserve --ipv6
TypeScriptimport { Runtime } from "withruntime";const runtime = new Runtime();const ip = await runtime.ips.reserve();console.log(ip.address, ip.funded, ip.fundedUntil);
Pythonfrom withruntime import Runtimeruntime = Runtime()ip = runtime.ips.reserve()print(ip["address"], ip["funded"], ip["fundedUntil"])

An MCP agent uses runtime_ips with reserve, list and release. Add the address to your provider's allow-list. Then check it from a sandbox:

Terminalruntime sandboxes run -- curl -sS https://api.ipify.org

What it costs and what you get

Item Detail
Dedicated IPv4 $5 per 30-day month, prorated to funded time
Dedicated IPv6 Included, with --ipv6
How many One IPv4 and one IPv6 per account
Which sandboxes use it Every sandbox in the account, on every port
Rate Fixed in the reservation's quote; rateMicros and rateUnit show it
Who else sends from it Nobody, while you hold it
After release It rests for 30 days before any other account can have it

Funding, and what happens when it lapses

funded shows whether traffic is paid for now. fundedUntil is the last funded time. It can be in the past. It is null when no meter exists.

If funding expires, because the balance ran out or a key's daily limit blocks the renewal, traffic from your sandboxes stops. The reservation stays yours. Runtime never falls back to a shared address. A partner's firewall never sees you from an address it did not approve. Runtime never charges for the unpaid interval. When renewal is blocked, check the balance, the spending limits, and the key's permissions.

Mistakes and how Runtime handles them

  • Releasing before updating allow-lists. runtime ips release <addressId> sends your sandboxes back to the shared addresses immediately. Remove the address from partners' allow-lists first. The address then rests for 30 days before another account can be given it.
  • Expecting one address per sandbox. The address belongs to the account, so every sandbox shares it, no matter which key or agent created the sandbox.
  • An account without credit. Runtime returns payment_required (402) until the account adds credit.
  • None free. Addresses are added as accounts need them. If none is free, Runtime returns no_capacity (503). Contact support (errors).
  • Treating the address as a secret. An allow-list limits who can connect. The service still needs its own password or key. Store that key as a secret the sandbox never sees.

Allow-lists in both directions

A dedicated address controls how the outside world sees your sandboxes. The sandbox's own network rules control where they may connect. Used together, a sandbox can reach only your partner's API, and the partner accepts connections only from your address.

For traffic that must not cross the internet at all, use a WireGuard tunnel instead. It joins your own network to your sandboxes, at the same $5 per 30-day month.

Facts on this page were checked on 26 October 2026.

100 free hoursin your first 30 days.

of a 1 GB machine

  • No credit card
  • Four sandboxes at once, 2 vCPU and 4 GiB each
  • Then prepaid credit from $10, no plan fee
Start free, no card
Start free, no card