canonical: https://jentic.com/apis/hackerone.com/hackerone

# HackerOne API

Jentic publishes the only available OpenAPI specification for HackerOne API, keeping it validated and agent-ready. HackerOne is a leading bug bounty and vulnerability coordination platform used by enterprises, governments, and open-source projects. The API exposes operations to manage vulnerability reports, programs, structured scopes, weaknesses, bounties, swag awards, payment transactions, credentials, and incremental activity feeds. Security teams use it to triage incoming reports, automate severity updates, award bounties, and pull data into SIEM, ticketing, or analytics pipelines.

## For AI agents

Triage HackerOne reports, change report state, update severity, award bounties, and pull program scope and activity feeds for vulnerability coordination workflows.

## Scope

Does not handle automated vulnerability scanning, code analysis, or internal asset discovery - use for HackerOne report triage, program management, and bounty workflows only.

## Capabilities

- List and filter vulnerability reports across one or more bug bounty programs
- Change a report's state, severity, title, or weakness classification during triage
- Award bounties or mark swag as sent on a specific report
- Read and update structured scopes that define what is in and out of bounty
- Pull payment transactions for accounting reconciliation across programs
- Stream incremental activities for near-real-time event processing
- Manage program credentials and revoke compromised credential records

## Use cases

### Automated Triage Agent

Build a security agent that polls /reports for new submissions, classifies each by reading title and vulnerability_information, sets a draft severity via `/reports/{id}/update_severity`, and routes the report to the right engineer in a ticketing system. The agent handles obvious duplicates and low-severity noise so human triagers focus on real issues. HackerOne handles researcher comms, scope enforcement, and bounty disbursement.

Example prompt: List reports with state 'new' for program 'acme', read each report's content, set severity to 'high' on any matching SQL injection patterns, and create matching Jira tickets.

### Bounty Reconciliation

Reconcile bounties paid on HackerOne with the finance ledger by pulling `/programs/{id}/payment_transactions` monthly. The agent groups transactions by program, currency, and researcher, exports a CSV, and posts a summary to the security finance channel. This eliminates manual spreadsheet work for security operations teams.

Example prompt: GET `/programs/acme/payment_transactions` filtered by the previous calendar month and emit a CSV with researcher handle, amount, currency, and report id.

### Scope Drift Detection

Continuously compare a program's structured scopes against the company's external attack surface (subdomains, hosts) and alert when production assets are out of bounty scope. The agent pulls `/programs/{id}/structured_scopes` weekly, diffs against an internal asset inventory, and posts gaps to a security review board.

Example prompt: GET `/programs/acme/structured_scopes`, compare each asset_identifier against the asset inventory, and report any production asset missing from the in-scope list.

### Activity Stream to SIEM

Pipe HackerOne activity into a SIEM by polling `/incremental/activities` every minute and forwarding each event as a structured log. Security operations teams correlate bounty-disclosed vulnerabilities with internal detections and incident timelines. The incremental endpoint supports cursor-based pagination so no events are dropped.

Example prompt: Poll `/incremental/activities` with the last seen cursor, forward each event to the SIEM ingest endpoint, and persist the new cursor for next call.

### Agent Discovery Through Jentic

Security agents discover HackerOne operations by searching Jentic with intents like 'list new vulnerability reports' or 'award a bounty'. Jentic returns the operation with input schema and the agent executes the call. Credentials live encrypted in your Jentic One instance.

Example prompt: Use Jentic search 'list new vulnerability reports' to find GET /reports filtered by state=new, then execute and return the report ids.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/reports` | List vulnerability reports with filters |
| GET | `/reports/{id}` | Fetch a single report by id |
| POST | `/reports/{id}/change_state` | Change a report's workflow state |
| POST | `/reports/{id}/update_severity` | Update a report's severity |
| POST | `/reports/{id}/award_bounty` | Award a bounty on a report |
| GET | `/programs/{id}/structured_scopes` | List the in-scope assets for a program |
| GET | `/incremental/activities` | Stream incremental activity events |

## Key resources

- **Reports** — List, fetch, and update vulnerability reports including state, severity, title, weakness, and comments
- **Programs** — List and inspect bug bounty programs and their reports, scopes, weaknesses, and payments
- **Structured scopes** — Read and manage in-scope assets that define what researchers may test
- **Bounties and swag** — Award bounties on reports and mark swag items as sent
- **Activities** — Stream incremental activities for SIEM and ticketing integrations
- **Credentials** — Issue and revoke program credentials granted to authorised researchers

## Why Jentic

- **Setup:** Wiring the HackerOne API by hand means combining your API username and token into a Basic auth header on every call and building each report and program request yourself. Through Jentic you install once, import the HackerOne API from the API Directory, store the username and token once, and your agent calls it.
- **Permission scoping:** HackerOne puts the report id in the URL path (`/reports/{id}/change_state`), so a rule can pin your agent to one report: it can read and update that report and nothing else. You choose the operations it may call, so state-changing ones like awarding a bounty or changing severity are not included unless you add them.
- **Credential handling:** Your HackerOne API username and token are stored once, encrypted, by your own Jentic One instance and combined into the Basic auth header at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list new vulnerability reports' or 'change a report state', and Jentic returns the matching HackerOne operation with its input schema so the agent calls the right endpoint without browsing api-docs.hackerone.com.

## Related APIs

- **Snyk API** — Pair internal SCA scanning with externally reported HackerOne vulnerabilities.
- **GitHub API** — Open GitHub security advisories and issues from HackerOne reports.
- **PagerDuty API** — Page on-call security engineers when a critical HackerOne report lands.

## FAQ

### Why is there no official OpenAPI spec for HackerOne API?

HackerOne does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call HackerOne API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the HackerOne API use?

HackerOne uses HTTP Basic auth with the API username (typically the program handle) and an API token generated from the HackerOne settings. Through Jentic, both values are stored encrypted in the vault and injected at execution time so the token never enters the agent's prompt context.

### Can I change the severity of a report through the API?

Yes. POST `/reports/{id}/update_severity` sets the severity (none, low, medium, high, or critical) along with optional CVSS vector and rating. The endpoint enforces program permissions so only program members can update severity.

### How do I award a bounty on a report?

POST `/reports/{id}/award_bounty` with the amount and currency. The endpoint records the bounty against the report, deducts from the program's bounty balance, and triggers payout per the program's configured payment cadence.

### How do I stream new HackerOne activity into a SIEM through Jentic?

Search Jentic for 'incremental activities' to find GET `/incremental/activities.` Execute it with the last seen cursor, forward the events into your SIEM, and store the returned cursor for the next call. Run pip install jentic to get started.

### What are the rate limits for the HackerOne API?

HackerOne enforces per-token rate limits and returns 429 with a Retry-After header when exceeded. The exact ceiling depends on the program's API plan; agents should respect 429 responses, back off, and avoid tight polling on /reports for active programs.

### Can I read structured scopes for a program?

Yes. GET `/programs/{id}/structured_scopes` returns each in-scope asset with its identifier, asset_type, eligible_for_bounty, eligible_for_submission, max_severity, and instruction. Use this to validate that a researcher's submission targets an in-scope asset before triage.

### Can I limit what my agent is allowed to do with the HackerOne API?

Yes. Because Jentic One is self-hosted, your own rules decide which HackerOne operations and credentials the agent may use. HackerOne puts the report id in the URL path, such as `/reports/{id}/change_state`, so a rule can pin the agent to a single report where it can read and update only that report. You also choose the operations it may call, so state-changing ones like `/reports/{id}/award_bounty` and `/reports/{id}/update_severity` stay out of reach unless you add them.
