You can ship a working LLM feature with nothing but fetch and a model's REST endpoint. People do it every day, and for a one shot completion it is honestly fine. So the real question is not "can I call the API directly" but "what am I giving up by not adding the Vercel AI SDK, and is that tradeoff worth a dependency?"
I have wired both approaches into production Next.js apps, and the answer is not the blanket "always use the SDK" you see on Twitter. Here is what the abstraction actually buys you, where it earns its footprint, and when reaching for raw fetch is the smarter call. If you are already deep into building AI products with Next.js, some of this will be familiar, but the middleware section is where most people leave value on the table.
What raw API calls look like (and why they're fine for simple cases)
Here is a bare completion against a chat endpoint. No SDK, no wrapper, just the request.
async function ask(prompt: string) {






