Asynchronous Article Updates | LaunchBrightly API Docs
Asynchronous Article Updates
The asynchronous article update API allows you to queue screenshot replacements for one or more help center articles in a single request. Jobs are processed in the background via an SQS-backed queue, and you can poll for completion at any time.
This is the recommended way to sync screenshots with your help center. It replaces the legacy synchronous PUT /helpcenter/article/:id approach, which could not safely handle multiple image updates to the same article in quick succession.
Why asynchronous?
When a user clicks "Accept and Sync" on several rows in rapid succession, each update touches the same article on the help center. Synchronous processing caused race conditions - the second update might overwrite the first, or the help center API might reject concurrent writes. The async queue serializes updates per article, automatically delaying overlapping jobs and retrying them after a short cooldown.
For GitHub/Mintlify integrations, asynchronous processing is required: every commit on a Mintlify-tracked branch triggers a full redeploy, so updates are coalesced into a single pull request instead of individual commits.
Supported platforms
| Platform | Integration platform |
Provider value |
|---|---|---|
| Intercom | helpcenter |
intercom |
| Zendesk | helpcenter |
zendesk |
| Helpjuice | helpcenter |
helpjuice |
| Help Scout | helpcenter |
helpscout |
| Mintlify (via GitHub) | github |
mintlify |
Create article update jobs
POST /helpcenter/article/async
Submits a batch of screenshot replacement jobs. Each job targets a specific article and screenshot. The API validates the request, persists each job to DynamoDB, dispatches messages to the processing queue, and returns immediately with a 202 Accepted.
Request
Headers
| Header | Required | Description |
|---|---|---|
x-api-key |
Yes | Your LaunchBrightly API key |
Content-Type |
Yes | application/json |
Body
{
"integrationId": "d9e45598-d24d-40d8-baf6-33b6185c61b3",
"data": [
{
"articleId": "8444283",
"screenshots": [
{
"name": "settings-page.png",
"metadata": {
"ImageUniqueID": "601eb123-a472-4ffd-ae8c-0f939ae9df3ex"
},
"hash": "4d441888f21eceed2443eef4ba9b4e4d6c198f86904c258d476fed10a6b2e555",
"url": "https://your-bucket.s3.us-east-1.amazonaws.com/your-team/2026-01-15/screenshot-001.png"
}
]
}
]
}
Success Response
{
"articleRequestId": "c3a1f9e2-7b4d-4e8a-9f5c-2d6b8a3e1f7d",
"jobs": [
{
"id": "a1b2c3d4-5e6f-7890-abcd-ef1234567890",
"status": "pending",
"createdAt": "2026-02-11T11:01:50.068Z"
}
]
}
Batch request (multiple articles and screenshots)
You can update multiple screenshots across multiple articles in a single request:
curl --location --request POST 'https://api.launchbrightly.com/helpcenter/article/async' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"integrationId": "d9e45598-d24d-40d8-baf6-33b6185c61b3",
"data": [
{
"articleId": "8444283",
"screenshots": [
{
"metadata": { "ImageUniqueID": "601eb123-a472-4ffd-ae8c-0f939ae9df3ex" },
"hash": "4d441888f21eceed2443eef4ba9b4e4d6c198f86904c258d476fed10a6b2e555",
"url": "https://your-bucket.s3.us-east-1.amazonaws.com/your-team/2026-01-15/screenshot-001.png"
}
]
},
{
"articleId": "8444284",
"screenshots": [
{
"metadata": { "ImageUniqueID": "401qb163-d472-5eed-ae2c-0f931ae2d5fe2" },
"hash": "b6975b10b36df3cc8e41b16a9be8c4f691aa1a2059d3dbcfde31d16fe6d5f65d",
"url": "https://your-bucket.s3.us-east-1.amazonaws.com/your-team/2026-01-15/screenshot-002.png"
}
]
}
]
}'
Error Responses
Validation errors - Code: 422
{
"errors": [
"integrationId is required."
]
}
Missing API key - Code: 403
{
"message": "Missing or invalid authentication token.",
"statusCode": 403,
"error": {
"message": "Missing or invalid authentication token.",
"type": "MISSING_AUTHENTICATION_TOKEN"
}
}
Job lifecycle
A job moves through the following statuses:
pending → processing → completed
→ failed
→ delayed → processing → completed
→ failed
→ delayed → delayed → failed (MaxDelayRetryReached)
| Status | Description |
|---|---|
pending |
Job created and queued for processing. |
processing |
A worker has picked up the job. |
delayed |
Another update for the same article is in flight. The job will auto-retry after ~30 seconds. |
completed |
The screenshot was matched and replaced in the live article. |
failed |
The job could not complete. Check the error field for details. |