POST /api/hackerone/programs
Price: 1 credit
Get HackerOne (hackerone.com) bug bounty / VDP program details by handle
Get full details of a HackerOne (hackerone.com) program by its handle (or program URL). Returns name, about, website, launched_at, bounty ranges per severity, total bounties paid, response efficiency, SLA times, structured scope counts, policy text, safe-harbor flags, scope exclusions, top researchers, and policy attachments.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)handle string required — Program handle ('security') or program URL ('https://hackerone.com/security'). (examples: "security", "https://hackerone.com/security"; minLength: 1)@type string (default: "HackeroneProgram")id string nullablehandle string requiredname string requiredis_bounty_program boolean nullablestate string nullableurl string requiredabout string nullablewebsite string nullabletwitter_handle string nullableimage string nullablesubmission_state string nullableoffers_bounties boolean nullableoffers_thanks boolean nullablelaunched_at string nullablecurrency string nullablebase_bounty number nullableaverage_bounty_lower_amount number nullableaverage_bounty_upper_amount number nullabletop_bounty_lower_amount number nullabletop_bounty_upper_amount number nullabletotal_bounties_paid number nullablebounties_paid_last_90_days number nullableresolved_report_count integer nullablereports_received_last_90_days integer nullablelast_report_resolved_at string nullableresponse_efficiency_percentage integer nullableresponse_efficiency_indicator string nullableonly_cleared_hackers boolean nullableonly_id_verified_hackers boolean nullableallows_bounty_splitting boolean nullablepublicly_visible_retesting boolean nullablehackers_thanked_count integer nullableassets_in_scope_count integer nullablehas_open_scope boolean nullablepays_within_one_month boolean nullablegold_standard_safe_harbor boolean nullableai_safe_harbor boolean nullabledisclosure_declaration string nullableintroduction string nullablepolicy string nullablelast_policy_change_at string nullablesla object nullable@type string (default: "HackeroneProgramSla")first_response_time number nullabletriage_time number nullablebounty_time number nullableresolution_time number nullableseverity_metrics object nullable@type string (default: "HackeroneSeverityMetrics")average_bounty_low number nullableaverage_bounty_medium number nullableaverage_bounty_high number nullableaverage_bounty_critical number nullablereport_count_low integer nullablereport_count_medium integer nullablereport_count_high integer nullablereport_count_critical integer nullablebounty_rows array (default: [])@type string (default: "HackeroneBountyRow")id string nullableasset_identifier string nullablename string nullableuse_range boolean nullablelow number nullablemedium number nullablehigh number nullablecritical number nullablelow_minimum number nullablemedium_minimum number nullablehigh_minimum number nullablecritical_minimum number nullablescope_exclusions array (default: [])@type string (default: "HackeroneScopeExclusion")id string nullablecategory string nullabledetails string nullablecreated_at string nullabletop_researchers array (default: [])@type string (default: "HackeroneTopResearcher")username string requiredurl string nullableimage string nullablereputation integer nullablecleared boolean nullableidentity_verified boolean nullableattachments array (default: [])@type string (default: "HackeroneAttachment")id string nullablefile_name string nullablefile_size integer nullablecontent_type string nullableurl string nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — Program not found Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.