openapi: 3.2.0 info: title: DeveloperHub.io Changelog API description: API to manage your %product% resources programmatically. Using these APIs, you are able to manage pages, integrate with CI/CD, and retrieve resources among other operations. version: 1.1.0 contact: name: DeveloperHub url: https://docs.developerhub.io/api/ref servers: - url: https://api.developerhub.io/api/v1 variables: {} security: - Api-Key: [] tags: - name: Changelog description: Operations for creating and listing changelog posts. paths: /changelog/{id}/post: post: tags: - Changelog summary: Create a changelog post description: 'Creates a changelog post from Markdoc content, optionally publishing it immediately. The slug is generated from the title if not provided. Permission: `changelog.edit`. Rate limit: 10800 in 1 hour.' operationId: create_changelog_post parameters: - name: id in: path description: Changelog ID required: true schema: type: integer requestBody: required: true content: application/json: schema: type: object description: Changelog post object properties: title: type: string description: Title of the changelog post example: 26 May 2026 content: type: string description: Contents of the post in [Markdoc format](https://docs.developerhub.io/support-center/exporting-documentation#markdoc) example: 'We just shipped **2.0** ## Highlights - Faster search ' slug: type: string description: Slug in the URL. Must match `^[a-zA-Z0-9-]+$`. Generated from the title if not provided example: 26-may-2026 published: type: boolean description: Publish the post immediately default: false required: - title - content responses: '200': description: OK headers: X-RateLimit-Limit: $ref: '#/components/headers/X-RateLimit-Limit' X-RateLimit-Remaining: $ref: '#/components/headers/X-RateLimit-Remaining' X-RateLimit-Reset: $ref: '#/components/headers/X-RateLimit-Reset' content: application/json: schema: $ref: '#/components/schemas/ChangelogPost' '400': description: Client Error content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/AccessDenied' '415': description: Unsupported content-type content: application/json: schema: $ref: '#/components/schemas/UnsupportedContentType' '429': description: Too many requests content: application/json: schema: $ref: '#/components/schemas/TooManyRequests' deprecated: false get: tags: - Changelog summary: List changelog posts description: 'Lists a changelog''s posts, newest first. Returns the 10 most recent posts by default; use `cursor` to page. Permission: `changelog.read`. Rate limit: 600 in 60 seconds.' operationId: list_changelog_posts parameters: - name: id in: path description: Changelog ID required: true schema: type: integer - name: count in: query schema: type: integer default: 10 description: Number of posts to retrieve. Maximum is 50 example: 10 required: false - name: cursor in: query schema: type: string description: Cursor for next page of results example: XAr required: false responses: '200': description: OK headers: X-RateLimit-Limit: $ref: '#/components/headers/X-RateLimit-Limit' X-RateLimit-Remaining: $ref: '#/components/headers/X-RateLimit-Remaining' X-RateLimit-Reset: $ref: '#/components/headers/X-RateLimit-Reset' content: application/json: schema: $ref: '#/components/schemas/ChangelogPostList' '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/AccessDenied' '429': description: Too many requests content: application/json: schema: $ref: '#/components/schemas/TooManyRequests' deprecated: false components: headers: X-RateLimit-Limit: description: Requests permitted until reset time schema: type: integer example: 300 X-RateLimit-Remaining: description: Requests consumed in current period schema: type: integer example: 253 X-RateLimit-Reset: description: Unix timestamp at which requests consumed will reset schema: type: integer example: 1611530395 schemas: AccessDenied: title: AccessDenied type: object properties: error: type: object properties: message: type: string description: Message of the error example: Access Denied httpCode: type: number description: HTTP code returned example: 403 code: type: number description: Internal error code example: 403 ChangelogPost: title: Changelog Post description: Changelog post object required: - id - title - slug - published - content - created - updated type: object properties: id: type: integer description: Unique identifier example: 4821 title: type: string description: Title of the changelog post example: 26 May 2026 slug: type: string description: Slug in the URL example: 26-may-2026 published: type: boolean description: True if the post is published example: true content: type: - string - 'null' description: Contents of the post in Markdoc format. Null if the post has no content. example: We just shipped **2.0** created: type: string description: Date of creation example: 2026-06-02T19:02:14+0000 updated: type: string description: Date of last update example: 2026-06-02T19:02:14+0000 ChangelogPostList: title: Changelog Post List description: Paginated list of changelog posts type: object required: - posts - count - total - cursor properties: posts: type: array items: $ref: '#/components/schemas/ChangelogPost' count: type: integer description: Number of posts retrieved example: 10 total: type: integer description: Total number of posts in the changelog example: 42 cursor: type: - string - 'null' description: Cursor for next page of results. Null value if there are no more results example: XAr Error: title: Error type: object properties: message: type: string description: Message of the error example: No file provided. httpCode: type: number description: HTTP code returned example: 400 code: type: number description: Internal error code example: 400 TooManyRequests: title: TooManyRequests type: object properties: error: type: object properties: message: type: string description: Message of the error example: You exceeded the rate limit httpCode: type: number description: HTTP code returned example: 429 code: type: number description: Internal error code example: 9 UnsupportedContentType: title: UnsupportedContentType type: object properties: error: type: object properties: message: type: string description: Message of the error example: Unsupported content-type 'form'. Supported content-type is 'application/json'. httpCode: type: number description: HTTP code returned example: 415 code: type: number description: Internal error code example: 415 securitySchemes: Api-Key: type: apiKey description: 'Generate an API Key from [DeveloperHub.io platform](https://app.developerhub.io) and provide it in the header such as `--header "X-Api-Key: "` for cURL for all the requests requiring this authentication.' name: X-Api-Key in: header