360 Secure SkillHub
360 安全技能中心

Edith API Keys

核心功能:通过Unkey为Edith智能眼镜API提供密钥全生命周期管理,包含创建(可自定义名称、过期时间、速率限制)、列出、吊销、验证及更新操作。典型场景:插件开发者生成接入密钥、管理设备授权密钥,Edith WebSocket中继可自动验证密钥有效性。需先配置UNKEY_ROOT_KEY和UNKEY_API_ID环境变量,用户通过语音指令触发操作,输出密钥、密钥ID等管理所需信息。

samdickson22
samdickson22
热度 38.07
最近更新 2026-05-18 12:37:37
分类:自动化依赖:第三方 API / 代码执行应用场景:API 集成 / 自动化脚本

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add edith-api-keys
Metadata
name
edith-api-keys
description
Manage Edith smart glasses API keys with Unkey. Create, revoke, and list API keys via voice commands.
user-invocable
true

Edith API Keys

Manage API keys for the Edith smart glasses app using Unkey.

Setup

The user must have UNKEY_ROOT_KEY and UNKEY_API_ID set as environment variables.

  • UNKEY_ROOT_KEY — root key from the Unkey dashboard (used to create/revoke keys)
  • UNKEY_API_ID — the Unkey API ID that Edith verifies keys against

Tools

This skill uses curl to call the Unkey REST API. All requests go to https://api.unkey.dev.

Commands

Create a new API key

Create a key for a plugin developer or device. Optionally set a name, expiration, or rate limit.

curl -s -X POST https://api.unkey.dev/v1/keys.createKey \
  -H "Authorization: Bearer $UNKEY_ROOT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "apiId": "'"$UNKEY_API_ID"'",
    "name": "{{name}}",
    "prefix": "edith",
    "meta": { "purpose": "{{purpose}}" },
    "expires": {{expires_unix_ms_or_null}},
    "ratelimit": {
      "async": true,
      "limit": {{rate_limit_per_second_or_10}},
      "duration": 1000
    }
  }'

Response includes key (give this to the user) and keyId (for management).

List all keys

curl -s "https://api.unkey.dev/v1/apis.listKeys?apiId=$UNKEY_API_ID" \
  -H "Authorization: Bearer $UNKEY_ROOT_KEY"

Revoke a key

Permanently delete a key by its keyId.

curl -s -X POST https://api.unkey.dev/v1/keys.deleteKey \
  -H "Authorization: Bearer $UNKEY_ROOT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"keyId": "{{keyId}}"}'

Verify a key (read-only check)

curl -s -X POST https://api.unkey.dev/v1/keys.verifyKey \
  -H "Content-Type: application/json" \
  -d '{"apiId": "'"$UNKEY_API_ID"'", "key": "{{key}}"}'

Update a key (rename, change rate limit, set expiry)

curl -s -X POST https://api.unkey.dev/v1/keys.updateKey \
  -H "Authorization: Bearer $UNKEY_ROOT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keyId": "{{keyId}}",
    "name": "{{new_name}}",
    "ratelimit": {
      "async": true,
      "limit": {{new_limit}},
      "duration": 1000
    }
  }'

Workflow

When the user asks to manage Edith API keys:

  1. Check that UNKEY_ROOT_KEY and UNKEY_API_ID are set in the environment.
  2. If creating a key: ask for a name/purpose, create it, and display the key to the user (it is only shown once).
  3. If listing keys: fetch and display in a table with keyId, name, createdAt, and status.
  4. If revoking: confirm the keyId with the user, then delete.
  5. Plugins connect to the Edith WebSocket relay with ?linkCode=...&apiKey=... — the relay verifies the key via Unkey automatically when UNKEY_API_ID is set on the server.

Example

User: "Create an API key for my demo plugin"

curl -s -X POST https://api.unkey.dev/v1/keys.createKey \
  -H "Authorization: Bearer $UNKEY_ROOT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "apiId": "'"$UNKEY_API_ID"'",
    "name": "demo-plugin",
    "prefix": "edith",
    "meta": { "purpose": "demo plugin" },
    "ratelimit": { "async": true, "limit": 10, "duration": 1000 }
  }'