Delegations
Prepare a scoped session-key grant; returns the ONE digest the owner signs
/v1/delegations/prepareBuilds the exact Kernel v3.1 permission {call allowlist, expiry, optional rate limit} naming the Cofferline executor as session signer. The scope must fit inside the account's active policy (SPEC §10: delegation ≤ policy). The returned digest is the only thing the account owner ever signs — the permission installs on-chain atomically with the first delegated execution.
Request body
accountstring(required) — The Kernel v3.1 smart account granting scopechain_idobject(required)callsobject[](required)valid_afterintegervalid_untilinteger(required)rate_limitobject
Responses
idstring(required)accountstring(required)chain_idinteger(required)status"prepared" | "active" | "revoked" | "expired"(required)permission_idstring(required)validation_idstring(required)enable_datastring(required)kernel_nonceinteger(required)digeststring(required)session_keystring(required)scopeobjectaccount_deployedbooleanvalid_untilstring(required)created_atstring(required)confirmed_atstring,null(required)revoked_atstring,null(required)
Example
curl -X POST https://api.cofferline.com/v1/delegations/prepare \
-H "authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
-d '{"account":"…","chain_id":{},"calls":[{"target":"…","selector":"…","value_limit":"…"}],"valid_until":0}'
Activate a grant by proving the owner signed the enable digest
/v1/delegations/{id}/confirmVerifies the signature against the account's on-chain ECDSA owner and the live Kernel nonce, then activates the delegation for the executor. The permission itself reaches the chain with the first delegated userOp.
Parameters
idin path,string(required)
Request body
enable_sigstring(required)ownerstring
Responses
idstring(required)accountstring(required)chain_idinteger(required)status"prepared" | "active" | "revoked" | "expired"(required)permission_idstring(required)validation_idstring(required)enable_datastring(required)kernel_nonceinteger(required)digeststring(required)session_keystring(required)scopeobjectaccount_deployedbooleanvalid_untilstring(required)created_atstring(required)confirmed_atstring,null(required)revoked_atstring,null(required)
Example
curl -X POST https://api.cofferline.com/v1/delegations/{id}/confirm \
-H "authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
-d '{"enable_sig":"…"}'
Fetch one delegation
/v1/delegations/{id}Parameters
idin path,string(required)
Responses
idstring(required)accountstring(required)chain_idinteger(required)status"prepared" | "active" | "revoked" | "expired"(required)permission_idstring(required)validation_idstring(required)enable_datastring(required)kernel_nonceinteger(required)digeststring(required)session_keystring(required)scopeobjectaccount_deployedbooleanvalid_untilstring(required)created_atstring(required)confirmed_atstring,null(required)revoked_atstring,null(required)
Example
curl -X GET https://api.cofferline.com/v1/delegations/{id} \
-H "authorization: Bearer $TOKEN"
Revoke a delegation; returns owner-calldata for on-chain finality
/v1/delegations/{id}The executor stops honoring the grant immediately. On-chain removal is the owner's own transaction (returned here as calldata) — revocation never requires Cofferline.
Parameters
idin path,string(required)
Responses
idstring(required)status"revoked"(required)revocationobject(required)
Example
curl -X DELETE https://api.cofferline.com/v1/delegations/{id} \
-H "authorization: Bearer $TOKEN"
Renew an active grant: identical scope, fresh expiry, ONE new owner signature
/v1/delegations/{id}/renewPrepares a NEW grant with the same call allowlist and rate limit but a fresh valid_until (default: the original's duration, capped at 90 days). The old grant stays active until its natural expiry — no authority gap. The returned digest is signed and confirmed exactly like prepare. The scope is re-checked against the CURRENT policy (#18).
Parameters
idin path,string(required)
Request body
valid_untilinteger
Responses
idstring(required)accountstring(required)chain_idinteger(required)status"prepared" | "active" | "revoked" | "expired"(required)permission_idstring(required)validation_idstring(required)enable_datastring(required)kernel_nonceinteger(required)digeststring(required)session_keystring(required)scopeobjectaccount_deployedbooleanvalid_untilstring(required)created_atstring(required)confirmed_atstring,null(required)revoked_atstring,null(required)
Example
curl -X POST https://api.cofferline.com/v1/delegations/{id}/renew \
-H "authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
-d '{}'
List delegations (newest first)
/v1/delegationsParameters
accountin query,stringlimitin query,integer
Responses
delegationsDelegation[](required)
Example
curl -X GET https://api.cofferline.com/v1/delegations \ -H "authorization: Bearer $TOKEN"