Skip to Content
Agent computeREST: secrets
Raw

Aetherfy secrets API

Base URL https://agents.aetherfy.com/api/v1, bearer authentication, and the shared error envelope are described on the Agent REST API index. {agent} accepts an agent UUID or its name throughout.

Aetherfy never returns a secret value

Every route on this page is one-way. Aetherfy encrypts a secret when you write it and injects it into the agent’s environment at run time, and there is no endpoint that reads a value back — not create, not list, not rotate. The responses carry the key, its description and its timestamps.

That is the whole security model in one sentence, and it has a practical consequence: if you lose the plaintext, Aetherfy cannot recover it for you. Write a new value over the same key.

Setting an Aetherfy agent secret

POST /api/v1/agents/{agent}/secrets → 201

curl -s -X POST https://agents.aetherfy.com/api/v1/agents/reporter/secrets \ -H "Authorization: Bearer $AETHERFY_API_KEY" \ -H "Content-Type: application/json" \ -d '{"key":"OPENAI_KEY","value":"sk-…","description":"Model access"}'
FieldTypeNotes
keystringRequired. 1–255 characters. This becomes the environment variable name
valuestringRequired. At least 1 character. Encrypted at rest, never returned
descriptionstring | nullOptional, up to 512 characters

This route is an upsert. Posting a key that already exists replaces its value rather than failing — there is no separate update route, and no 409 for a duplicate key.

{ "id": "a7c3e912-64b8-4f05-9d21-0e8b3f6c1a44", "agent_id": "6f1c2b7e-0a2d-4f8e-9c31-2b0d5a7e4411", "key": "OPENAI_KEY", "description": "Model access", "created_at": "2026-08-19T09:20:00Z", "updated_at": "2026-08-19T09:20:00Z" }

A new or changed secret reaches the agent on its next deploy. Writing a secret does not restart a running agent.

CodeHTTPMeaning
SECRET_VALIDATION_ERROR422The key or value was rejected — the message says why
AGENT_NOT_FOUND404

Listing Aetherfy agent secret keys

GET /api/v1/agents/{agent}/secrets → 200

curl -s https://agents.aetherfy.com/api/v1/agents/reporter/secrets \ -H "Authorization: Bearer $AETHERFY_API_KEY"
[ { "key": "OPENAI_KEY", "description": "Model access", "created_at": "2026-08-19T09:20:00Z", "updated_at": "2026-08-19T09:20:00Z" } ]

Metadata only. Use this to audit which keys an agent has and when they last changed.

Rotating an Aetherfy agent secret

POST /api/v1/agents/{agent}/secrets/{key}/rotate → 200

curl -s -X POST https://agents.aetherfy.com/api/v1/agents/reporter/secrets/OPENAI_KEY/rotate \ -H "Authorization: Bearer $AETHERFY_API_KEY"

Rotation re-encrypts the stored value under fresh cryptographic material. The secret itself does not change — the agent still sees the same value. If you want a different value, write it with the create route instead.

CodeHTTPMeaning
SECRET_NOT_FOUND404No secret with that key on this agent
SECRET_INTERNAL_ERROR500Re-encryption failed. The stored secret is unchanged

Deleting an Aetherfy agent secret

DELETE /api/v1/agents/{agent}/secrets/{key} → 204, no body.

The variable disappears from the agent’s environment on its next deploy. Code that reads it will then see nothing, so remove the dependency before removing the secret.

Returns 404 SECRET_NOT_FOUND if there is no such key.

Aetherfy workspace secrets

A workspace secret is available to every agent in that workspace, so shared credentials are written once instead of per agent.

POST /api/v1/workspaces/{workspace}/secrets → 201 GET /api/v1/workspaces/{workspace}/secrets → 200 DELETE /api/v1/workspaces/{workspace}/secrets/{key} → 204

curl -s -X POST https://agents.aetherfy.com/api/v1/workspaces/research/secrets \ -H "Authorization: Bearer $AETHERFY_API_KEY" \ -H "Content-Type: application/json" \ -d '{"key":"SHARED_DB_URL","value":"postgres://…","description":"Team database"}'

The request body is identical to the agent form. The create response adds workspace_name and user_id in place of agent_id; the list response is the same key-and-metadata shape.

{ "id": "c81f2a05-9d47-4e63-b2f8-6a0c5e73d194", "workspace_name": "research", "user_id": "2f9c6b18-0a53-47e2-9d81-4b7c0e35a6f2", "key": "SHARED_DB_URL", "description": "Team database", "created_at": "2026-08-19T09:22:00Z", "updated_at": "2026-08-19T09:22:00Z" }

There is no rotate route for workspace secrets — write the key again to replace it.

Deleting a workspace deletes its secrets with it, and the delete response reports how many went.

CodeHTTPMeaning
SECRET_VALIDATION_ERROR422The key or value was rejected
SECRET_NOT_FOUND404No such key in this workspace
WORKSPACE_NOT_FOUND404

Choosing between an Aetherfy agent secret and a workspace secret

Put a credential on the workspace when more than one agent legitimately needs the same value, and on the agent when it does not. The trade is blast radius against duplication: a workspace secret is one thing to rotate and one thing to leak, while per-agent copies are several of each.

See Secrets for the guide and the afy equivalents.

Last updated on