Izood MAG

AI — explainer

OpenAI models on Amazon Bedrock in India: in-country inference explained

A hard horizontal edge cuts across the frame two fifths of the way down.

What India geographic cross-Region inference means for your data

The India geographic profile binds inference to Indian soil. When you invoke GPT-5.6 Terra or Luna through it, requests route only between ap-south-1 (Mumbai) and ap-south-2 (Hyderabad). That's the entire promise: your prompts and completions cross a Region boundary, not a national one.

The routing constraint is the compliance story. Data stays in the India geography, which is what DPDP Act alignment demands of many teams.

Logging follows the same rule. CloudWatch and CloudTrail write entries to the source Region only — so an ap-south-1 request produces ap-south-1 logs. Cross-Region routing does not scatter audit trails across Mumbai and Hyderabad.

The data-security model is zero data retention (ZDR). By default, Amazon Bedrock does not store model inputs or outputs. One carve-out: content flagged by Bedrock's automated abuse-detection classifiers is retained for offline abuse review, and GPT-5.6 falls under that policy.

The abuse-classifier retention is the line item your security team will flag first. ZDR sounds clean until that exception sits in the same paragraph. Check whether flagged content — however rare — still meets your residency obligations in writing, not in a vendor call.

GPT-5.6 Terra and Luna: model capabilities and profile IDs

Amazon Bedrock exposes two OpenAI models in India: GPT-5.6 Terra and GPT-5.6 Luna. Both accept text and image input, return text, and support a 1-million-token context window. That's the same input profile as the models you'd call globally, just pinned to Indian infrastructure.

The profile IDs you'll pass to the Converse API are in.openai.gpt-5.6-terra for Terra and in.openai.gpt-5.6-luna for Luna, as listed in the August 2026 launch announcement. The in. prefix is the giveaway: these resolve through India Geo cross-Region inference.

If you're already calling these models globally, your request shape doesn't change. What changes is the routing: global cross-Region inference supports OpenAI GPT-5.6 models, including Sol, Terra, and Luna. Sol isn't available under the India Geo profiles, so don't go looking for an in.openai.gpt-5.6-sol ID — it isn't there.

Worth knowing before you build: Terra and Luna are distinct models. If you're coming from GPT-4o and want a side-by-side on what actually changed, I'd check the GPT-4o comparison before assuming a drop-in upgrade.

How to call the models: Responses, Chat Completions, and Converse APIs

The models run on the bedrock-runtime endpoint with support for three formats: Responses, Chat Completions, and Converse.

For new applications, we recommend the bedrock-runtime endpoint.

GPT-5.6 models natively support the OpenAI Responses API format. It uses a single input field, returns generated text in output_text, and caps the response with max_output_tokens.

The Amazon Bedrock Converse API supports GPT-5.6 through the same unified interface it provides for every other model on Bedrock. Use it when you want one abstraction across Anthropic, Meta, and OpenAI models without rewriting the request layer.

For streaming, set stream=True and iterate over the events. ConverseStream covers the same case on the Converse side.

Controlling reasoning effort and chaining responses

Set reasoning={"effort": "low"} to dial the model back, or push it to none, low, medium, high, xhigh, and max on GPT-5.6. The trading is direct: less effort means faster, cheaper answers that skip the long think. More effort buys deeper analysis on questions that actually need it. You tune per call, so a single application can mix quick classifications with slow, deliberate reasoning.

For anything conversational, you want the model to remember the exchange. Add store=True and Bedrock keeps the response on its side. Your next request references it with previous_response_id — no need to resend the entire history yourself. The catch: the response you chain from must have been created with store=True. Chain from an unstored response and you get nothing useful back.

Data residency and monitoring: ZDR, logging, and abuse detection

Amazon Bedrock operates on a zero data retention (ZDR) model. By default, it does not store your model inputs or outputs. Prompts and completions pass through the service, get processed, and are discarded. That is the entire retention story for normal traffic.

There is one carve-out, and it matters if you build anything that touches sensitive Indian data. For certain models — GPT-5.6 included — content flagged by the automated abuse-detection classifiers is retained for offline abuse detection. If your prompts trip a classifier — jailbreak attempts, obvious policy violations — that content is kept longer than the zero that ZDR promises.

Logging is cleaner. Amazon CloudWatch and AWS CloudTrail record log entries in the source Region only, which means Mumbai or Hyderabad if that is where your inference profile lives. Those logs never follow the request into a backend Region. That is a guarantee worth leaning on in a data-residency review.

Billing is similarly anchored. With inference profiles, billing and quota consumption are tracked against your account in the source Region, regardless of which backend handled the call. Mumbai is where the audit trail lives, even when a request fans out somewhere else under the hood.

A practical note: if zero retention is non-negotiable in your compliance checklist, GPT-5.6 on Bedrock is not actually zero. It is default-zero with a documented exception. I would not put anything through it that I couldn't risk sitting in an abuse-detection queue — flagged or not, the mechanism exists, and your prompt grammar is not a defense against a classifier's opinion.

None of this is visible in the normal Bedrock console views — you're trusting AWS documentation and CloudTrail audit records, not dashboard toggles.

India profiles vs. global cross-Region inference

The choice comes down to two questions: where may your data go, and how much headroom do you actually need? The India geographic profile keeps inference inside India — requests route only between ap-south-1 (Mumbai) and ap-south-2 (Hyderabad). If your data residency policy says nothing leaves the country, that's your option, and there isn't a second one.

Global profiles trade that boundary for capacity. Bedrock also offers global cross-Region inference and global inference profiles, prefixed global., that route to supported commercial AWS Regions worldwide. That matters when Mumbai and Hyderabad are throttling and a US or Singapore endpoint is sitting idle.

Start with the India profile, and only add a global. profile if you see sustained throttling that a retry with backoff won't absorb. Skip the global profile entirely if your compliance team has ever asked the words "where does this run" — they'll ask again.