curl --request POST \
--url https://{subdomain}.conveyour.com/api/files \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"url": "https://cdn.filestackcontent.com/ABCDEFGHIJKLMNOPQRSTUVWX",
"filename": "handbook.pdf",
"mimetype": "application/pdf",
"name": "Employee handbook"
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: 'https://cdn.filestackcontent.com/ABCDEFGHIJKLMNOPQRSTUVWX',
filename: 'handbook.pdf',
mimetype: 'application/pdf',
name: 'Employee handbook'
})
};
fetch('https://{subdomain}.conveyour.com/api/files', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: 'https://cdn.filestackcontent.com/ABCDEFGHIJKLMNOPQRSTUVWX',
filename: 'handbook.pdf',
mimetype: 'application/pdf',
name: 'Employee handbook'
})
};
fetch('https://{subdomain}.conveyour.com/api/files', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/files"
payload = {
"url": "https://cdn.filestackcontent.com/ABCDEFGHIJKLMNOPQRSTUVWX",
"filename": "handbook.pdf",
"mimetype": "application/pdf",
"name": "Employee handbook"
}
headers = {
"x-conveyour-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{subdomain}.conveyour.com/api/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 => json_encode([
'url' => 'https://cdn.filestackcontent.com/ABCDEFGHIJKLMNOPQRSTUVWX',
'filename' => 'handbook.pdf',
'mimetype' => 'application/pdf',
'name' => 'Employee handbook'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-conveyour-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "ok",
"message": "File record created",
"data": {
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"filename": "safety-handbook.pdf",
"url": "https://cdn.filestackcontent.com/abc123xyz",
"mimetype": "application/pdf",
"folder_id": null
}
}{
"status": "failed",
"message": "Token is either expired or does not have the correct permissions",
"data": []
}Create a file
Registers a file metadata record in ConveYour. The actual file must be uploaded to Filestack first — pass the resulting Filestack URL and metadata here. Filenames must be unique within a folder. The request will fail with a 400 error if a file with the same name already exists in the target folder.
Register file metadata (upload to Filestack first)
curl --request POST \
--url https://{subdomain}.conveyour.com/api/files \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"url": "https://cdn.filestackcontent.com/ABCDEFGHIJKLMNOPQRSTUVWX",
"filename": "handbook.pdf",
"mimetype": "application/pdf",
"name": "Employee handbook"
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: 'https://cdn.filestackcontent.com/ABCDEFGHIJKLMNOPQRSTUVWX',
filename: 'handbook.pdf',
mimetype: 'application/pdf',
name: 'Employee handbook'
})
};
fetch('https://{subdomain}.conveyour.com/api/files', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: 'https://cdn.filestackcontent.com/ABCDEFGHIJKLMNOPQRSTUVWX',
filename: 'handbook.pdf',
mimetype: 'application/pdf',
name: 'Employee handbook'
})
};
fetch('https://{subdomain}.conveyour.com/api/files', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/files"
payload = {
"url": "https://cdn.filestackcontent.com/ABCDEFGHIJKLMNOPQRSTUVWX",
"filename": "handbook.pdf",
"mimetype": "application/pdf",
"name": "Employee handbook"
}
headers = {
"x-conveyour-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{subdomain}.conveyour.com/api/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 => json_encode([
'url' => 'https://cdn.filestackcontent.com/ABCDEFGHIJKLMNOPQRSTUVWX',
'filename' => 'handbook.pdf',
'mimetype' => 'application/pdf',
'name' => 'Employee handbook'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-conveyour-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "ok",
"message": "File record created",
"data": {
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"filename": "safety-handbook.pdf",
"url": "https://cdn.filestackcontent.com/abc123xyz",
"mimetype": "application/pdf",
"folder_id": null
}
}{
"status": "failed",
"message": "Token is either expired or does not have the correct permissions",
"data": []
}Authorizations
Your API key token. Contacts endpoints require a Server-only — Full API key — see Authentication.
Query Parameters
Team scope for the request, as one or more team ObjectIds. The brackets are required: PHP keeps only the last value for a repeated plain key, so teams=A&teams=B silently resolves to B alone. On requests with a JSON body you may send teams (no brackets) in the body instead.
Values that are not valid ObjectIds are silently ignored — a mistyped team ID behaves as if no team was sent. See the teams section of the API conventions guide.
Body
The file's display name.
The Filestack CDN URL for the uploaded file. ConveYour extracts the file hash from this URL, so it must be a Filestack/CDN URL containing a 20+ character hash segment — an arbitrary external URL is rejected with The url field is required. even when you supplied one.
The file's MIME type (e.g. application/pdf, image/png).
ID of the folder to place this file in. Omit for no folder.
Response
Success.
The common response envelope shared by all ConveYour endpoints.