Adding an AI provider now says where to get its key, and how. The hint under each key links to the provider's key page (Anthropic's is now platform.claude.com, where the Console lives) and says what to choose there, and whether the account needs credit first: a Claude.ai or ChatGPT subscription does not include the API. Azure OpenAI links to the portal and says where Keys and Endpoint are. The AI guide has the same in a table under "Get a key", and a test asks every provider that takes a key for both. Checked: the AI providers' tests (3 passing) and the site's type-check of these files.
- G1t-Session:
- ses_01m4ybyg80e6qrrzww8qzs19yw
5 files+63−70/5 viewed
| 52 | 52 | You can name the model your team uses on each provider. It is optional, | |
| 53 | 53 | except for Azure OpenAI, where it is the deployment. | |
| 54 | 54 | ||
| 55 | + | ### Get a key | |
| 56 | + | ||
| 57 | + | Each provider's form links to the page where its keys are made, and says | |
| 58 | + | how. Most show a key only once, so copy it straight into g1t. The API is | |
| 59 | + | billed apart from a chat subscription: a Claude.ai or ChatGPT plan does | |
| 60 | + | not include it. | |
| 61 | + | ||
| 62 | + | | Provider | Where | How | | |
| 63 | + | | --- | --- | --- | | |
| 64 | + | | Anthropic | [platform.claude.com/settings/keys](https://platform.claude.com/settings/keys) | Sign in to the Claude Console and choose **Create key**. Add credits under **Billing**. | | |
| 65 | + | | OpenAI | [platform.openai.com/api-keys](https://platform.openai.com/api-keys) | Choose **Create new secret key**. Add credit under **Settings → Billing**. | | |
| 66 | + | | Google Gemini | [aistudio.google.com/apikey](https://aistudio.google.com/apikey) | Sign in with a Google account and choose **Create API key**. The free tier needs no card. | | |
| 67 | + | | xAI | [console.x.ai](https://console.x.ai) | Open **API Keys** and choose **Create API key**. Add credits under **Billing**. | | |
| 68 | + | | Mistral | [console.mistral.ai/api-keys](https://console.mistral.ai/api-keys) | Choose **Create new key**. Pick a plan under **Billing**; the free Experiment plan works. | | |
| 69 | + | | DeepSeek | [platform.deepseek.com/api_keys](https://platform.deepseek.com/api_keys) | Choose **Create new API key**. Add a balance under **Top up**. | | |
| 70 | + | | Azure OpenAI | [portal.azure.com](https://portal.azure.com) | Open your Azure OpenAI resource, then **Resource Management → Keys and Endpoint**: copy **KEY 1** and the endpoint. Deployments are listed in the Azure AI Foundry portal. | | |
| 71 | + | | OpenRouter | [openrouter.ai/keys](https://openrouter.ai/keys) | Choose **Create Key**. Paid models need credits under **Credits**. | | |
| 72 | + | | Groq | [console.groq.com/keys](https://console.groq.com/keys) | Choose **Create API Key**. The free tier needs no card. | | |
| 73 | + | | Together AI | [api.together.ai/settings/api-keys](https://api.together.ai/settings/api-keys) | Copy the key shown there, or create one. | | |
| 74 | + | | Fireworks AI | [fireworks.ai/account/api-keys](https://fireworks.ai/account/api-keys) | Choose **Create API Key**. | | |
| 75 | + | | Cerebras | [cloud.cerebras.ai](https://cloud.cerebras.ai) | Open **API Keys** and choose **Generate API Key**. | | |
| 76 | + | ||
| 55 | 77 | ### Anthropic Console workspace | |
| 56 | 78 | ||
| 57 | 79 | Sessions on issues run on the Anthropic provider's account, and the |
| 35 | 35 | <Field label="Endpoint" hint="Your resource's endpoint, from the Azure portal: Keys and Endpoint."> | |
| 36 | 36 | <Input name="baseUrl" type="url" required placeholder="https://acme.openai.azure.com" /> | |
| 37 | 37 | </Field> | |
| 38 | − | <Field label="Key" hint="KEY 1 or KEY 2 of the resource. Sealed when saved: nobody sees it again."> | |
| 38 | + | <Field label="Key" hint={<KeyHelp provider={provider} />}> | |
| 39 | 39 | <Input name="secret" type="password" required autoComplete="new-password" /> | |
| 40 | 40 | </Field> | |
| 41 | 41 | <Field label="Deployment" hint="The name of the model deployment. Add one provider for each deployment your team uses."> | |
| ⋯ | |||
| 80 | 80 | } | |
| 81 | 81 | return ( | |
| 82 | 82 | <> | |
| 83 | − | <Field | |
| 84 | − | label="API key" | |
| 85 | − | hint={`${look.keyUrl ? `Get one at ${new URL(look.keyUrl).host}. ` : ""}Sealed when saved: nobody sees it again.`} | |
| 86 | − | > | |
| 83 | + | <Field label="API key" hint={<KeyHelp provider={provider} />}> | |
| 87 | 84 | <Input name="secret" type="password" required placeholder={look.keyPlaceholder} autoComplete="new-password" /> | |
| 88 | 85 | </Field> | |
| 89 | 86 | <Field label="Model" hint="Optional. The model your team uses on it. g1t lists the key's models when it checks the key."> | |
| ⋯ | |||
| 94 | 91 | ); | |
| 95 | 92 | } | |
| 96 | 93 | ||
| 94 | + | /** Where to get a provider's key and how, as the hint under its key. */ | |
| 95 | + | function KeyHelp({ provider }: { provider: AiProvider }) { | |
| 96 | + | const { keyUrl, keyHow } = AI_PROVIDER_LOOKS[provider]; | |
| 97 | + | return ( | |
| 98 | + | <> | |
| 99 | + | {keyUrl && ( | |
| 100 | + | <> | |
| 101 | + | Get a key at{" "} | |
| 102 | + | <a href={keyUrl} target="_blank" rel="noreferrer" className="text-accent underline-offset-2 hover:underline"> | |
| 103 | + | {new URL(keyUrl).host} | |
| 104 | + | </a> | |
| 105 | + | .{" "} | |
| 106 | + | </> | |
| 107 | + | )} | |
| 108 | + | {keyHow && `${keyHow} `} | |
| 109 | + | Sealed when saved: nobody sees it again. | |
| 110 | + | </> | |
| 111 | + | ); | |
| 112 | + | } | |
| 113 | + | ||
| 97 | 114 | /** | |
| 98 | 115 | * The Console workspace an Anthropic key belongs to: links to the sessions | |
| 99 | 116 | * it starts open there. Sessions don't say which workspace they are in. | |
| 16 | 16 | children, | |
| 17 | 17 | }: { | |
| 18 | 18 | label: string; | |
| 19 | − | hint?: string; | |
| 19 | + | hint?: ReactNode; | |
| 20 | 20 | htmlFor?: string; | |
| 21 | 21 | children: ReactNode; | |
| 22 | 22 | }) { |
| 17 | 17 | const look = AI_PROVIDER_LOOKS[provider]; | |
| 18 | 18 | assert.ok(look.blurb.length > 0, provider); | |
| 19 | 19 | if (look.keyUrl) assert.ok(look.keyUrl.startsWith("https://"), provider); | |
| 20 | + | // Every provider that takes a key says where to get one, and how. | |
| 21 | + | assert.equal(Boolean(look.keyUrl && look.keyHow), !isEndpoint(provider), provider); | |
| 20 | 22 | // Only the endpoints show an icon in place of initials. | |
| 21 | 23 | assert.equal(look.mark === "", isEndpoint(provider), provider); | |
| 22 | 24 | } |
| 14 | 14 | mark: string; | |
| 15 | 15 | /** Where to get a key. */ | |
| 16 | 16 | keyUrl?: string; | |
| 17 | + | /** How to get one there, in a sentence or two, for someone who never has. */ | |
| 18 | + | keyHow?: string; | |
| 17 | 19 | keyPlaceholder?: string; | |
| 18 | 20 | /** A model to suggest. */ | |
| 19 | 21 | model?: string; | |
| ⋯ | |||
| 25 | 27 | blurb: "Claude, on your own Anthropic key.", | |
| 26 | 28 | color: "#d97757", | |
| 27 | 29 | mark: "A", | |
| 28 | − | keyUrl: "https://console.anthropic.com/settings/keys", | |
| 30 | + | keyUrl: "https://platform.claude.com/settings/keys", | |
| 29 | 31 | keyPlaceholder: "sk-ant-…", | |
| 32 | + | keyHow: "Sign in to the Claude Console, choose Create key and copy it. The account needs credits under Billing; a Claude.ai subscription does not include the API.", | |
| 30 | 33 | }, | |
| 31 | 34 | openai: { | |
| 32 | 35 | blurb: "GPT and the o-series, on your own OpenAI key.", | |
| ⋯ | |||
| 35 | 38 | keyUrl: "https://platform.openai.com/api-keys", | |
| 36 | 39 | keyPlaceholder: "sk-…", | |
| 37 | 40 | model: "gpt-5", | |
| 41 | + | keyHow: "Choose Create new secret key and copy it. The API needs credit under Settings → Billing; a ChatGPT subscription does not include it.", | |
| 38 | 42 | }, | |
| 39 | 43 | gemini: { | |
| 40 | 44 | blurb: "Gemini, on your own Google AI Studio key.", | |
| ⋯ | |||
| 42 | 46 | mark: "G", | |
| 43 | 47 | keyUrl: "https://aistudio.google.com/apikey", | |
| 44 | 48 | model: "gemini-2.5-pro", | |
| 49 | + | keyHow: "Sign in with a Google account, choose Create API key and copy it. The free tier needs no card.", | |
| 45 | 50 | }, | |
| 46 | 51 | xai: { | |
| 47 | 52 | blurb: "Grok, on your own xAI key.", | |
| ⋯ | |||
| 50 | 55 | keyUrl: "https://console.x.ai", | |
| 51 | 56 | keyPlaceholder: "xai-…", | |
| 52 | 57 | model: "grok-4", | |
| 58 | + | keyHow: "Open API Keys, choose Create API key and copy it. The team needs credits under Billing.", | |
| 53 | 59 | }, | |
| 54 | 60 | mistral: { | |
| 55 | 61 | blurb: "Mistral and Codestral, on your own key.", | |
| ⋯ | |||
| 57 | 63 | mark: "M", | |
| 58 | 64 | keyUrl: "https://console.mistral.ai/api-keys", | |
| 59 | 65 | model: "mistral-large-latest", | |
| 66 | + | keyHow: "Choose Create new key and copy it. The workspace needs a plan under Billing; the free Experiment plan works.", | |
| 60 | 67 | }, | |
| 61 | 68 | deepseek: { | |
| 62 | 69 | blurb: "DeepSeek's chat and reasoning models.", | |
| ⋯ | |||
| 65 | 72 | keyUrl: "https://platform.deepseek.com/api_keys", | |
| 66 | 73 | keyPlaceholder: "sk-…", | |
| 67 | 74 | model: "deepseek-chat", | |
| 75 | + | keyHow: "Choose Create new API key and copy it. The account needs a balance under Top up.", | |
| 68 | 76 | }, | |
| 69 | 77 | azure_openai: { | |
| 70 | 78 | blurb: "OpenAI's models on your own Azure resource and contract.", | |
| 71 | 79 | color: "#0078d4", | |
| 72 | 80 | mark: "Az", | |
| 81 | + | keyUrl: "https://portal.azure.com", | |
| 82 | + | keyHow: "Open your Azure OpenAI resource, then Resource Management → Keys and Endpoint: copy KEY 1 and the endpoint. Deployments are listed in the Azure AI Foundry portal.", | |
| 73 | 83 | }, | |
| 74 | 84 | openrouter: { | |
| 75 | 85 | blurb: "Hundreds of models from every lab, on one key.", | |
| ⋯ | |||
| 78 | 88 | keyUrl: "https://openrouter.ai/keys", | |
| 79 | 89 | keyPlaceholder: "sk-or-…", | |
| 80 | 90 | model: "anthropic/claude-sonnet-4.5", | |
| 91 | + | keyHow: "Choose Create Key and copy it. Paid models need credits under Credits.", | |
| 81 | 92 | }, | |
| 82 | 93 | groq: { | |
| 83 | 94 | blurb: "Open models at very high speed.", | |
| ⋯ | |||
| 86 | 97 | keyUrl: "https://console.groq.com/keys", | |
| 87 | 98 | keyPlaceholder: "gsk_…", | |
| 88 | 99 | model: "moonshotai/kimi-k2-instruct", | |
| 100 | + | keyHow: "Choose Create API Key and copy it. The free tier needs no card.", | |
| 89 | 101 | }, | |
| 90 | 102 | together: { | |
| 91 | 103 | blurb: "Open models: Llama, Qwen, DeepSeek, Kimi.", | |
| ⋯ | |||
| 93 | 105 | mark: "T", | |
| 94 | 106 | keyUrl: "https://api.together.ai/settings/api-keys", | |
| 95 | 107 | model: "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8", | |
| 108 | + | keyHow: "Copy the key shown there, or create one.", | |
| 96 | 109 | }, | |
| 97 | 110 | fireworks: { | |
| 98 | 111 | blurb: "Fast open models, and your own fine-tunes.", | |
| ⋯ | |||
| 100 | 113 | mark: "F", | |
| 101 | 114 | keyUrl: "https://fireworks.ai/account/api-keys", | |
| 102 | 115 | model: "accounts/fireworks/models/kimi-k2-instruct", | |
| 116 | + | keyHow: "Choose Create API Key and copy it.", | |
| 103 | 117 | }, | |
| 104 | 118 | cerebras: { | |
| 105 | 119 | blurb: "Open models on wafer-scale chips.", | |
| ⋯ | |||
| 108 | 122 | keyUrl: "https://cloud.cerebras.ai", | |
| 109 | 123 | keyPlaceholder: "csk-…", | |
| 110 | 124 | model: "qwen-3-coder-480b", | |
| 125 | + | keyHow: "Open API Keys, choose Generate API Key and copy it.", | |
| 111 | 126 | }, | |
| 112 | 127 | anthropic_endpoint: { | |
| 113 | 128 | blurb: "Anything that speaks Anthropic's API: your own gateway, LiteLLM, Bedrock or Vertex behind a proxy.", | |
Comments
Sign in to comment.