The difference that decides everything
An API charges you per use and nothing more. Running your own model flips that into a fixed bill: you rent the GPU by the hour whether it's flat out or sitting idle. That one difference settles most of the decision. Below a certain monthly usage the API always wins, because you're not paying for idle hardware. Above it, your own GPUs can be cheaper per token. The crossover usually lands somewhere between hundreds of millions and billions of tokens a month, and the self-hosted vs API calculator finds it for your numbers.
Whether you ever reach that crossover comes down to how busy you keep the hardware. A GPU that's busy a fifth of the time costs the same as one busy nearly all the time but does far less work, so each token costs much more. Without steady, heavy use, running your own rarely pays. Then there's the cost people forget: actually keeping it running day to day - the servers, the monitoring, the updates, someone on call. For a small team, that time often outweighs the GPU bill, and an API just folds all of it into the price. Running your own still wins in a few clear cases: very high steady volume, rules that forbid sending data to an outside API, or a need for custom models. Often the best answer is a mix - the API for spiky traffic, your own GPUs for the steady base load.
Start with the shape of your traffic
A monthly total hides the most important thing: when the work arrives. An overnight batch job can keep hardware busy. A customer-facing assistant might be quiet for hours, then spike after an announcement. Same monthly total, completely different hardware needs.
So look at your traffic by the hour, along with how long prompts and answers run and how many happen at once. Running your own works better when work can wait in a queue and be batched up. It works worse when capacity has to sit idle just in case of a spike.
Test the model you can actually run
The speed numbers in a model's docs aren't a capacity plan. Real speed depends on the model size, the context length, how many requests run at once, the hardware and the software. Test realistic prompts on the actual setup you'd use, and measure both the throughput and how long the first words take to appear.
Test quality too. If the open model needs more retries or a much longer prompt to match the hosted one, count those extra tokens and failed tries.
Count the whole setup, not just the GPU
A setup that won't fall over needs spare capacity, load balancing, model storage, logging, monitoring, backups, security updates and a way to roll out new versions. The GPU rental is easy to see because it has a tidy hourly rate. The engineering arrives in small pieces and is easy to leave out.
Be honest about the time. If an engineer spends two days a month keeping it running, that cost belongs right next to the GPU line - even on a salaried team.
Privacy can decide it before price does
Some work simply can't go to a shared outside API, or a customer might insist on a dedicated, in-region setup with specific controls. In those cases running your own can be the right call even if it costs more. A private hosted option can be a middle ground.
APIs have quiet upsides too
An API handles capacity planning, hardware failures, performance tuning and model upgrades for you. It also makes experiments cheap, because there's no idle cluster sitting there. The trade-off is paying per use, living with the provider's limits, and having less control over how it all runs.
Decide in stages - it's safer
- Launch or prototype on an API and collect real traffic data.
- Test a suitable open model on that real data.
- Work out the hardware you'd need at both your peak and your steady load.
- Add the people, the backups, the storage and the support.
- Run a small slice of real traffic on your own setup before moving the important stuff.
The self-hosted vs API calculator gives you the financial crossover. The staged test tells you whether that crossover survives contact with the real world.