Liberty91

Reports: list, generate, and download.

Last updated 8 Jul 20262 min read

Reports are where Liberty91's analysis lands for stakeholders, and the API covers the whole production cycle: kick off generation from events, poll until the report is ready, then pull the artifact in the format your workflow needs.

Reading and downloading require reports.read; generation requires reports.generate.

List reports

GET /api/v1/reports/ returns your intelligence reports, cursor-paginated. Filter by organization_id or by status:

curl "https://api.liberty91.com/api/v1/reports/?status=DRAFT" \
  -H "X-API-Key: $LIBERTY91_API_KEY"

Report status is one of GENERATING, DRAFT, STAGED, SENT, or FAILED.

Report detail

GET /api/v1/reports/{id}/ returns the report's metadata: kind, status, title, summary, the organization it belongs to, and the list of available artifacts. This is also the endpoint you poll during generation.

Generate a report

POST /api/v1/reports/generate/ produces reports from events you name, tailored to one or more of your organizations:

curl -X POST "https://api.liberty91.com/api/v1/reports/generate/" \
  -H "X-API-Key: $LIBERTY91_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "event_instance_ids": ["a1b2c3d4-...", "e5f6a7b8-..."],
    "organization_ids": ["11111111-...", "22222222-..."],
    "chapters": ["executive_summary", "analysis", "recommendations"],
    "intelligence_requirement": "Ransomware targeting European manufacturing"
  }'

The chapters array controls the report structure, and intelligence_requirement anchors the analysis to the topic that matters for the reader, the same way Intelligence Requirements ground reporting in the platform.

The response is 202 Accepted with one report per organization:

{ "report_ids": ["33333333-...", "44444444-..."] }

Generation costs 50 credits per organization in the request. Two organizations in one call means two tailored reports and 100 credits.

Poll and download

  1. For each returned ID, poll GET /api/v1/reports/{id}/ until status leaves GENERATING. A ready report shows DRAFT, STAGED, or SENT; a failed one shows FAILED.
  2. Download the artifact in the format you need: GET /api/v1/reports/{id}/download/?type=pdf (also md, csv, or stix).

Generation is doing real analytical work, so expect minutes rather than seconds, and poll on a relaxed interval. Each status poll costs 2 credits and a download costs 5.

Tip

Pair this with event ingest: push a vendor report in, wait for enrichment to complete, then generate an organization-tailored report from it. That is a full intelligence production pipeline in three API calls.

Frequently asked questions

Can I generate Liberty91 reports programmatically?

Yes. POST event instance IDs and organization IDs to /api/v1/reports/generate/ and the platform produces a tailored report per organization. Poll each report's status, then download the artifacts.

What formats can I download a report in?

PDF, Markdown, CSV, and STIX, selected with the type parameter on the download endpoint.

How much does report generation cost in credits?

50 credits per organization in the request, because each organization gets its own tailored report. Listing, polling, and downloading are priced separately at 1, 2, and 5 credits.

Was this page helpful?