---
title: "Bring your own Anthropic or Gemini key: document reading (/engine/ingest) then runs on your provider account and costs no model credits. Verified with the free model list of the provider; stored encrypted; organization keys are admin-only. Sent to it: the public field list of the form + your documents — never the layout. Scans never use it."
method: PUT
path: "/api/v1/ai-key"
tags: ["Read"]
---

# Bring your own Anthropic or Gemini key: document reading (/engine/ingest) then runs on your provider account and costs no model credits. Verified with the free model list of the provider; stored encrypted; organization keys are admin-only. Sent to it: the public field list of the form + your documents — never the layout. Scans never use it.

`PUT /api/v1/ai-key`

## Request

- Base URL: `https://philforms.com`
- URL: `https://philforms.com/api/v1/ai-key`
- Auth: HTTP bearer

## Request body

- object
  - `provider` 'anthropic' | 'gemini', required
  - `key` string, required
  - `model` string

## Response `200`

{ ai_key }

## Other responses

- `400`: Not a key, or the provider refused it

---

[API](https://skmtc.dev/philforms/apis/philforms-api.md) · [All operations](https://skmtc.dev/philforms/apis/philforms-api/llms.txt) · [OpenAPI document](https://skmtc.dev/philforms/apis/philforms-api/revisions/a43bf313729c?raw)
