Start a research report
Starts the same research report the dashboard runs, on a domain you have verified. There is no body: the report is about the domain in the path.
POST
/v1/editions/{slug}/researchParameters
| Param | In | Notes |
|---|---|---|
| slug | path | The domain UUID. Research reads the live web for this domain, so it must be one you have verified in Google Search Console. |
Request
curl -X POST https://api.mastheads.app/v1/editions/3f9c1e84-2b7a-4d6e-9c15-8a0d7e6b4f21/research \
-H "Authorization: Bearer mh_live_your_key_here"Response
202 Accepted
{
"id": "9d41b7c5-0e62-4a39-84d7-15be8c07f2a6",
"status": "running"
}A report is not an article job, so it is not on GET /v1/jobs/{id}. Poll GET /v1/editions/{slug}/research/{report_id} instead. That path answers the report's status while it runs and carries the finished report itself once it is done, and any key of yours can read it - reading a result you have already paid for spends nothing and does not need Full access.
Errors
| Status | Code | When |
|---|---|---|
| 401 | invalid_key | Missing, invalid, or revoked API key. |
| 401 | account_closed | The account this key belongs to has been closed. |
| 402 | plan_required | The account's current plan does not include the content API. This is checked on the request, not only when the key was made. |
| 503 | unavailable | The plan or the data store could not be read. It refuses rather than guessing. |
| 402 | payment_required | A guard behind the door refused on plan or billing grounds. The message says which. |
| 403 | key_read_only | The key was created as Read only. A key's permission is fixed when it is made, so create a new key with Full access. |
| 403 | wrong_newsroom | A full-access key spends only in the newsroom its owner was in when it was created. If that person now acts in a different newsroom, create a new key there. A read-only key is not gated this way. |
| 403 | forbidden | A guard behind the door refused. The message says which. |
| 404 | not_found | No such domain on your account, or the path segment is not a UUID. Another tenant's domain is a 404, never a 403. |
| 422 | invalid_params | The body did not validate: a missing or over-long input, an id that is not a UUID, more than 100 rows, or two rows sharing an id. |
| 429 | rate_limited | Over this key's 20 paid actions an hour, or over its 120 requests/minute. Retry-After: 60, and nothing was started. |
Every request needs a key - Authentication. The error shape and the full status table are on Rate limits & errors.