API Documentation
The machine-readable interfaces BlackHawk Data publishes, and how to call them.
BlackHawk Data publishes a small set of write-only intake endpoints so that a person — or an agent acting for one — can reach the team without filling in a form by hand. Every endpoint below accepts JSON over POST, needs no authentication, and delivers an enquiry to a human. None of them returns data about anyone, so there is nothing to read back.
Discovery
The homepage advertises these documents in a Link response header (RFC 8288), so an agent can find them from a single request to https://blackhawk11.com without parsing any HTML.
Conventions
- Every endpoint is POST only and expects
Content-Type: application/json. No other method is handled. - Success is
200with{ "success": true }. It means the enquiry was delivered, not that anyone has replied yet. - Failure is
400(a required field was missing) or500(delivery failed), plus413or415where an endpoint lists them, all with{ "error": "..." }. - Fields marked are required. Everything else is optional and may be omitted entirely.
- These are lead-intake endpoints for genuine enquiries. Submissions reach a person, so please do not use them for testing or automated traffic.
Contact & Assessment Request
/api/contactBacks the main contact form and every campaign landing page form. Delivers a notification to the BlackHawk Data team and returns immediately; there is no lead-status resource to poll.
Request Body
| Field | Type | Description |
|---|---|---|
| Work email address for follow-up. | ||
| firstName | string | Given name of the person enquiring. |
| lastName | string | Family name of the person enquiring. |
| organization | string | Company or agency name. |
| assessmentType | string | Assessment being requested, when the enquiry is for one. |
| challenge | string | Free-text description of the problem to solve. |
| hearAbout | string | How the enquirer found BlackHawk Data. |
| phone | string | Contact telephone number. |
| sites | string | Number of sites or locations in scope. |
| title | string | Job title. |
Also accepts the optional campaign attribution fields.
Emergency Incident Response
/api/emergencyFor active outages and security incidents. Routed to the on-call team rather than to sales. Use the published phone number for anything time-critical - this endpoint is asynchronous and returns as soon as the notification is accepted.
Request Body
| Field | Type | Description |
|---|---|---|
| company | string | Affected organization. |
| description | string | What is happening, and what is affected. |
| Email address for follow-up. | ||
| fullName | string | Name of the person reporting the incident. |
| phone | string | Telephone number reachable during the incident. |
Local AI Workload Intake
/api/local-ai-intakeStructured intake behind /local-ai. Captures the workload, its data-residency constraints and the available hardware so the engineering team can size a private AI deployment.
Request Body
| Field | Type | Description |
|---|---|---|
| company | string | Company or agency name. |
| name | string | Name of the person enquiring. |
| workEmail | Work email address. | |
| dataResidency | array<string> | Data-residency constraints that rule out public cloud inference. |
| devices | string | Approximate device count. |
| hardware | array<string> | Hardware already available on site. |
| howOften | string | How often the workload runs. |
| industry | string | Industry sector. |
| itTeamSize | string | Size of the internal IT team. |
| materialPerRun | string | Volume of material processed per run. |
| notes | string | Anything else worth knowing. |
| phone | string | Contact telephone number. |
| pickedIdeas | array<string> | Use-case ideas selected on the page. |
| sites | string | Number of sites in scope. |
| tests | array<string> | Readiness-test answers. |
| testScore | string | Score from the on-page readiness test. |
| timeline | string | Target timeline. |
| title | string | Job title. |
| whoReads | string | Who consumes the output. |
| workload | string | The AI workload to run locally. |
Also accepts the optional campaign attribution fields.
Campaign Lead
/api/campaign-leadBacks the ChatGPT Ads landing pages under /lp/. One endpoint for every campaign form: the email-only request that unlocks a calculator, scorecard or kit download, and the fuller requests for a Network Health Check, an Insight Assessment, the Microsoft 365 license audit, an engineer review or the NOC shadow pilot. `formType` selects which; some types require more than an email (see each type). Delivers a notification to the BlackHawk Data team and returns immediately.
Request Body
| Field | Type | Description |
|---|---|---|
| Email address for follow-up. Personal addresses are accepted. | ||
| formType | string | What is being requested. engineer-review also requires firstName; m365-screenshare, health-check and insight-assessment require firstName and company; shadow-pilot requires firstName, lastName and company. |
| company | string | Company or agency name. |
| details | object | Up to 40 flat key/value pairs describing the tool inputs and results the visitor saw. |
| firstName | string | Given name. |
| lastName | string | Family name. |
| message | string | Free text, up to 2,000 characters. |
| phone | string | Contact telephone number. |
| startedAt | number | When the visitor opened the page, in milliseconds since the epoch. |
| title | string | Job title. |
| variant | string | A/B variant of the landing page. |
| website | string | Must be empty. |
Also accepts the optional campaign attribution fields.
Campaign Attribution
The endpoints marked above additionally accept these fields, all optional and all strings. They exist so the campaign landing pages can record where a lead came from; a direct API caller has no reason to send them.
| Field | Description |
|---|---|
| campaign | Campaign identifier. |
| landingPath | Path of the landing page the form was submitted from. |
| referrer | Referring URL. |
| firstTouch | First-touch attribution value. |
| campaignPath | Campaign path. |
| campaignTouch | Campaign touch value. |
| utmSource | utm_source. |
| utmMedium | utm_medium. |
| utmCampaign | utm_campaign. |
| utmTerm | utm_term. |
| utmContent | utm_content. |
| clickId | Ad-platform click identifier. |
Prefer to talk to someone? The contact page reaches the same team, and the Trust Center covers security and compliance documentation.