curl --request POST \
--url https://api.gigstack.io/v2/teams/{id}/integrations/netsuite/invoices/{invoiceId}/sync \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.gigstack.io/v2/teams/{id}/integrations/netsuite/invoices/{invoiceId}/sync', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/teams/{id}/integrations/netsuite/invoices/{invoiceId}/sync"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true,
"timestamp": 123,
"data": {
"provider": "netsuite",
"operation": "sync",
"livemode": true,
"effect_scope": "team_shared",
"data": {
"enqueued": true
}
}
}netsuite sync
Requires a verified Firebase or active signed personal MCP user. Team API keys/OAuth cannot impersonate their creator. Current role, credential mode and target team are rechecked by the provider service; blocked users are refused. Response data carries provider, operation, livemode, effect_scope and the safe provider result.
Checks invoice team and mode, resets local sync steps and enqueues processing. An enqueue failure may leave local state changed. Do not automatically replay after timeout.
curl --request POST \
--url https://api.gigstack.io/v2/teams/{id}/integrations/netsuite/invoices/{invoiceId}/sync \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.gigstack.io/v2/teams/{id}/integrations/netsuite/invoices/{invoiceId}/sync', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/teams/{id}/integrations/netsuite/invoices/{invoiceId}/sync"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true,
"timestamp": 123,
"data": {
"provider": "netsuite",
"operation": "sync",
"livemode": true,
"effect_scope": "team_shared",
"data": {
"enqueued": true
}
}
}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.
Body
The body is of type object.