Safe (Gnosis Safe) Delegates API
The delegates API from Safe (Gnosis Safe) — 5 operation(s) for delegates.
The delegates API from Safe (Gnosis Safe) — 5 operation(s) for delegates.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/gnosis-safe:gnosis-safe-delegates-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Safe Transaction Service Delegates API
version: 6.3.0
description: API to keep track of transactions sent via Safe smart contracts
tags:
- name: Delegates
paths:
/tx-service/eth/api/v1/delegates/:
get:
operationId: delegates_list
description: Returns a list with all the delegates
parameters:
- in: query
name: safe
schema:
type:
- string
- 'null'
- in: query
name: delegate
schema:
type: string
- in: query
name: delegator
schema:
type: string
- in: query
name: label
schema:
type: string
- name: limit
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- name: offset
required: false
in: query
description: The initial index from which to return the results.
schema:
type: integer
tags:
- Delegates
security:
- cookieAuth: []
- tokenAuth: []
- {}
deprecated: true
responses:
'400':
description: Invalid data
path: /tx-service/eth/api/v1/delegates/
title: List Delegates
additionalInfo: ''
summary: Delegates list
x-summary-source: derived
post:
operationId: delegates_create
description: 'Adds a new Safe delegate with a custom label. Calls with same delegate but different label or
signer will update the label or delegator if a different one is provided
For the signature we are using TOTP with `T0=0` and `Tx=3600`. TOTP is calculated by taking the
Unix UTC epoch time (no milliseconds) and dividing by 3600 (natural division, no decimals)
To generate the signature, this hash needs to be signed: keccak(checksummed address + str(int(current_epoch //
3600)))
As an example, if the 0x132512f995866CcE1b0092384A6118EDaF4508Ff delegate is added and epoch=1586779140:
- `TOTP = epoch // 3600 = 1586779140 // 3600 = 440771`
- keccak("0x132512f995866CcE1b0092384A6118EDaF4508Ff440771") would be the hash a Safe owner would
need to sign.`'
tags:
- Delegates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Delegate'
required: true
security:
- cookieAuth: []
- tokenAuth: []
- {}
deprecated: true
responses:
'202':
description: Accepted
'400':
description: Malformed data
path: /tx-service/eth/api/v1/delegates/
title: Create Delegate
additionalInfo: ''
summary: Delegates create
x-summary-source: derived
/tx-service/eth/api/v1/delegates/{delegate_address}/:
delete:
operationId: delegates_destroy
description: 'Delete every pair delegate/delegator found. Signature is built the same way as for adding a delegate,
but in this case the signer can be either the `delegator` (owner) or the `delegate` itself.
Check `POST /delegates/`'
parameters:
- in: path
name: delegate_address
schema:
type: string
required: true
tags:
- Delegates
security:
- cookieAuth: []
- tokenAuth: []
- {}
deprecated: true
responses:
'204':
description: Deleted
'400':
description: Malformed data
'404':
description: Delegate not found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/CodeErrorResponse'
description: Invalid Ethereum address/Error processing data
path: /tx-service/eth/api/v1/delegates/{delegate_address}/
title: Delete Delegate
additionalInfo: ''
summary: Delegates destroy
x-summary-source: derived
/tx-service/eth/api/v1/safes/{address}/delegates/{delegate_address}/:
delete:
operationId: safes_delegates_destroy
description: 'Delete a delegate for a Safe. Signature is built the same way that for adding a delegate.
Check `POST /delegates/`'
parameters:
- in: path
name: address
schema:
type: string
required: true
- in: path
name: delegate_address
schema:
type: string
required: true
tags:
- Delegates
security:
- cookieAuth: []
- tokenAuth: []
- {}
deprecated: true
responses:
'204':
description: Deleted
'400':
description: Malformed data
'404':
description: Delegate not found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/CodeErrorResponse'
description: Invalid Ethereum address | Error processing data
path: /tx-service/eth/api/v1/safes/{address}/delegates/{delegate_address}/
title: Remove Delegate from Safe
additionalInfo: ''
summary: Safes delegates destroy
x-summary-source: derived
/tx-service/eth/api/v2/delegates/:
get:
operationId: delegates_list_2
description: Returns a list with all the delegates
parameters:
- in: query
name: safe
schema:
type:
- string
- 'null'
- in: query
name: delegate
schema:
type: string
- in: query
name: delegator
schema:
type: string
- in: query
name: label
schema:
type: string
- name: limit
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- name: offset
required: false
in: query
description: The initial index from which to return the results.
schema:
type: integer
tags:
- Delegates
security:
- cookieAuth: []
- tokenAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedSafeDelegateResponseList'
description: ''
'400':
description: Invalid data
path: /tx-service/eth/api/v2/delegates/
title: List Delegates
additionalInfo: ''
summary: Delegates list 2
x-summary-source: derived
post:
operationId: delegates_create_2
description: 'Adds a new Safe delegate with a custom label. Calls with same delegate but different label or
signer will update the label or delegator if a different one is provided.
To generate the signature, the following EIP712 data hash needs to be signed:
```python
{
"types": {
"EIP712Domain": [
{"name": "name", "type": "string"},
{"name": "version", "type": "string"},
{"name": "chainId", "type": "uint256"},
],
"Delegate": [
{"name": "delegateAddress", "type": "address"},
{"name": "totp", "type": "uint256"},
],
},
"primaryType": "Delegate",
"domain": {
"name": "Safe Transaction Service",
"version": "1.0",
"chainId": chain_id,
},
"message": {
"delegateAddress": delegate_address,
"totp": totp,
},
}
```
For the signature we use `TOTP` with `T0=0` and `Tx=3600`. `TOTP` is calculated by taking the
Unix UTC epoch time (no milliseconds) and dividing by 3600 (natural division, no decimals).'
tags:
- Delegates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DelegateSerializerV2'
required: true
security:
- cookieAuth: []
- tokenAuth: []
- {}
responses:
'202':
description: Accepted
'400':
description: Malformed data
path: /tx-service/eth/api/v2/delegates/
title: Create Delegate
additionalInfo: ''
summary: Delegates create 2
x-summary-source: derived
/tx-service/eth/api/v2/delegates/{delegate_address}/:
delete:
operationId: delegates_destroy_2
description: 'Removes every delegate/delegator pair found associated with a given delegate address. The
signature is built the same way as for adding a delegate, but in this case the signer can be
either the `delegator` (owner) or the `delegate` itself. Check `POST /delegates/` to learn more.'
parameters:
- in: path
name: delegate_address
schema:
type: string
required: true
tags:
- Delegates
security:
- cookieAuth: []
- tokenAuth: []
- {}
responses:
'204':
description: Deleted
'400':
description: Malformed data
'404':
description: Delegate not found
'422':
description: Invalid Ethereum address/Error processing data
path: /tx-service/eth/api/v2/delegates/{delegate_address}/
title: Delete Delegate
additionalInfo: ''
summary: Delegates destroy 2
x-summary-source: derived
components:
schemas:
PaginatedSafeDelegateResponseList:
type: object
required:
- count
- results
properties:
count:
type: integer
example: 123
next:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?offset=400&limit=100
previous:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?offset=200&limit=100
results:
type: array
items:
$ref: '#/components/schemas/SafeDelegateResponse'
CodeErrorResponse:
type: object
properties:
code:
type: integer
message:
type: string
arguments:
type: array
items: {}
required:
- arguments
- code
- message
Delegate:
type: object
description: ".. deprecated:: 4.38.0\n Deprecated in favour of DelegateSerializerV2"
properties:
safe:
type:
- string
- 'null'
delegate:
type: string
delegator:
type: string
signature:
type: string
label:
type: string
maxLength: 50
required:
- delegate
- delegator
- label
- signature
DelegateSerializerV2:
type: object
description: Mixin to validate delegate operations data
properties:
safe:
type:
- string
- 'null'
delegate:
type: string
delegator:
type: string
signature:
type: string
label:
type: string
maxLength: 50
expiryDate:
type:
- string
- 'null'
format: date-time
required:
- delegate
- delegator
- label
- signature
SafeDelegateResponse:
type: object
properties:
safe:
type: string
delegate:
type: string
delegator:
type: string
label:
type: string
maxLength: 50
expiryDate:
type: string
format: date-time
required:
- delegate
- delegator
- expiryDate
- label
- safe
securitySchemes:
cookieAuth:
type: apiKey
in: cookie
name: sessionid
tokenAuth:
type: apiKey
in: header
name: Authorization
description: Token-based authentication with required prefix "Token"