Create subscription
curl --request POST \
--url https://dev.api.withconvexity.com/v1/indexer/subscriptions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"network": "BASE",
"contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"webhookUrl": "https://api.merchant.example/webhooks/indexer",
"events": [
"transfer",
"burn"
]
}
'import requests
url = "https://dev.api.withconvexity.com/v1/indexer/subscriptions"
payload = {
"network": "BASE",
"contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"webhookUrl": "https://api.merchant.example/webhooks/indexer",
"events": ["transfer", "burn"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
network: 'BASE',
contractAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
webhookUrl: 'https://api.merchant.example/webhooks/indexer',
events: ['transfer', 'burn']
})
};
fetch('https://dev.api.withconvexity.com/v1/indexer/subscriptions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"status": true,
"message": "Indexer subscription created",
"data": {
"id": "665f0a3b2c1e4a0012ab34cd",
"projectId": "proj_9f2c1a8e",
"network": "BASE",
"contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"webhookUrl": "https://api.merchant.example/webhooks/indexer",
"events": [
"transfer",
"burn"
],
"status": "active",
"createdBy": "proj_9f2c1a8e",
"createdAt": "2026-07-01T10:22:31.004Z",
"updatedAt": "2026-07-01T10:22:31.004Z",
"lastDeliveryAt": "2026-07-03T08:14:02.771Z",
"deliveredCount": 128,
"failedCount": 3,
"droppedCount": 0,
"signingSecret": "whsec_3a9f8c2b1d7e4f60a5c8e9b2d1f4a7c0",
"secretWarning": "Store this signing secret securely; it will not be shown again. Use it to verify the X-Indexer-Signature header."
}
}Blockchain Events
Create subscription
Creates a subscription that streams decoded events for a contract to your webhook. Requires the network’s subscribe capability (e.g. indexer.subscribe.evm). The response includes signingSecret only on creation; store it securely.
POST
/
v1
/
indexer
/
subscriptions
Create subscription
curl --request POST \
--url https://dev.api.withconvexity.com/v1/indexer/subscriptions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"network": "BASE",
"contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"webhookUrl": "https://api.merchant.example/webhooks/indexer",
"events": [
"transfer",
"burn"
]
}
'import requests
url = "https://dev.api.withconvexity.com/v1/indexer/subscriptions"
payload = {
"network": "BASE",
"contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"webhookUrl": "https://api.merchant.example/webhooks/indexer",
"events": ["transfer", "burn"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
network: 'BASE',
contractAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
webhookUrl: 'https://api.merchant.example/webhooks/indexer',
events: ['transfer', 'burn']
})
};
fetch('https://dev.api.withconvexity.com/v1/indexer/subscriptions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"status": true,
"message": "Indexer subscription created",
"data": {
"id": "665f0a3b2c1e4a0012ab34cd",
"projectId": "proj_9f2c1a8e",
"network": "BASE",
"contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"webhookUrl": "https://api.merchant.example/webhooks/indexer",
"events": [
"transfer",
"burn"
],
"status": "active",
"createdBy": "proj_9f2c1a8e",
"createdAt": "2026-07-01T10:22:31.004Z",
"updatedAt": "2026-07-01T10:22:31.004Z",
"lastDeliveryAt": "2026-07-03T08:14:02.771Z",
"deliveredCount": 128,
"failedCount": 3,
"droppedCount": 0,
"signingSecret": "whsec_3a9f8c2b1d7e4f60a5c8e9b2d1f4a7c0",
"secretWarning": "Store this signing secret securely; it will not be shown again. Use it to verify the X-Indexer-Signature header."
}
}Authorizations
OAuth 2.0 access token from Auth-Edge.
Body
application/json
Response
Created
The response is of type object.
⌘I
