curl --request POST \
--url https://api.gigstack.io/v2/webhooks/{id}/resend-current \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"operation_id": "11111111-1111-4111-8111-111111111111",
"expected_livemode": false,
"confirmed": true,
"event": "payment.created",
"resource_id": "payment_example",
"acknowledge_duplicate_delivery": true
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
operation_id: '11111111-1111-4111-8111-111111111111',
expected_livemode: false,
confirmed: true,
event: 'payment.created',
resource_id: 'payment_example',
acknowledge_duplicate_delivery: true
})
};
fetch('https://api.gigstack.io/v2/webhooks/{id}/resend-current', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/webhooks/{id}/resend-current"
payload = {
"operation_id": "11111111-1111-4111-8111-111111111111",
"expected_livemode": False,
"confirmed": True,
"event": "payment.created",
"resource_id": "payment_example",
"acknowledge_duplicate_delivery": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true,
"data": {
"operation_id": "11111111-1111-4111-8111-111111111111",
"action": "resend_current",
"team_id": "team_example",
"livemode": false,
"endpoint_id": "wh_example",
"delivery_id": "manual-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"log_id": "manual-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"submission": "unknown",
"delivery": "pending",
"attempts": 0,
"duplicate_delivery_possible": true,
"payload_semantics": "current_resource",
"v2_state": "current_at_delivery"
},
"timestamp": 1700000000000
}Send current resource state
Requires a verified Firebase person or signed personal MCP credential with current team authority; ordinary team API keys are refused. The backend resolves the saved endpoint and resource. Confirm the selected team, current mode and effect before posting. Save operation_id before the request. HTTP 200 describes queue submission and delivery separately; it does not prove receipt. On timeout or unknown submission, read the same operation and do not automatically post again. Explicitly sends the currently authorized resource, potentially creating duplicate delivery. An optional log_id supplies scoped context only; it never selects an old payload. See the Webhooks guide for recovery and payload semantics.
curl --request POST \
--url https://api.gigstack.io/v2/webhooks/{id}/resend-current \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"operation_id": "11111111-1111-4111-8111-111111111111",
"expected_livemode": false,
"confirmed": true,
"event": "payment.created",
"resource_id": "payment_example",
"acknowledge_duplicate_delivery": true
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
operation_id: '11111111-1111-4111-8111-111111111111',
expected_livemode: false,
confirmed: true,
event: 'payment.created',
resource_id: 'payment_example',
acknowledge_duplicate_delivery: true
})
};
fetch('https://api.gigstack.io/v2/webhooks/{id}/resend-current', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/webhooks/{id}/resend-current"
payload = {
"operation_id": "11111111-1111-4111-8111-111111111111",
"expected_livemode": False,
"confirmed": True,
"event": "payment.created",
"resource_id": "payment_example",
"acknowledge_duplicate_delivery": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true,
"data": {
"operation_id": "11111111-1111-4111-8111-111111111111",
"action": "resend_current",
"team_id": "team_example",
"livemode": false,
"endpoint_id": "wh_example",
"delivery_id": "manual-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"log_id": "manual-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"submission": "unknown",
"delivery": "pending",
"attempts": 0,
"duplicate_delivery_possible": true,
"payload_semantics": "current_resource",
"v2_state": "current_at_delivery"
},
"timestamp": 1700000000000
}Authorizations
Authentication Method: HTTP Bearer token.
The runtime requires the literal Bearer prefix — a bare token in the
Authorization header is rejected with 401 unauthorized.
Header Format: Authorization: Bearer YOUR_API_KEY
Your API key is a JWT. Live keys operate on live data (livemode: true);
test keys operate on isolated test data (livemode: false).
Get your key at: app.gigstack.pro/settings?tab=api
Errors: credential failures are answered by the authentication layer with a raw
{ "message": … } body, not the standardized envelope — 401 for a missing, malformed or
expired token, 403 for a revoked key or a plan without API access. See the Unauthorized
and AuthForbidden responses.
Path Parameters
^[A-Za-z0-9_-]{1,200}$Query Parameters
^[A-Za-z0-9_-]{1,200}$Body
^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$Assertion of the currently authenticated mode; never selects or overrides it. For get, identifies the frozen operation mode.
true payment.created, payment.updated, payment.succeeded, payment.canceled, payment.deleted, payment.upcoming_due_date, invoice.created, invoice.canceled, invoice.failed, receipt.created, receipt.updated, receipt.completed, receipt.deleted, customer.created, customer.updated, customer.deleted, service.created, service.updated, service.deleted, teams.created, teams.sat.completed, teams.stripe.completed, teams.openpay.completed, teams.sat.manifest.signed ^[A-Za-z0-9_-]{1,200}$true ^[A-Za-z0-9_-]{1,200}$^[A-Za-z0-9_-]{1,200}$