Service Accounts API

Manage service account API keys: list, create, rotate, and revoke.

GET/api/v0/service-accounts/{serviceAccountId}/api-keys

List service account API keys

Returns all API keys for a service account, active and inactive. Each item carries `isRevoked`, `expiresAt`, and `revokedAt` so clients can split them into active/inactive views.

cURL
curl 'https://api.factory.ai/api/v0/service-accounts/{serviceAccountId}/api-keys' \
  -H 'Authorization: Bearer $FACTORY_API_KEY'

Parameters

serviceAccountIdstringpathrequired

Service account ID

Responses

200Response for status 200
apiKeysobject[]required
idstringrequired

API key ID

namestringrequired

Human-readable name for the key

fingerprintstringrequired

Non-reversible suffix for display

createdAtnumberrequired

Unix epoch milliseconds when the key was created

expiresAtnumber

Unix epoch milliseconds when the key expires, if set

isRevokedbooleanrequired

Whether the key has been revoked (soft-deleted)

revokedAtnumber

Unix epoch milliseconds when the key was revoked, if revoked

401Response for status 401
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

402Response for status 402
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

403Response for status 403
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

404Response for status 404
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

500Response for status 500
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

POST/api/v0/service-accounts/{serviceAccountId}/api-keys

Create a service account API key

Mints a new API key for a service account and returns the one-time key value. The value is shown only once and cannot be retrieved later.

cURL
curl -X POST 'https://api.factory.ai/api/v0/service-accounts/{serviceAccountId}/api-keys' \
  -H 'Authorization: Bearer $FACTORY_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ ... }'

Parameters

serviceAccountIdstringpathrequired

Service account ID

Request body

namestringrequired
expiresAtinteger

Responses

201Response for status 201
apiKeyobjectrequired
idstringrequired

API key ID

valuestringrequired

One-time presentation key value, returned only on creation

fingerprintstringrequired

Non-reversible suffix for display

namestringrequired

Human-readable name for the key

expiresAtnumber

Unix epoch milliseconds when the key expires, if set

400Response for status 400
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

401Response for status 401
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

402Response for status 402
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

403Response for status 403
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

404Response for status 404
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

409Response for status 409
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

500Response for status 500
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

POST/api/v0/service-accounts/{serviceAccountId}/api-keys/{keyId}/revoke

Revoke a service account API key

Revokes an API key for a service account. Once revoked, the key can no longer authenticate. Idempotent.

cURL
curl -X POST 'https://api.factory.ai/api/v0/service-accounts/{serviceAccountId}/api-keys/{keyId}/revoke' \
  -H 'Authorization: Bearer $FACTORY_API_KEY'

Parameters

serviceAccountIdstringpathrequired

Service account ID

keyIdstringpathrequired

API key ID

Responses

204Response for status 204
401Response for status 401
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

403Response for status 403
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

404Response for status 404
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

500Response for status 500
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

POST/api/v0/service-accounts/{serviceAccountId}/api-keys/{keyId}/rotate

Rotate a service account API key

DESTRUCTIVE: atomically revokes the existing key and issues a replacement that inherits its name, returning the new one-time key value (shown only once). The previous key stops authenticating the instant this call succeeds, so any client still using it will immediately start failing with 401. Update every consumer with the new value before rotating, or set `gracePeriodMinutes` to keep the old key valid for a short overlap window.

cURL
curl -X POST 'https://api.factory.ai/api/v0/service-accounts/{serviceAccountId}/api-keys/{keyId}/rotate' \
  -H 'Authorization: Bearer $FACTORY_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ ... }'

Parameters

serviceAccountIdstringpathrequired

Service account ID

keyIdstringpathrequired

API key ID

Request body

expiresAtinteger
gracePeriodMinutesinteger

How long (0-10 minutes) the rotated-from key stays valid after rotation. Omit or 0 revokes it immediately. Rejected with a 400 if the key would expire before the grace window ends (the grace period never extends a key lifetime).

Responses

200Response for status 200
apiKeyobjectrequired
idstringrequired

API key ID

valuestringrequired

One-time presentation key value, returned only on creation

fingerprintstringrequired

Non-reversible suffix for display

namestringrequired

Human-readable name for the key

expiresAtnumber

Unix epoch milliseconds when the key expires, if set

400Response for status 400
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

401Response for status 401
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

403Response for status 403
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

404Response for status 404
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

409Response for status 409
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values

500Response for status 500
detailstringrequired

Human-readable error message

statusnumberrequired

HTTP status code

titlestringrequired

HTTP status title

metadataobject (map)

Additional error metadata

Values