curl --request GET \
--url https://api.gigstack.io/v2/documents \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gigstack.io/v2/documents', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/documents"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"success": true,
"data": {
"data": [
{
"id": "doc_1234567890",
"document_type": "contract",
"name": "Contrato de servicios 2026 — Cliente ACME",
"description": "Contrato marco de prestación de servicios",
"file_url": "https://firebasestorage.googleapis.com/v0/b/gigstackpro.appspot.com/o/teams%2Fteam_123%2Fdocuments%2Fcontrato-acme.pdf?alt=media&token=9f1c7d84-3b2e-4a56-8c0d-1e7f5b9a2c43",
"file_name": "contrato-acme.pdf",
"file_size": 284913,
"mime_type": "application/pdf",
"linked_entities": [
{
"entity_type": "client",
"entity_id": "client_1234567890",
"linked_at": 1767225600000
}
],
"compliance_status": "pending_review",
"compliance_notes": null,
"valid_from": 1767225600000,
"valid_until": 1798761600000,
"ai_extraction": null,
"tags": [
"contrato",
"acme"
],
"metadata": null,
"created_at": 1767225600000,
"created_by": "user_1234567890",
"updated_at": null,
"livemode": true
}
],
"has_more": false,
"next_cursor": null
},
"message": "Documents retrieved successfully",
"timestamp": 1767225600000
}List documents
Availability: This operation has no configured public API gateway route and is not available through the documented base URL.
List the team’s documents, newest first. Soft-deleted documents are excluded.
entity_type and entity_id filter on the document’s links. entity_id is applied
client-side after the query, so it only narrows the page that was already fetched —
combine it with a larger limit if you expect sparse matches.
curl --request GET \
--url https://api.gigstack.io/v2/documents \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gigstack.io/v2/documents', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/documents"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"success": true,
"data": {
"data": [
{
"id": "doc_1234567890",
"document_type": "contract",
"name": "Contrato de servicios 2026 — Cliente ACME",
"description": "Contrato marco de prestación de servicios",
"file_url": "https://firebasestorage.googleapis.com/v0/b/gigstackpro.appspot.com/o/teams%2Fteam_123%2Fdocuments%2Fcontrato-acme.pdf?alt=media&token=9f1c7d84-3b2e-4a56-8c0d-1e7f5b9a2c43",
"file_name": "contrato-acme.pdf",
"file_size": 284913,
"mime_type": "application/pdf",
"linked_entities": [
{
"entity_type": "client",
"entity_id": "client_1234567890",
"linked_at": 1767225600000
}
],
"compliance_status": "pending_review",
"compliance_notes": null,
"valid_from": 1767225600000,
"valid_until": 1798761600000,
"ai_extraction": null,
"tags": [
"contrato",
"acme"
],
"metadata": null,
"created_at": 1767225600000,
"created_by": "user_1234567890",
"updated_at": null,
"livemode": true
}
],
"has_more": false,
"next_cursor": null
},
"message": "Documents retrieved successfully",
"timestamp": 1767225600000
}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.
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
Page size. Defaults to 50, capped at 100.
1 <= x <= 100Id of the last document from the previous page.
Filter by document type.
Kind of supporting document. Only these four values are accepted when creating a
document. The internal type union also contains payment_confirmation,
subscription_info, usage_report and cronograma, but those cannot be set through
this API.
contract, delivery_proof, payment_proof, communication "contract"
Filter by compliance review state.
Compliance review state. Always pending_review when a document is created; change it
with PATCH /v2/documents/{id}.
pending_review, valid, requires_update, expired, rejected "pending_review"
Filter to documents linked to this kind of entity. Kind of gigstack entity a document can be linked to.
invoice, payment, receipt, client "invoice"
Filter to documents linked to this specific entity id. Applied after the query.
Response
Documents retrieved. Note the nested shape: the array lives at data.data, with
pagination alongside it inside data.
Standardized success envelope emitted by sendSuccessResponse.
true true
The operation payload.
Show child attributes
Show child attributes
Server time in epoch milliseconds (Luxon.now().toMillis()).
1767225600000
Human-readable summary. Present only when the handler supplies one.
"Operation completed successfully"