The difference that breaks ports
OpenAI puts the system prompt inside the messages array with role "system". Anthropic takes it as a separate top-level field and requires max_tokens, which OpenAI treats as optional.
Both mistakes fail unhelpfully. A system message left inside an Anthropic messages array is rejected or ignored, and a missing max_tokens is a validation error that tells you nothing about the system prompt you also got wrong.
The main use: evaluating across providers
Deciding between models means running the same prompt against both. Doing that by hand introduces differences, and a difference in the prompt invalidates the comparison you were trying to make.
Convert mechanically, run both, then price the results with your real volume rather than the sample.
Same prompt, different token counts
Converting the format does not make the request equivalent in cost. Each provider tokenizes with its own vocabulary, so the identical text produces different counts — Anthropic has stated that the tokenizer introduced with Claude 4.7 yields roughly 30% more tokens for the same input than its predecessor.
Always re-measure after porting. A comparison built on one token count applied to both providers is wrong in a direction you cannot predict.