Upload a knowledge file
Upload a file to an agent’s knowledge.
Send one PDF, DOCX, TXT or CSV file, at most 25 MiB. If processing fails, the uploaded file and its source record are removed on a best-effort basis and the request fails.
curl --request POST \
--url https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file=@example-fileimport requests
url = "https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"agent_id": "<string>",
"content": "<string>",
"id": "<string>",
"is_active": true,
"name": "<string>",
"object": "knowledge_source",
"type": "<string>",
"url": "<string>"
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}Authorizations
An org API key: Authorization: Bearer phk_…
Headers
Optional. Must be the key's org.
Path Parameters
The agent's ID.
Body
One PDF, DOCX, TXT or CSV file, at most 25 MiB.
Response
Successful Response
Something an agent knows: a document, an uploaded file or a website page.
The agent it belongs to.
The text the agent uses, in Markdown. null when there is none, as for most uploaded files.
The knowledge source's ID.
Whether the agent uses it on calls. A source can be turned off without deleting it.
The name shown in the web app. null when it has none.
The type of this object, always knowledge_source.
"knowledge_source"document is text written in the web app, file an uploaded file, website a scraped web page. Known values: document, file, website. More can be added, so handle values you don't recognize.
The page's address, for a website. null for other types.
curl --request POST \
--url https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file=@example-fileimport requests
url = "https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.us.phonely.ai/v1/agents/{id}/knowledge-sources/files")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"agent_id": "<string>",
"content": "<string>",
"id": "<string>",
"is_active": true,
"name": "<string>",
"object": "knowledge_source",
"type": "<string>",
"url": "<string>"
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}
