openapi: 3.1.0 info: title: Fini AI Agents Articles API version: v2 description: Public REST API for Fini AI, the self-improving AI agent for enterprise customer support. Manage agents, conversations, knowledge (sources, articles, folders), rules, tags, and prompts, and drive the agent loop via Generate Answer. Structure captured by API Evangelist from the published Fini API reference; not an official Fini-published OpenAPI. contact: name: Fini AI url: https://docs.usefini.com/en/api-reference/authentication x-apis-json-generated: true servers: - url: https://api-prod.usefini.com/v2 description: Production security: - bearerAuth: [] tags: - name: Articles paths: /hc-articles/public: post: operationId: createArticle summary: Create a live article or draft article directly in the workspace. tags: - Articles description: Create a live article or draft article directly in the workspace. Requires the `write` scope. externalDocs: url: https://docs.usefini.com/en/api-reference/create-article responses: '200': description: Successful response. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' requestBody: required: true content: application/json: schema: type: object description: See the Fini API reference for the request body schema. get: operationId: listArticles summary: List live articles, draft articles, or both. tags: - Articles description: List live articles, draft articles, or both. Requires the `read` scope. externalDocs: url: https://docs.usefini.com/en/api-reference/list-articles responses: '200': description: Successful response. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' /hc-articles/{id}/draft/public: post: operationId: createArticleDraft summary: Create a draft from an existing live article. tags: - Articles description: Create a draft from an existing live article. Requires the `write` scope. externalDocs: url: https://docs.usefini.com/en/api-reference/create-article-draft responses: '200': description: Successful response. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' '404': $ref: '#/components/responses/NotFound' parameters: - name: id in: path required: true schema: type: string description: The id path parameter. requestBody: required: true content: application/json: schema: type: object description: See the Fini API reference for the request body schema. /hc-articles/{id}/public: delete: operationId: deleteArticle summary: Delete an article. tags: - Articles description: Delete an article. Requires the `write` scope. externalDocs: url: https://docs.usefini.com/en/api-reference/delete-article responses: '200': description: Successful response. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' '404': $ref: '#/components/responses/NotFound' parameters: - name: id in: path required: true schema: type: string description: The id path parameter. put: operationId: updateArticle summary: Update an existing article. tags: - Articles description: Update an existing article. Requires the `write` scope. externalDocs: url: https://docs.usefini.com/en/api-reference/update-article responses: '200': description: Successful response. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' '404': $ref: '#/components/responses/NotFound' parameters: - name: id in: path required: true schema: type: string description: The id path parameter. requestBody: required: true content: application/json: schema: type: object description: See the Fini API reference for the request body schema. /hc-articles/ids/public: post: operationId: getArticlesByIds summary: Fetch one or more articles by ID. tags: - Articles description: Fetch one or more articles by ID. Requires the `read` scope. externalDocs: url: https://docs.usefini.com/en/api-reference/get-articles-by-ids responses: '200': description: Successful response. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' requestBody: required: true content: application/json: schema: type: object description: See the Fini API reference for the request body schema. /hc-articles/{id}/move/public: put: operationId: moveArticle summary: Move an article into a different folder. tags: - Articles description: Move an article into a different folder. Requires the `write` scope. externalDocs: url: https://docs.usefini.com/en/api-reference/move-article responses: '200': description: Successful response. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' '404': $ref: '#/components/responses/NotFound' parameters: - name: id in: path required: true schema: type: string description: The id path parameter. requestBody: required: true content: application/json: schema: type: object description: See the Fini API reference for the request body schema. /hc-articles/{id}/publish/public: post: operationId: publishArticleDraft summary: Publish a draft article. tags: - Articles description: Publish a draft article. Requires the `write` scope. externalDocs: url: https://docs.usefini.com/en/api-reference/publish-article-draft responses: '200': description: Successful response. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' '404': $ref: '#/components/responses/NotFound' parameters: - name: id in: path required: true schema: type: string description: The id path parameter. requestBody: required: true content: application/json: schema: type: object description: See the Fini API reference for the request body schema. components: responses: Forbidden: description: API key lacks the required scope. content: application/json: schema: $ref: '#/components/schemas/Error' example: statusCode: 403 message: API key does not have the required scope for this operation error: Forbidden Unauthorized: description: Missing or invalid API key. content: application/json: schema: $ref: '#/components/schemas/Error' example: statusCode: 401 message: Unauthorized error: Unauthorized ServerError: description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/Error' example: statusCode: 500 message: Internal Server Error error: Internal Server Error NotFound: description: Resource not found. content: application/json: schema: $ref: '#/components/schemas/Error' example: statusCode: 404 message: Not Found error: Not Found schemas: Error: type: object description: Standard Fini error envelope. properties: statusCode: type: integer example: 403 message: type: string example: API key does not have the required scope for this operation error: type: string example: Forbidden securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: fini_ API key description: 'Bearer token containing your Fini workspace API key. Format: `Bearer fini_...`. The key carries `read` and/or `write` scope; write routes require the `write` scope.'