curl --request PUT \
--url https://api.gigstack.io/v2/teams/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"address": {
"country": "MEX",
"street": "Av. Reforma (Updated)",
"zip": "11000",
"city": "Ciudad de México",
"state": "CDMX",
"exterior": "456-B",
"municipality": "Miguel Hidalgo",
"neighborhood": "Polanco"
},
"brand": {
"alias": "Empresa Innovadora 2025",
"primary_color": "#1e40af",
"secondary_color": "#1e3a8a",
"logo": "https://example.com/new-logo.png"
},
"support_email": "soporte@empresa.com",
"support_phone": "+52 55 9876 5432",
"tax_id": "EIN850123ABC",
"tax_system": "601"
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
address: {
country: 'MEX',
street: 'Av. Reforma (Updated)',
zip: '11000',
city: 'Ciudad de México',
state: 'CDMX',
exterior: '456-B',
municipality: 'Miguel Hidalgo',
neighborhood: 'Polanco'
},
brand: {
alias: 'Empresa Innovadora 2025',
primary_color: '#1e40af',
secondary_color: '#1e3a8a',
logo: 'https://example.com/new-logo.png'
},
support_email: 'soporte@empresa.com',
support_phone: '+52 55 9876 5432',
tax_id: 'EIN850123ABC',
tax_system: '601'
})
};
fetch('https://api.gigstack.io/v2/teams/{id}', 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}"
payload = {
"address": {
"country": "MEX",
"street": "Av. Reforma (Updated)",
"zip": "11000",
"city": "Ciudad de México",
"state": "CDMX",
"exterior": "456-B",
"municipality": "Miguel Hidalgo",
"neighborhood": "Polanco"
},
"brand": {
"alias": "Empresa Innovadora 2025",
"primary_color": "#1e40af",
"secondary_color": "#1e3a8a",
"logo": "https://example.com/new-logo.png"
},
"support_email": "soporte@empresa.com",
"support_phone": "+52 55 9876 5432",
"tax_id": "EIN850123ABC",
"tax_system": "601"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"message": "Team updated successfully",
"data": {
"id": "team_1234567890",
"legal_name": "MI EMPRESA EJEMPLO SA DE CV",
"address": {
"street": "Av. Paseo de la Reforma",
"exterior": "222",
"neighborhood": "Juárez",
"city": "Ciudad de México",
"state": "CDMX",
"zip": "06600",
"country": "MEX"
},
"brand": {
"alias": "Mi Empresa",
"primary_color": "#1F2937",
"secondary_color": "#10B981",
"logo": null
},
"settings": {
"default_description": null,
"emails": {
"invoices_bcc": [],
"avoid_invoice_emails": false,
"avoid_test_invoice_emails": true,
"avoid_receipts_emails": false
},
"global_invoice_disabled": false,
"use": "G03",
"periodicity": {
"label": "Mes",
"value": "month"
}
},
"members": [
{
"id": "user_1234567890",
"email": "admin@ejemplo.com",
"role": "admin"
}
],
"owner": "user_1234567890",
"support_email": "soporte@ejemplo.com",
"support_phone": "+525512345678",
"tax_id": "MEE200101ABC",
"tax_system": "601",
"created_at": 1767225600000,
"sat": {
"completed": true,
"connected_at": 1767225600000,
"csd_expires_at": 1893456000000
},
"integrations": {
"stripe": {
"completed": false,
"category": null
}
},
"metadata": {},
"credit_limit": null,
"used_credits": 12,
"credit_period_start": 1767225600000,
"status": "active",
"scheduled_deletion": null
}
}Update team
Update an existing team.
gigstack Connect: Update other teams using the team parameter.
curl --request PUT \
--url https://api.gigstack.io/v2/teams/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"address": {
"country": "MEX",
"street": "Av. Reforma (Updated)",
"zip": "11000",
"city": "Ciudad de México",
"state": "CDMX",
"exterior": "456-B",
"municipality": "Miguel Hidalgo",
"neighborhood": "Polanco"
},
"brand": {
"alias": "Empresa Innovadora 2025",
"primary_color": "#1e40af",
"secondary_color": "#1e3a8a",
"logo": "https://example.com/new-logo.png"
},
"support_email": "soporte@empresa.com",
"support_phone": "+52 55 9876 5432",
"tax_id": "EIN850123ABC",
"tax_system": "601"
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
address: {
country: 'MEX',
street: 'Av. Reforma (Updated)',
zip: '11000',
city: 'Ciudad de México',
state: 'CDMX',
exterior: '456-B',
municipality: 'Miguel Hidalgo',
neighborhood: 'Polanco'
},
brand: {
alias: 'Empresa Innovadora 2025',
primary_color: '#1e40af',
secondary_color: '#1e3a8a',
logo: 'https://example.com/new-logo.png'
},
support_email: 'soporte@empresa.com',
support_phone: '+52 55 9876 5432',
tax_id: 'EIN850123ABC',
tax_system: '601'
})
};
fetch('https://api.gigstack.io/v2/teams/{id}', 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}"
payload = {
"address": {
"country": "MEX",
"street": "Av. Reforma (Updated)",
"zip": "11000",
"city": "Ciudad de México",
"state": "CDMX",
"exterior": "456-B",
"municipality": "Miguel Hidalgo",
"neighborhood": "Polanco"
},
"brand": {
"alias": "Empresa Innovadora 2025",
"primary_color": "#1e40af",
"secondary_color": "#1e3a8a",
"logo": "https://example.com/new-logo.png"
},
"support_email": "soporte@empresa.com",
"support_phone": "+52 55 9876 5432",
"tax_id": "EIN850123ABC",
"tax_system": "601"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"message": "Team updated successfully",
"data": {
"id": "team_1234567890",
"legal_name": "MI EMPRESA EJEMPLO SA DE CV",
"address": {
"street": "Av. Paseo de la Reforma",
"exterior": "222",
"neighborhood": "Juárez",
"city": "Ciudad de México",
"state": "CDMX",
"zip": "06600",
"country": "MEX"
},
"brand": {
"alias": "Mi Empresa",
"primary_color": "#1F2937",
"secondary_color": "#10B981",
"logo": null
},
"settings": {
"default_description": null,
"emails": {
"invoices_bcc": [],
"avoid_invoice_emails": false,
"avoid_test_invoice_emails": true,
"avoid_receipts_emails": false
},
"global_invoice_disabled": false,
"use": "G03",
"periodicity": {
"label": "Mes",
"value": "month"
}
},
"members": [
{
"id": "user_1234567890",
"email": "admin@ejemplo.com",
"role": "admin"
}
],
"owner": "user_1234567890",
"support_email": "soporte@ejemplo.com",
"support_phone": "+525512345678",
"tax_id": "MEE200101ABC",
"tax_system": "601",
"created_at": 1767225600000,
"sat": {
"completed": true,
"connected_at": 1767225600000,
"csd_expires_at": 1893456000000
},
"integrations": {
"stripe": {
"completed": false,
"category": null
}
},
"metadata": {},
"credit_limit": null,
"used_credits": 12,
"credit_period_start": 1767225600000,
"status": "active",
"scheduled_deletion": null
}
}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
Query Parameters
gigstack Connect: Target team ID for multi-team access.
Requires gigstack Connect enabled on your team and shared billing account.
Also requires the multipleIssuerAccounts feature on your plan. Requests targeting a
team other than the one your API key belongs to return 403 without it.
Only API keys can use it: an OAuth access token sent with another team's id is rejected with
403 Team mismatch with OAuth token.
Optional — omit it entirely unless you are acting on another team. It deliberately
carries no example value so generated snippets do not emit ?team=undefined; when the
parameter is absent, the team is derived from your API key.
Example: ?team=team_xyz789
Body
Unknown top-level keys are rejected (400 validation_failed / unexpected_key) — body
validation runs in strict allowlist mode. team, livemode and owner are reserved
and injected by the auth middleware.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
"support@company.com"
"+52 55 1234 5678"
Legal name of the team/company
"Empresa de Tecnología S.A. de C.V."
"ABC123456789"
"601"
Generate onboarding URL for team setup
true
Additional metadata to store with the team
Array of members to add to the team on creation
Show child attributes
Show child attributes
[
{ "id": "user123abc", "role": "editor" },
{ "id": "user456def", "role": "admin" }
]
When true, copies all members from the master team to the newly created team with their existing permissions
false
Maximum number of documents (credits) the team can create per billing period. When null or omitted, the team shares the billing account pool with no per-team cap. On update it is applied only when the request is made with an API key of another team of the same billing account (the managing team); a team cannot change its own limit, and the field is ignored in that case.
1000