AiMeCredentialV1 ai.me-credential@1
Generated at from
openvibe-contracts v0.419.0 and
openvibe-sdk v0.161.0.
- Version
- 1.0.0
- Owner
- ai
- Visibility
- first-party
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/ai/me-credential.v1.json
ai.me-credential@1 (OpenVibe.AI; L36 Y1): one of the person's own provider keys as the person reads it from GET /api/v1/me/credentials. It is never the key: `hint` is the last four characters, and `last_error` is a redacted line that never carries the key. `status` is what the last save-time or run-time check found: ok, failing or untested. `models_count` is how many models the provider listed when it was last tested. Own keys are free to their owner: no fee, no cap and no network budget.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
provider | enum | yes |
| |
hint | string | yes | The key's last four characters, so the person can tell two keys apart. Never more. |
|
base_url | string | null | yes | The endpoint the person chose, or null for the provider's own (taken from the console presets). |
|
budget_usd_per_day | number | null | yes | The person's own daily cap on this key; null or 0 means no cap. The network's budgets never apply to their own key. |
|
status | enum | yes |
| |
checked_at | string | null | yes |
| |
last_error | string | null | yes | Why the key last failed, with the key and any other secret redacted. Never the key itself. |
|
models_count | integer | yes |
| |
created_at | string | yes |
| |
updated_at | string |
|
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: anthropic
{
"provider": "anthropic",
"hint": "a1b2",
"base_url": null,
"budget_usd_per_day": 5,
"status": "ok",
"checked_at": "2026-10-31T09:00:00.000Z",
"last_error": null,
"models_count": 12,
"created_at": "2026-10-31T08:59:00.000Z",
"updated_at": "2026-10-31T09:00:00.000Z"
}Valid: custom-untested
{
"provider": "custom",
"hint": "ZZ99",
"base_url": "https://llm.example.com/v1",
"budget_usd_per_day": null,
"status": "untested",
"checked_at": null,
"last_error": null,
"models_count": 0,
"created_at": "2026-10-31T08:59:00.000Z"
}Rejected: five-char-hint
{
"provider": "openai",
"hint": "…a1b2",
"base_url": null,
"budget_usd_per_day": null,
"status": "ok",
"checked_at": null,
"last_error": null,
"models_count": 1,
"created_at": "2026-10-31T08:59:00.000Z"
}Rejected: leaks-key
{
"provider": "openai",
"hint": "a1b2",
"key": "sk-EXAMPLE",
"base_url": null,
"budget_usd_per_day": null,
"status": "ok",
"checked_at": null,
"last_error": null,
"models_count": 1,
"created_at": "2026-10-31T08:59:00.000Z"
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('ai.me-credential@1', value); // { valid, errors: [{ path, message }] }