ai

POST /v1/ai/credentials

Store an AI provider key for this organization.

تمام ai اینڈ پوائنٹس

تمام ڈویلپر دستاویزات

توثيقِ شناخت

ایک بیرر ٹوکن کے طور پر ایک API کی بھیجیں۔ کی کے پاس billing.payment.manage اجازت ہونی چاہیے؛ اس کے بغیر کی کو 404 کے بجائے 403 کے ساتھ مسترد کر دیا جاتا ہے۔

جہاں آپ کی تنظیم کی آئی ڈی آتی ہے

یہ اینڈ پوائنٹ JSON باڈی میں ایک فیلڈ کے طور پر org_id لیتا ہے۔

آپ کی تنظیم کی آئی ڈی آپ کے ڈیش بورڈ پر API کیز کی سکرین پر، خود کلید کے ساتھ موجود ہوتی ہے۔ یہ آپ کی کی جانے والی ہر کال میں ایک ہی آئی ڈی ہوتی ہے۔

آزمائیں

کوئی بھی چیز جو زاویہ دار قوسین میں ہو اسے اپنی اقدار سے بدلیں، اور کلیدی پلیس ہولڈر کو اپنے ڈیش بورڈ کی کسی کلید سے بدلیں۔

curl -X POST https://api.zinndigital.com/v1/ai/credentials \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "provider": <AiProviderCode>, "api_key": <string> }'

لاگ ان ہیں؟ آپ کے ڈیش بورڈ میں موجود API کنسول آپ کی حقیقی تنظیم کی آئی ڈی اور آپ کی اپنی کلید خود بخود پُر کر دیتا ہے، اور لائیو API پر درخواست چلاتا ہے تاکہ آپ اصل ردعمل دیکھ سکیں۔ اس اینڈ پوائنٹ کو API کنسول میں کھولیں

تفصیلات

Puts the key in Vault and records a pointer. Any existing live key for the same provider is revoked in the same transaction — one live key per provider, because two is not a richer model, it is an ambiguity about which key we are about to spend the customer's money through. ⚖️ The key is TESTED before this responds — owner instruction 2026-08-20: "we need to test the api keys when they add them." A real completion with our own prompts and tool format, not the free authentication probe: the narrower question is one a screen would render as a green tick while a recipe fails on its first run. The response carries state, last_error and tested_on_save. ⛔⛔ A FAILED TEST DOES NOT FAIL THE SAVE. The key is already in Vault by then. Refusing would leave a customer who pasted a valid key with an empty screen and no way to tell "we could not reach the provider" from "you typed it wrong", while the secret sat stored. They get it saved, the state set honestly, and the provider's own reason to act on. A 422 still means nothing was stored anywhere. ⭐ The provider's model catalogue is also filled from this key in the same call — a free authenticated read that costs the customer nothing, and the only opportunity we get for a vendor we hold no platform key for. ⛔ Vault is written before the row, and the row is created only if that succeeded. A 422 means nothing was stored anywhere: an unreachable secret store is a refusal, never a silent skip that leaves the customer believing their key was saved. Requires billing.payment.manage.

درخواست کا باڈی

نامقسملازمییہ کیا ہے
providerAiProviderCodeہاںAn LLM vendor a customer may bring their own key for. xai was added by W24-G on the owner's 2026-08-20 instruction naming Grok alongside Claude and ChatGPT.
api_keystringہاںThe key itself. Written straight to Vault and never returned.
labelstringنہیں
org_idUuidنہیںUUIDv7 identifier — sortable by creation time (docs/02 §8).

جواب

نامقسملازمییہ کیا ہے
idUuidہاںUUIDv7 identifier — sortable by creation time (docs/02 §8).
providerAiProviderCodeہاںAn LLM vendor a customer may bring their own key for. xai was added by W24-G on the owner's 2026-08-20 instruction naming Grok alongside Claude and ChatGPT.
labelstringہاں
statestring<untested, working, broken>نہیںWhether the key is known to work. ⛔ Three values, not two: "we have never tried it" and "we tried it and it failed" must not collapse, because telling a customer their valid key…
last_checked_atobjectنہیںWhen we last asked, whatever the answer — distinct from verified_at, which is when it last worked. A key checked five minutes ago and broken has a recent last_checked_at
broken_sinceobjectنہیں
tested_on_savebooleanنہیںOnly on the response to addAiCredential. Whether the on-save test actually ran — ⛔ not whether it passed. false means we could not even try, which is untested and not…
last_errorstringنہیںThe provider's own reason, trimmed, for the customer to act on. "Your credit balance is too low" needs a different response from "this key was revoked".
failureVendorFailure | nullنہیںWhat the customer is told about the last failure, and where they may be sent (CLAUDE.md §57). null when the key works or has never been tried — ⛔ which is not the same as…
verified_atobjectنہیںThe last time a real call on this key succeeded. ⛔ null means never proven, not broken — telling a customer their valid key is invalid is worse than saying nothing.
last_used_atobjectنہیں
created_atstringہاں

وہ خرابیان جو یہ اینڈ پوائنٹ واپس کر سکتا ہے

401 · 403 · 422 · 429