# Knowledge Base

## Get all knowledge bases

> Returns all knowledge bases for the organization.\
> \
> \*\*Rate limit:\*\* 60 requests per minute

```json
{"openapi":"3.0.1","info":{"title":"Pylon API.","version":"1.0.0"},"servers":[{"url":"https://api.usepylon.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"description":"Authorization: Bearer <token>","scheme":"bearer","type":"http"}},"schemas":{"GetKnowledgeBasesResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/KnowledgeBase"},"type":"array"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"},"KnowledgeBase":{"properties":{"default_language":{"description":"The default language of the knowledge base.","type":"string"},"id":{"description":"The ID of the knowledge base.","type":"string"},"slug":{"description":"The slug of the knowledge base.","type":"string"},"supported_languages":{"description":"The list of supported languages for the knowledge base.","items":{"type":"string"},"type":"array"},"title":{"description":"The name of the knowledge base.","type":"string"}},"type":"object"},"Pagination":{"properties":{"cursor":{"description":"The cursor for the next page of results.","type":"string"},"has_next_page":{"description":"Indicates if there is a next page of results.","type":"boolean"}},"required":["cursor","has_next_page"],"type":"object"},"ErrorApiResponseBody":{"properties":{"errors":{"description":"The list of errors.","items":{"type":"string"},"type":"array"},"exists_id":{"description":"The ID of the object that already exists if this is a duplicate object error.","type":"string"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"}}},"paths":{"/knowledge-bases":{"get":{"description":"Returns all knowledge bases for the organization.\n\n**Rate limit:** 60 requests per minute","operationId":"GetKnowledgeBases","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetKnowledgeBasesResponseBody"}}},"description":""},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""}},"summary":"Get all knowledge bases","tags":["knowledge-bases"]}}}}
```

{% openapi src="<https://static.usepylon.com/openapi.json>" path="/knowledge-bases/{id}" method="get" %}
<https://static.usepylon.com/openapi.json>
{% endopenapi %}

{% openapi src="<https://static.usepylon.com/openapi.json>" path="/knowledge-bases/{id}/collections" method="get" %}
<https://static.usepylon.com/openapi.json>
{% endopenapi %}

{% openapi src="<https://static.usepylon.com/openapi.json>" path="/knowledge-bases/{id}/collections" method="post" %}
<https://static.usepylon.com/openapi.json>
{% endopenapi %}

## Delete a collection

> Permanently deletes a collection and all articles within it from the knowledge base. Nested collections and their articles are also deleted.\
> \
> \*\*Rate limit:\*\* 10 requests per minute

```json
{"openapi":"3.0.1","info":{"title":"Pylon API.","version":"1.0.0"},"servers":[{"url":"https://api.usepylon.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"description":"Authorization: Bearer <token>","scheme":"bearer","type":"http"}},"schemas":{"DeleteCollectionResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"},"ErrorApiResponseBody":{"properties":{"errors":{"description":"The list of errors.","items":{"type":"string"},"type":"array"},"exists_id":{"description":"The ID of the object that already exists if this is a duplicate object error.","type":"string"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"}}},"paths":{"/knowledge-bases/{id}/collections/{collection_id}":{"delete":{"description":"Permanently deletes a collection and all articles within it from the knowledge base. Nested collections and their articles are also deleted.\n\n**Rate limit:** 10 requests per minute","operationId":"DeleteCollection","parameters":[{"description":"The ID of the knowledge base that the collection belongs to.","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"The ID of the collection to delete.","in":"path","name":"collection_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteCollectionResponseBody"}}},"description":""},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""}},"summary":"Delete a collection","tags":["collections"]}}}}
```

## Get all articles in a knowledge base

> Returns a paginated list of articles for the specified knowledge base.\
> \
> \*\*Rate limit:\*\* 20 requests per minute

```json
{"openapi":"3.0.1","info":{"title":"Pylon API.","version":"1.0.0"},"servers":[{"url":"https://api.usepylon.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"description":"Authorization: Bearer <token>","scheme":"bearer","type":"http"}},"schemas":{"GetArticlesResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Article"},"type":"array"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"},"Article":{"properties":{"author_user_id":{"description":"The ID of the user who authored the article.","type":"string"},"collection_id":{"description":"The ID of the collection this article belongs to, if any.","type":"string"},"current_draft_content_html":{"description":"The current draft content of the article in HTML. This is the latest version, which may differ from the published version.","type":"string"},"current_published_content_html":{"description":"The current published content of the article in HTML.","type":"string"},"id":{"description":"The ID of the article.","type":"string"},"identifier":{"description":"The identifier of the article","type":"string"},"is_published":{"description":"IsPublished indicates if the article is published.","type":"boolean"},"is_unlisted":{"description":"Whether the article can only be accessible only via direct link.","type":"boolean"},"last_published_at":{"description":"The last published at time of the article.","type":"string"},"slug":{"description":"The slug of the article.","type":"string"},"title":{"description":"The name of the article.","type":"string"},"url":{"description":"The URL of the article.","type":"string"},"visibility_config":{"$ref":"#/components/schemas/VisibilityConfig"}},"type":"object"},"VisibilityConfig":{"properties":{"ai_agent_access":{"description":"AI agent access control for the article. Defaults to inherit from the parent scope when omitted.\n\n`inherit`: Defers the access check to the parent object (Collection or KnowledgeBase).\n\n`none`: No AI agents have access to this article.\n\n`specific_agents`: Only specific AI agents enumerated in the allowlist have access.","enum":["inherit","none","specific_agents"],"type":"string"},"allowed_agent_ids":{"description":"List of AI agent IDs that may access this article when ai_agent_access is set to \"specific_agents\".","items":{"type":"string"},"type":"array"},"customer_visibility_condition":{"$ref":"#/components/schemas/Filter"},"visibility":{"description":"The visibility setting of the article.","enum":["public","customer","internal_only"],"type":"string"}},"type":"object"},"Filter":{"properties":{"field":{"description":"The field for this filter.  For allowed fields, see the documentation for\n\nthe specific endpoint you are using.\n\nFor non-compound filters (any operators other than \"and\" or \"or\"),\n\nField must be set, along with either Value or Values, depending on the operator.","type":"string"},"operator":{"description":"The operator for this filter.\n\n`equals`: Matches objects that are exactly equal to the value in the field.\n\n`not_equals`: Matches objects that are not exactly equal to the value in the field.\n\n`contains`: For a multi-valued field, such as tags, this operator will match  objects that contain any of the values in the field.\n\n`does_not_contain`: For a multi-valued field, such as tags, this operator will match  objects that do not contain any of the values in the field.\n\n`in`: Matches objects if the field is one of several possible values,  as specified in the values array.\n\n`not_in`: Matches objects if the field is none of several possible values,  as specified in the values array.\n\n`and`: Matches objects only if all subfilters match.\n\n`or`: Matches objects if any subfilter matches.\n\n`time_is_after`: Matches objects if the field is after the given time.\n\n`time_is_before`: Matches objects if the field is before the given time.\n\n`time_range`: Matches objects if the field is between the given times.\n\n`string_contains`: Matches objects if the field contains the given string.\n\n`string_does_not_contain`: Matches objects if the field does not contain the given string.\n\n`is_set`: Matches objects if the field is set.\n\n`is_unset`: Matches objects if the field is unset.\n\n`greater_than`: Matches objects if the numeric field is greater than the given value.\n\n`less_than`: Matches objects if the numeric field is less than the given value.\n\n`greater_than_or_equals`: Matches objects if the numeric field is greater than or equal to the given value.\n\n`less_than_or_equals`: Matches objects if the numeric field is less than or equal to the given value.","enum":["equals","not_equals","contains","does_not_contain","in","not_in","and","or","time_is_after","time_is_before","time_range","string_contains","string_does_not_contain","is_set","is_unset","greater_than","less_than","greater_than_or_equals","less_than_or_equals"],"type":"string"},"subfilters":{"description":"Sub-filters for this filter.  Valid only when operator is \"and\" or \"or\".\n\nThe maximum allowed depth for a tree of filters is 3.","items":{"$ref":"#/components/schemas/Filter"},"type":"array"},"value":{"description":"The value for this filter. Only used for single-valued operators\n\n(\"equals\", \"not_equals\", \"contains\", \"does_not_contain\")","type":"string"},"values":{"description":"The values for this filter. Only used for multi-valued operators (\"in\", \"not_in\").","items":{"type":"string"},"type":"array"}},"required":["field","operator"],"type":"object"},"Pagination":{"properties":{"cursor":{"description":"The cursor for the next page of results.","type":"string"},"has_next_page":{"description":"Indicates if there is a next page of results.","type":"boolean"}},"required":["cursor","has_next_page"],"type":"object"},"ErrorApiResponseBody":{"properties":{"errors":{"description":"The list of errors.","items":{"type":"string"},"type":"array"},"exists_id":{"description":"The ID of the object that already exists if this is a duplicate object error.","type":"string"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"}}},"paths":{"/knowledge-bases/{id}/articles":{"get":{"description":"Returns a paginated list of articles for the specified knowledge base.\n\n**Rate limit:** 20 requests per minute","operationId":"GetArticles","parameters":[{"description":"The ID of the knowledge base the articles are being fetched from.","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"The cursor to use for pagination.","in":"query","name":"cursor","schema":{"type":"string"}},{"description":"The number of articles to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","in":"query","name":"limit","schema":{"format":"int64","type":"integer"}},{"description":"The language code to fetch articles in. If not provided, returns the default language.","in":"query","name":"language","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetArticlesResponseBody"}}},"description":""},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""}},"summary":"Get all articles in a knowledge base","tags":["articles"]}}}}
```

## Create an article

> Creates a new article within a knowledge base.\
> \
> \*\*Rate limit:\*\* 10 requests per minute

```json
{"openapi":"3.0.1","info":{"title":"Pylon API.","version":"1.0.0"},"servers":[{"url":"https://api.usepylon.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"description":"Authorization: Bearer <token>","scheme":"bearer","type":"http"}},"schemas":{"CreateArticleRequestBody":{"properties":{"author_user_id":{"description":"The ID of the user attributed as the author of the article.","type":"string"},"body_html":{"description":"The HTML body of the article.","type":"string"},"collection_id":{"description":"The id of the collection associated to the article","type":"string"},"is_published":{"description":"Whether the article should be published. Defaults to false.","type":"boolean"},"is_unlisted":{"description":"Whether the article can only be accessible only via direct link. Defaults to false.","type":"boolean"},"slug":{"description":"The slug of the article. Defaults to a slug based on the title.","type":"string"},"title":{"description":"The title of the article.","type":"string"},"translations":{"description":"Translations of the article content in different languages","items":{"$ref":"#/components/schemas/ArticleTranslationInput"},"type":"array"},"visibility_config":{"$ref":"#/components/schemas/VisibilityConfig"}},"required":["author_user_id","body_html","title"],"type":"object"},"ArticleTranslationInput":{"properties":{"body_html":{"description":"The translated HTML body of the article.","type":"string"},"language":{"description":"The language code of the translation. Supported language codes can be found in https://docs.usepylon.com/pylon-docs/knowledge-base/translation#supported-language-codes.","type":"string"},"title":{"description":"The translated title of the article.","type":"string"}},"required":["body_html","language","title"],"type":"object"},"VisibilityConfig":{"properties":{"ai_agent_access":{"description":"AI agent access control for the article. Defaults to inherit from the parent scope when omitted.\n\n`inherit`: Defers the access check to the parent object (Collection or KnowledgeBase).\n\n`none`: No AI agents have access to this article.\n\n`specific_agents`: Only specific AI agents enumerated in the allowlist have access.","enum":["inherit","none","specific_agents"],"type":"string"},"allowed_agent_ids":{"description":"List of AI agent IDs that may access this article when ai_agent_access is set to \"specific_agents\".","items":{"type":"string"},"type":"array"},"customer_visibility_condition":{"$ref":"#/components/schemas/Filter"},"visibility":{"description":"The visibility setting of the article.","enum":["public","customer","internal_only"],"type":"string"}},"type":"object"},"Filter":{"properties":{"field":{"description":"The field for this filter.  For allowed fields, see the documentation for\n\nthe specific endpoint you are using.\n\nFor non-compound filters (any operators other than \"and\" or \"or\"),\n\nField must be set, along with either Value or Values, depending on the operator.","type":"string"},"operator":{"description":"The operator for this filter.\n\n`equals`: Matches objects that are exactly equal to the value in the field.\n\n`not_equals`: Matches objects that are not exactly equal to the value in the field.\n\n`contains`: For a multi-valued field, such as tags, this operator will match  objects that contain any of the values in the field.\n\n`does_not_contain`: For a multi-valued field, such as tags, this operator will match  objects that do not contain any of the values in the field.\n\n`in`: Matches objects if the field is one of several possible values,  as specified in the values array.\n\n`not_in`: Matches objects if the field is none of several possible values,  as specified in the values array.\n\n`and`: Matches objects only if all subfilters match.\n\n`or`: Matches objects if any subfilter matches.\n\n`time_is_after`: Matches objects if the field is after the given time.\n\n`time_is_before`: Matches objects if the field is before the given time.\n\n`time_range`: Matches objects if the field is between the given times.\n\n`string_contains`: Matches objects if the field contains the given string.\n\n`string_does_not_contain`: Matches objects if the field does not contain the given string.\n\n`is_set`: Matches objects if the field is set.\n\n`is_unset`: Matches objects if the field is unset.\n\n`greater_than`: Matches objects if the numeric field is greater than the given value.\n\n`less_than`: Matches objects if the numeric field is less than the given value.\n\n`greater_than_or_equals`: Matches objects if the numeric field is greater than or equal to the given value.\n\n`less_than_or_equals`: Matches objects if the numeric field is less than or equal to the given value.","enum":["equals","not_equals","contains","does_not_contain","in","not_in","and","or","time_is_after","time_is_before","time_range","string_contains","string_does_not_contain","is_set","is_unset","greater_than","less_than","greater_than_or_equals","less_than_or_equals"],"type":"string"},"subfilters":{"description":"Sub-filters for this filter.  Valid only when operator is \"and\" or \"or\".\n\nThe maximum allowed depth for a tree of filters is 3.","items":{"$ref":"#/components/schemas/Filter"},"type":"array"},"value":{"description":"The value for this filter. Only used for single-valued operators\n\n(\"equals\", \"not_equals\", \"contains\", \"does_not_contain\")","type":"string"},"values":{"description":"The values for this filter. Only used for multi-valued operators (\"in\", \"not_in\").","items":{"type":"string"},"type":"array"}},"required":["field","operator"],"type":"object"},"CreateArticleResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Article"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"},"Article":{"properties":{"author_user_id":{"description":"The ID of the user who authored the article.","type":"string"},"collection_id":{"description":"The ID of the collection this article belongs to, if any.","type":"string"},"current_draft_content_html":{"description":"The current draft content of the article in HTML. This is the latest version, which may differ from the published version.","type":"string"},"current_published_content_html":{"description":"The current published content of the article in HTML.","type":"string"},"id":{"description":"The ID of the article.","type":"string"},"identifier":{"description":"The identifier of the article","type":"string"},"is_published":{"description":"IsPublished indicates if the article is published.","type":"boolean"},"is_unlisted":{"description":"Whether the article can only be accessible only via direct link.","type":"boolean"},"last_published_at":{"description":"The last published at time of the article.","type":"string"},"slug":{"description":"The slug of the article.","type":"string"},"title":{"description":"The name of the article.","type":"string"},"url":{"description":"The URL of the article.","type":"string"},"visibility_config":{"$ref":"#/components/schemas/VisibilityConfig"}},"type":"object"},"ErrorApiResponseBody":{"properties":{"errors":{"description":"The list of errors.","items":{"type":"string"},"type":"array"},"exists_id":{"description":"The ID of the object that already exists if this is a duplicate object error.","type":"string"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"}}},"paths":{"/knowledge-bases/{id}/articles":{"post":{"description":"Creates a new article within a knowledge base.\n\n**Rate limit:** 10 requests per minute","operationId":"CreateArticle","parameters":[{"description":"The ID of the knowledge base the article is being added to.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateArticleRequestBody"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateArticleResponseBody"}}},"description":""},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""}},"summary":"Create an article","tags":["articles"]}}}}
```

## Get an article by its ID

> Returns a single article by ID within the specified knowledge base.\
> \
> \*\*Rate limit:\*\* 60 requests per minute

```json
{"openapi":"3.0.1","info":{"title":"Pylon API.","version":"1.0.0"},"servers":[{"url":"https://api.usepylon.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"description":"Authorization: Bearer <token>","scheme":"bearer","type":"http"}},"schemas":{"GetArticleResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Article"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"},"Article":{"properties":{"author_user_id":{"description":"The ID of the user who authored the article.","type":"string"},"collection_id":{"description":"The ID of the collection this article belongs to, if any.","type":"string"},"current_draft_content_html":{"description":"The current draft content of the article in HTML. This is the latest version, which may differ from the published version.","type":"string"},"current_published_content_html":{"description":"The current published content of the article in HTML.","type":"string"},"id":{"description":"The ID of the article.","type":"string"},"identifier":{"description":"The identifier of the article","type":"string"},"is_published":{"description":"IsPublished indicates if the article is published.","type":"boolean"},"is_unlisted":{"description":"Whether the article can only be accessible only via direct link.","type":"boolean"},"last_published_at":{"description":"The last published at time of the article.","type":"string"},"slug":{"description":"The slug of the article.","type":"string"},"title":{"description":"The name of the article.","type":"string"},"url":{"description":"The URL of the article.","type":"string"},"visibility_config":{"$ref":"#/components/schemas/VisibilityConfig"}},"type":"object"},"VisibilityConfig":{"properties":{"ai_agent_access":{"description":"AI agent access control for the article. Defaults to inherit from the parent scope when omitted.\n\n`inherit`: Defers the access check to the parent object (Collection or KnowledgeBase).\n\n`none`: No AI agents have access to this article.\n\n`specific_agents`: Only specific AI agents enumerated in the allowlist have access.","enum":["inherit","none","specific_agents"],"type":"string"},"allowed_agent_ids":{"description":"List of AI agent IDs that may access this article when ai_agent_access is set to \"specific_agents\".","items":{"type":"string"},"type":"array"},"customer_visibility_condition":{"$ref":"#/components/schemas/Filter"},"visibility":{"description":"The visibility setting of the article.","enum":["public","customer","internal_only"],"type":"string"}},"type":"object"},"Filter":{"properties":{"field":{"description":"The field for this filter.  For allowed fields, see the documentation for\n\nthe specific endpoint you are using.\n\nFor non-compound filters (any operators other than \"and\" or \"or\"),\n\nField must be set, along with either Value or Values, depending on the operator.","type":"string"},"operator":{"description":"The operator for this filter.\n\n`equals`: Matches objects that are exactly equal to the value in the field.\n\n`not_equals`: Matches objects that are not exactly equal to the value in the field.\n\n`contains`: For a multi-valued field, such as tags, this operator will match  objects that contain any of the values in the field.\n\n`does_not_contain`: For a multi-valued field, such as tags, this operator will match  objects that do not contain any of the values in the field.\n\n`in`: Matches objects if the field is one of several possible values,  as specified in the values array.\n\n`not_in`: Matches objects if the field is none of several possible values,  as specified in the values array.\n\n`and`: Matches objects only if all subfilters match.\n\n`or`: Matches objects if any subfilter matches.\n\n`time_is_after`: Matches objects if the field is after the given time.\n\n`time_is_before`: Matches objects if the field is before the given time.\n\n`time_range`: Matches objects if the field is between the given times.\n\n`string_contains`: Matches objects if the field contains the given string.\n\n`string_does_not_contain`: Matches objects if the field does not contain the given string.\n\n`is_set`: Matches objects if the field is set.\n\n`is_unset`: Matches objects if the field is unset.\n\n`greater_than`: Matches objects if the numeric field is greater than the given value.\n\n`less_than`: Matches objects if the numeric field is less than the given value.\n\n`greater_than_or_equals`: Matches objects if the numeric field is greater than or equal to the given value.\n\n`less_than_or_equals`: Matches objects if the numeric field is less than or equal to the given value.","enum":["equals","not_equals","contains","does_not_contain","in","not_in","and","or","time_is_after","time_is_before","time_range","string_contains","string_does_not_contain","is_set","is_unset","greater_than","less_than","greater_than_or_equals","less_than_or_equals"],"type":"string"},"subfilters":{"description":"Sub-filters for this filter.  Valid only when operator is \"and\" or \"or\".\n\nThe maximum allowed depth for a tree of filters is 3.","items":{"$ref":"#/components/schemas/Filter"},"type":"array"},"value":{"description":"The value for this filter. Only used for single-valued operators\n\n(\"equals\", \"not_equals\", \"contains\", \"does_not_contain\")","type":"string"},"values":{"description":"The values for this filter. Only used for multi-valued operators (\"in\", \"not_in\").","items":{"type":"string"},"type":"array"}},"required":["field","operator"],"type":"object"},"ErrorApiResponseBody":{"properties":{"errors":{"description":"The list of errors.","items":{"type":"string"},"type":"array"},"exists_id":{"description":"The ID of the object that already exists if this is a duplicate object error.","type":"string"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"}}},"paths":{"/knowledge-bases/{id}/articles/{article_id}":{"get":{"description":"Returns a single article by ID within the specified knowledge base.\n\n**Rate limit:** 60 requests per minute","operationId":"GetArticle","parameters":[{"description":"The KnowledgeBaseID of the article to fetch.","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"The ID of the article to fetch.","in":"path","name":"article_id","required":true,"schema":{"type":"string"}},{"description":"The language code to fetch the article in. If not provided, returns the default language.","in":"query","name":"language","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetArticleResponseBody"}}},"description":""},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""}},"summary":"Get an article by its ID","tags":["articles"]}}}}
```

{% openapi src="<https://static.usepylon.com/openapi.json>" path="/knowledge-bases/{id}/articles/{article\_id}" method="patch" %}
<https://static.usepylon.com/openapi.json>
{% endopenapi %}

## Delete an article

> Permanently deletes an article from the knowledge base.\
> \
> \*\*Rate limit:\*\* 20 requests per minute

```json
{"openapi":"3.0.1","info":{"title":"Pylon API.","version":"1.0.0"},"servers":[{"url":"https://api.usepylon.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"description":"Authorization: Bearer <token>","scheme":"bearer","type":"http"}},"schemas":{"DeleteArticleResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"},"ErrorApiResponseBody":{"properties":{"errors":{"description":"The list of errors.","items":{"type":"string"},"type":"array"},"exists_id":{"description":"The ID of the object that already exists if this is a duplicate object error.","type":"string"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"}}},"paths":{"/knowledge-bases/{id}/articles/{article_id}":{"delete":{"description":"Permanently deletes an article from the knowledge base.\n\n**Rate limit:** 20 requests per minute","operationId":"DeleteArticle","parameters":[{"description":"The KnowledgeBaseID of the article to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"The ID of the article to delete.","in":"path","name":"article_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteArticleResponseBody"}}},"description":""},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""}},"summary":"Delete an article","tags":["articles"]}}}}
```

{% openapi src="<https://static.usepylon.com/openapi.json>" path="/knowledge-bases/{id}/route-redirects" method="post" %}
<https://static.usepylon.com/openapi.json>
{% endopenapi %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.usepylon.com/pylon-docs/developer/api/api-reference/knowledge-base.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
