Set a secret

⚠️
Preview — this feature is being built; the design below is the spec.
PUT https://app.syntic.ai/v1/vaults/{vault_id}/secrets/{name}

Create a secret, or replace its value. The value is encrypted with your organization’s key before storage and is never returned by any endpoint, log or trace. Restrict where it may be sent with allowed_destinations.

For how this fits into a full workflow, see Credential vaults.

Headers

HeaderRequiredValue
AuthorizationYesBearer <key>: a private inference key (sk_live_...). See Authentication.
syntic-betaYes, while in previewagents-2026-11-01. Without it the call fails with 400 beta_required. See Versioning.
Content-TypeYesapplication/json

Path parameters

ParameterTypeDescription
vault_idstringThe vault id, starting with vlt_.
namestring1 to 64 letters, digits, - and _.

Body parameters

ParameterTypeRequiredNotes
valuestringYesThe secret, up to 16 KB.
allowed_destinationsarray of stringsNoHost names, *. wildcards allowed. Strongly recommended.

Response

200 OK, Content-Type: application/json

{
  "name": "crm-token",
  "hint": "…9f2a",
  "allowed_destinations": [
    "mcp.example.com"
  ],
  "created_at": "2026-11-03T09:00:00Z",
  "updated_at": "2026-11-05T09:00:00Z",
  "last_used_at": "2026-11-05T10:00:03Z"
}

Examples

curl -sS -X PUT https://app.syntic.ai/v1/vaults/vlt_01JC2B4D6F8H0K2M4P6R/secrets/crm-token \
  -H "Authorization: Bearer $SYNTIC_API_KEY" \
  -H "syntic-beta: agents-2026-11-01" \
  -H "Content-Type: application/json" \
  -d '{
      "value": "crm_live_REPLACE_ME",
      "allowed_destinations": [
        "mcp.example.com"
      ]
    }'

Errors

Errors use the error envelope and carry a request_id. Codes specific to this operation:

StatustypecodeWhen
400invalid_request_errorbeta_requiredThe syntic-beta header is missing.
400invalid_request_errorinvalid_secret_nameDisallowed characters.
400invalid_request_errorsecret_too_largeValue over 16 KB.
403permission_errorrole_requiredThe key’s creator is not an Administrator or Owner.
404not_found_errorvault_not_foundNo vault with that id in this workspace.
401authentication_errorinvalid_api_keyThe key is missing, unknown, revoked or expired.
429rate_limit_errorrate_limitedToo many requests; wait for Retry-After. See Rate-limit headers.

Who may call this

Creating vaults and writing or deleting secrets needs a key created by an Administrator or Owner. Any key in the workspace may list vaults and read secret names, so developers can wire up agents without ever handling values.

Each write records a vault.secret_written audit event; the value itself is never logged.

Was this page helpful?