I believe that its well under the tokens per minute — 400k characters in English should be about 100k tokens, well under the 4m TPM limit. To exceed the 4m TPM limit, each character would have to be 10 tokens, which seems unlikely.
Right now I’m only doing test calls with the API, so these individual calls are the only ones happening in the entire account, so we can rule out account level tokens as the driving issue.
Is there anything additional I need to do to “enable” a paid account? What stands out to me is that 1.5 Flash succeeds and 1.5 Pro fails and the key difference there is the TPM limit of the free tier.
You have basically already answered your question. The pricing page Gemini API Pricing | Google for Developers shows the token arrival rate for 1.5 Pro is 32k tokens/min for an account without billing enabled. The more-than-that input tokens you tried to supply will always exceed that, unless you deliberately cut up your input into slices and insert almost one-minute sleep operations between the parts.
The token arrival rate on 1.5 Flash is about 30x more generous which allows for large context without hitting that rate limit.
The behavior in a billed account is similar to the behavior in a free (not billed account) until an actual bill is paid (which means there is a good likelihood the following bill will be paid also). There is a progression in limits observed. It should be possible to get improvement faster than that automatically provided by the payments monitoring system by explicitly contacting sales.