earendil-works/pi · error
No API key for provider: ${model.provider}
Error message
No API key for provider: ${model.provider} What it means
Error "No API key for provider: ${model.provider}" thrown in earendil-works/pi.
Source
Thrown at packages/ai/src/api/google-generative-ai.ts:85
usage: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
totalTokens: 0,
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
},
stopReason: "pending",
timestamp: Date.now(),
};
try {
if (options?.fetch && options.fetch !== globalThis.fetch) {
throw new Error("Custom fetch is not supported by the Google Generative AI adapter");
}
const apiKey = options?.apiKey;
if (!apiKey) {
throw new Error(`No API key for provider: ${model.provider}`);
}
const client = createClient(model, apiKey, options?.headers);
let params = buildParams(model, context, options);
const nextParams = await options?.onPayload?.(params, model);
if (nextParams !== undefined) {
params = nextParams as GenerateContentParameters;
}
const googleStream = await retryGoogleRequest(() => client.models.generateContentStream(params), options);
stream.push({ type: "start", partial: output });
let currentBlock: TextContent | ThinkingContent | null = null;
const blocks = output.content;
const blockIndex = () => blocks.length - 1;
for await (const chunk of googleStream) {
// @google/genai documents GenerateContentResponse.responseId as an output-only field
// used to identify each response. Keep the first non-empty one from the stream.
output.responseId ||= chunk.responseId;
const candidate = chunk.candidates?.[0];View on GitHub (pinned to 4af9d21d3b)
Solutions
- Set GEMINI_API_KEY or GOOGLE_API_KEY, or pass an API key for the provider.
When it happens
Trigger: Thrown at packages/ai/src/api/google-generative-ai.ts:85 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24).
Data as JSON: /api/errors/913963a8c27c43b9.
Report an issue: GitHub.