Help Center API: setup, activation and integration guide
Choose the right integration, create and protect a project key, read and search published help articles, and manage languages, caching and troubleshooting.
Bring your published knowledge into a custom support experience, an app backend or a knowledge-sync workflow. Maintain articles in Releaseo and read them through a project-scoped API instead of copying content by hand.
Choose the right integration
Choose the Help Center API when your own server needs published folders and articles for a custom application or a knowledge sync. Choose the Releaseo widget for ready-made help inside your product, or the hosted public site for a complete help portal.
The API is read-only. It cannot create or edit articles, read editorial drafts, access customer identities or manage API keys. An SDK publish key is not a Help Center API credential.
1. Prepare and publish your content
Select the correct project in the dashboard. In Help center, create a folder and an article, review the content and publish it. Articles must be published and unarchived; their folder and all parent folders must be visible. Hidden folders and drafts do not appear in API results.
For translated content, enable the relevant language and publish its translation. Keep translations aligned with the source article. The API returns eligible published translations and falls back to the source language when necessary.
2. Open API & integrations
From Help center, open API & integrations. Check the selected project and connection details. The page shows the base URL, API documentation and the fixed help_center:read scope.
An account with Help Center read access can view key metadata. Creating, renaming, rotating or revoking keys also requires permission to update the project. If a management control is unavailable, ask your workspace owner to review project permissions.
There is no separate switch to activate each issued key. A valid key authenticates requests for its project until it expires, is revoked or completes its rotation grace period. If the API reports temporary unavailability, contact Releaseo support; creating extra keys does not fix service availability.
3. Create and store a key
Choose Create API key, give the integration a recognizable name and choose an expiry if needed. Copy the secret when displayed: it is shown only once. Store it in your server secret manager or environment settings as RELEASEO_API_KEY.
Create a separate key for each integration so you can revoke one independently. Keep secrets out of browser bundles, mobile app packages, public repositories, screenshots and logs. Your browser should call your own backend, which adds the Releaseo credential on the server.
A lost secret cannot be recovered from the list. Revoke the unused key and issue a replacement. Never share a real key in a support ticket.
4. Make your first request
The hosted resource base URL is https://api.releaseo.io/api/v1/help-center. Requests use HTTPS and a Bearer credential. The key selects its project automatically; no project ID is required in resource URLs.
Set RELEASEO_API_KEY using your server secret-management tooling, then run:
curl --fail-with-body 'https://api.releaseo.io/api/v1/help-center' \
-H "Authorization: Bearer $RELEASEO_API_KEY"
This returns project information, source and enabled languages, and the credential scope. Next, retrieve articles:
curl --fail-with-body 'https://api.releaseo.io/api/v1/help-center/articles?limit=25' \
-H "Authorization: Bearer $RELEASEO_API_KEY"
Interactive API reference
Open the official Help Center API interactive documentation for endpoint details, request parameters and complete response schemas. This is the API reference linked from API & integrations.
You can also download the OpenAPI specification for development tools, and follow the website integration guide. The documentation URL is a reference page; send application requests to the resource base URL shown above.
Read folders and article details
Request | Purpose |
|---|---|
| Discover project, languages and scope. |
| Read active folders with visible ancestors. |
| List or search published article summaries. |
| Retrieve sanitized HTML and plain text. |
Use an article ID returned by the list when requesting a detail. A publicUrl may be null when an enabled, published public site is unavailable; your integration can still use the returned content.
Search, folders and languages
curl --fail-with-body --get 'https://api.releaseo.io/api/v1/help-center/articles' \
-H "Authorization: Bearer $RELEASEO_API_KEY" \
--data-urlencode 'q=installation' \
--data-urlencode 'locale=fr-CA' \
--data-urlencode 'limit=25'
q performs a case-insensitive literal substring search, up to 256 characters. Add folderId to restrict results to a folder. limit accepts 1–100 and defaults to 25.
locale accepts a supported-format language tag, not a fixed language list. Resolution tries an enabled exact locale, an enabled base locale, then the source language. Inspect each article’s locale for the actual language and meta.requestedLocale for the requested language. Folder labels remain in the source language.
Pagination and synchronization
Follow pagination.nextCursor while pagination.hasMore is true. Keep query, folder and locale unchanged during traversal. Treat cursors as opaque; do not edit them or reuse them for a different project or filter.
A scan is not a frozen snapshot. Reconcile removed IDs only after a complete successful scan, and repeat after concurrent content changes. Deleting or unpublishing content in Releaseo does not automatically erase copies saved by your integration. API reads do not count as article views.
Server-side JavaScript example
const apiKey = process.env.RELEASEO_API_KEY;
if (!apiKey) throw new Error('Configure RELEASEO_API_KEY on the server');
const url = new URL('https://api.releaseo.io/api/v1/help-center/articles');
url.searchParams.set('limit', '25');
const response = await fetch(url, {
headers: { Authorization: `Bearer ${apiKey}` },
signal: AbortSignal.timeout(15000),
});
if (!response.ok) {
throw new Error(`Releaseo Help Center API returned ${response.status}`);
}
const page = await response.json();
// Process the documented data and pagination fields on your server.
For scheduled synchronization, add bounded retries for temporary failures, honor Retry-After on 429 and keep credentials and response bodies out of error logs.
Manage and rotate credentials
Use the dashboard key list to rename, rotate or revoke a credential. Renaming changes its label, not the secret or project scope. Rotation issues a replacement secret; update your integration’s stored value and verify requests.
For planned rotation, a 24-hour grace period lets you update the integration before the old credential stops working. Choose immediate replacement for an exposed credential. Rotation preserves the original expiry; it does not extend the key’s lifetime. Revocation stops a credential immediately.
A project supports at most 50 unexpired, unrevoked credentials, including retiring keys. Revoke unused keys or choose immediate rotation at that limit. If a key-creation response is lost, inspect metadata and revoke the unused credential before creating another; do not automatically retry issuance requests.
Caching and freshness
Successful reads can reuse cached content for up to 300 seconds. Article, folder, language and published-translation changes invalidate the relevant cached generation automatically. Authentication and current project access are checked even on cache hits.
In API & integrations → API response cache, review availability and the last manual clear. Clear API cache invalidates this project’s API response cache after confirmation. It does not delete articles, keys or copies stored by integrations. Clearing requires Help Center read and project-update permissions.
X-Releaseo-Cache reports HIT, MISS, COALESCED or BYPASS. Large responses may bypass caching. If response caching is unavailable, reads can fall back to current database content; authentication or rate-limit infrastructure failures can still return 503.
Responses support ETags. Revalidate with If-None-Match; handle 304 without parsing an empty body. Isolate cached representations by credential/project. Responses use Vary: Authorization and private, no-cache.
Limits and troubleshooting
Each key allows 100 requests per minute and 1,000 per hour. Shared project limits are 500 per minute and 5,000 per hour across keys. Additional keys do not bypass project limits.
Result | What to check |
|---|---|
401 | Bearer header, expiry, revocation and completed rotation grace period. Use an API key, not an SDK key. |
403 in the dashboard | Ask the owner to review project permissions and availability. |
404 for an article | Article ID, project, publication/archive state and folder visibility. |
429 | Honor |
503 | Retry reads with bounded exponential backoff. For persistent failures, contact support with request ID and time. |
Empty results or unexpected language | Check publication, visible folders, enabled languages, published translations and filters. |
When reporting a problem, share the request ID, route and timestamp. Never include your Authorization header or secret. OAuth, write access, deletion webhooks and packaged third-party connectors are not part of this read-only API.
Was this article helpful?
Still stuck? Contact us and mention this article.