Skip to main content

API Access

The Report Forge API allows external systems to read edition data, trigger output generation, and push data into editions programmatically. This page covers API key management, authentication, rate limits, and when to use the API vs. built-in sync integrations.

Access: Workspace SettingsAPI Access (Workspace Admin only).


API key management

Generating an API key

  1. Go to Workspace SettingsAPI Access+ New API key.
  2. Configure:
FieldDescription
Key nameDescriptive label — shown in logs and the key list
ScopeThe set of permissions this key grants (see scopes below)
ExpiryOptional expiry date — keys without expiry are valid until revoked
Project restrictionOptionally restrict the key to specific projects
  1. Click Generate key.
  2. Copy the key immediately — the full key value is only shown once. It cannot be retrieved after leaving this screen.
  3. Store the key in a secrets manager (AWS Secrets Manager, Azure Key Vault, HashiCorp Vault, or equivalent).

API key scopes

ScopeWhat the key can do
read:editionsRead edition data, section data, and field values
write:editionsCreate editions, update field values, submit editions
read:blueprintsRead blueprint structure and field definitions
read:outputsRead output metadata and download generated outputs
write:outputsTrigger output generation
read:workspaceRead workspace members, projects, and settings
adminFull access — all read and write operations (use with caution)

Grant the minimum scope required. Most integration use cases require only read:editions or read:editions + write:editions.

Rotating an API key

Rotate keys regularly (at least annually) or whenever a key may have been exposed:

  1. Generate a new key with the same scope.
  2. Update the key in all consuming systems.
  3. Verify integrations work with the new key.
  4. Revoke the old key.

Revoking an API key

  1. Go to Workspace SettingsAPI Access.
  2. Find the key in the list → click Revoke.
  3. The key is immediately invalidated — all requests using it will receive 401 Unauthorized.

Authentication

All API requests must include the API key in the Authorization header:

Authorization: Bearer YOUR_API_KEY

Example (curl):

curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.kazinex.com/report-forge/v1/editions

Example (Python):

import requests

headers = {"Authorization": f"Bearer {api_key}"}
response = requests.get(
"https://api.kazinex.com/report-forge/v1/editions",
headers=headers
)

API requests over HTTP (not HTTPS) are rejected. All API traffic must use TLS.


Common API endpoints

EndpointMethodScopeDescription
/v1/projectsGETread:workspaceList all accessible projects
/v1/projects/{id}/blueprintsGETread:blueprintsList blueprints in a project
/v1/blueprints/{id}/editionsGETread:editionsList editions for a blueprint
/v1/editions/{id}GETread:editionsGet a specific edition
/v1/editions/{id}/sections/{name}GETread:editionsGet all data for a section
/v1/editions/{id}/sections/{name}/rowsGETread:editionsGet all rows of a repeating section
/v1/editionsPOSTwrite:editionsCreate a new edition
/v1/editions/{id}/submitPOSTwrite:editionsSubmit an edition for review
/v1/outputs/{id}/generatePOSTwrite:outputsTrigger output generation
/v1/outputs/{id}/downloadGETread:outputsDownload a generated output file

Full endpoint documentation is available in the API Reference (Workspace Admin link only).


Rate limits

LimitValue
Requests per minute60 per API key
Requests per hour1,000 per API key
Maximum response size10 MB
Maximum payload size (POST/PUT)5 MB
Concurrent connections5 per API key

Rate limit headers are included in every response:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1716345600

When the rate limit is exceeded, the API returns 429 Too Many Requests. Implement exponential backoff in your integration.


API vs. sync vs. manual entry

Choosing the right integration method:

MethodBest forLatencySetup effort
API (read)BI tool integration, external dashboards, downstream data pipelinesSecondsModerate
API (write)Pushing data from external systems (ERP, finance, scheduling) into editionsSecondsHigh
SharePoint syncSyncing a blueprint section with a SharePoint list on a scheduleMinutesLow
Planner integrationPulling schedule data from Kazinex Planner into blueprint fieldsReal-timeLow
Excel import (paste)Ad hoc bulk import of repeating section data from a spreadsheetManualNone
Manual entryRegular contributor data entry via the edition form/gridManualNone

Use API when:

  • You need sub-minute freshness (API responds in seconds).
  • The source system can make HTTP requests (ERP, finance platform, scheduling tool).
  • You need to write data to Report Forge from an external system automatically.
  • You are building a custom integration not covered by built-in sync options.

Use SharePoint sync when:

  • Your data lives in a SharePoint list and you don't need real-time sync.
  • Setup simplicity is more important than control.

Webhook notifications for API integrations

Rather than polling the API for edition status changes, subscribe to webhook events:

EventWebhook payload includes
edition.submittedEdition ID, blueprint ID, project ID, timestamp
edition.approvedEdition ID, approving user, timestamp
edition.changes_requestedEdition ID, comment count, timestamp
output.generatedEdition ID, output ID, format, download URL

See the Kazinex Webhooks documentation for webhook configuration.


Security best practices

  1. Never hardcode API keys in source code, config files, or scripts. Use environment variables or secrets managers.
  2. Rotate keys regularly — annually at minimum, or immediately after any suspected exposure.
  3. Grant minimum scope — use read:editions unless write access is actually needed.
  4. Restrict by project — if an integration only needs one project, restrict the key to that project.
  5. Monitor API usage — review the audit log for unusual API call patterns (high volume, unexpected hours, unknown IP addresses).
  6. Set key expiry — use expiry dates for time-limited integrations (e.g. a contractor integration that ends when the project closes).

What's next