curl --request POST \
--url https://api.gigstack.io/v2/payments/{paymentId}/reminder-recoveries \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"operation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expected_livemode": true,
"expected_revision": "<string>",
"reminders": [
{
"duration": 1825,
"id": "<string>",
"custom_subject": "<string>",
"custom_template": "<string>"
}
],
"supersedes_operation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"affected_generations": [
{
"reminder_id": "<string>",
"generation": "<string>"
}
],
"limitDaysToPay": 1825
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
operation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
expected_livemode: true,
expected_revision: '<string>',
reminders: [
{
duration: 1825,
id: '<string>',
custom_subject: '<string>',
custom_template: '<string>'
}
],
supersedes_operation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
affected_generations: [{reminder_id: '<string>', generation: '<string>'}],
limitDaysToPay: 1825
})
};
fetch('https://api.gigstack.io/v2/payments/{paymentId}/reminder-recoveries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/payments/{paymentId}/reminder-recoveries"
payload = {
"operation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expected_livemode": True,
"expected_revision": "<string>",
"reminders": [
{
"duration": 1825,
"id": "<string>",
"custom_subject": "<string>",
"custom_template": "<string>"
}
],
"supersedes_operation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"affected_generations": [
{
"reminder_id": "<string>",
"generation": "<string>"
}
],
"limitDaysToPay": 1825
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)preparePaymentReminderRecovery
Canonical payment-mode reminder lifecycle. Config revision and durable UUID prevent stale writes. Read the same UUID after an uncertain result. Reconciliation is read-only; continuation consumes only untouched queue steps. Unknown consumed sends require freshly reviewed browser supersession, explicit duplicate-email acknowledgement and no active send claim. Empty reminders can enable team defaults. Production test data mode can send real email. Source implementation; no deployment or live email proof.
curl --request POST \
--url https://api.gigstack.io/v2/payments/{paymentId}/reminder-recoveries \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"operation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expected_livemode": true,
"expected_revision": "<string>",
"reminders": [
{
"duration": 1825,
"id": "<string>",
"custom_subject": "<string>",
"custom_template": "<string>"
}
],
"supersedes_operation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"affected_generations": [
{
"reminder_id": "<string>",
"generation": "<string>"
}
],
"limitDaysToPay": 1825
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
operation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
expected_livemode: true,
expected_revision: '<string>',
reminders: [
{
duration: 1825,
id: '<string>',
custom_subject: '<string>',
custom_template: '<string>'
}
],
supersedes_operation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
affected_generations: [{reminder_id: '<string>', generation: '<string>'}],
limitDaysToPay: 1825
})
};
fetch('https://api.gigstack.io/v2/payments/{paymentId}/reminder-recoveries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/payments/{paymentId}/reminder-recoveries"
payload = {
"operation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expected_livemode": True,
"expected_revision": "<string>",
"reminders": [
{
"duration": 1825,
"id": "<string>",
"custom_subject": "<string>",
"custom_template": "<string>"
}
],
"supersedes_operation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"affected_generations": [
{
"reminder_id": "<string>",
"generation": "<string>"
}
],
"limitDaysToPay": 1825
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)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,160}$Query Parameters
^[A-Za-z0-9_-]{1,160}$Body
^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$^[0-9a-f]{64}$100Show child attributes
Show child attributes
^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$1 - 100 elementsShow child attributes
Show child attributes
1 <= x <= 3650Response
Current reminder configuration, operation receipt or private review; email acceptance does not prove delivery.