API-dokumentasjon
Ekstraher metadata fra filer ved hjelp av vårt enkle og kraftige API. Kom i gang med API-nøkkelen din og begynn å analysere filer programmatisk.
Autentisering
Alle API-forespørsler krever en API-nøkkel. Du kan oppgi den på to måter:
1. I forespørselhodet:
X-API-Key: YOUR_API_KEY_HERE
2. Som en spørringsparameter:
?key=YOUR_API_KEY_HERE
Ekstraher Metadata
https://exiftools.com/api/v1/extract
Ekstraher metadata fra en fil ved å bruke direkte filopplasting eller en URL. Resultater returneres umiddelbart (synkron behandling). Et sjekkendepunkt er også tilgjengelig for statusverifisering om nødvendig.
Forespørselsparametere
{
"file": "binary_file_data", // Required if url not provided
"url": "https://example.com/image.jpg", // Required if file not provided. Can be passed as POST body or query string parameter
}
Eksempel Respons
{
"success": true,
"status": "completed",
"fileName": "image.jpg",
"uuid": "123e4567-e89b-12d3-a456-426614174000"
// ...
"metadata": {
"exif": {
"Make": "Canon",
"Model": "EOS R5",
"DateTimeOriginal": "2024:03:15 10:30:00",
"ExposureTime": "1/1000",
"FNumber": "2.8",
"ISO": "100"
},
"iptc": {
"Creator": "John Doe",
"Copyright": "© 2024"
}
// ... more metadata
}
}
Feilresponser
400 Bad Request
{
"success": false,
"error": "Invalid request parameters"
}
401 Unauthorized
{
"success": false,
"error": "Invalid API key"
}
500 Internal Server Error
{
"success": false,
"error": "An error occurred while processing your request"
}
Få Ekstraksjonsresultater
https://exiftools.com/api/v1/extract/{uuid}
Hent metadataekstraksjonsresultatene for en spesifikk UUID. Bruk dette endepunktet for å sjekke statusen og få resultater etter å ha sendt inn en fil eller URL for behandling. API-nøkkel er valgfritt - hvis oppgitt, filtreres resultater til den autentiserte brukerens ekstraksjoner.
Forespørselsparametere
{
"uuid": "required", // The UUID returned from the extract endpoint
"X-API-Key": "optional" // API key in header, or use ?key=YOUR_API_KEY
}
Eksempel Respons (Fullført)
{
"success": true,
"status": "completed"
"filename": "image.jpg",
// ...
"metadata": {
"exif": {
"Make": "Canon",
"Model": "EOS R5",
"DateTimeOriginal": "2024:03:15 10:30:00",
"ExposureTime": "1/1000",
"FNumber": "2.8",
"ISO": "100"
},
"iptc": {
"Creator": "John Doe",
"Copyright": "© 2024"
}
// ... more metadata
},
}
Feilresponser
401 Unauthorized
{
"success": false,
"error": "Invalid API key"
}
Returneres bare når en ugyldig API-nøkkel oppgis
404 Not Found
{
"success": false,
"error": "No extraction found with the given UUID."
}
Fjern Metadata
https://exiftools.com/api/v1/remove
Fjern alle metadata fra en fil inkludert EXIF-data, GPS-posisjon, IPTC, XMP og annen sensitiv informasjon. Last opp en fil direkte eller oppgi en URL for behandling. Motta en renset versjon uten innebygd metadata. Den rensede filen er tilgjengelig for nedlasting via den returnerte URL-en.
Forespørselsparametere
{
"file": "binary_file_data", // Required if url not provided
"url": "https://example.com/image.jpg" // Required if file not provided. Can be passed as POST body or query string parameter
}
Eksempel Respons
{
"success": true,
"status": "completed",
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"downloadUrl": "https://exiftools.com/download-cleaned/123e4567-e89b-12d3-a456-426614174000"
}
DownloadUrl gir en direkte lenke for å laste ned den rensede filen med all metadata fjernet. Filen vil være tilgjengelig for nedlasting i 24 timer.
Feilresponser
500 Internal Server Error
{
"success": false,
"error": "An error occurred while processing your request"
}
Kodeeksempler
# File Upload - Using header
curl -X POST https://exiftools.com/api/v1/extract \
-H "X-API-Key: YOUR_API_KEY_HERE" \
-F "[email protected]"
# File Upload - Using query parameter
curl -X POST "https://exiftools.com/api/v1/extract?key=YOUR_API_KEY_HERE" \
-F "[email protected]"
# URL Processing - Using header
curl -X POST https://exiftools.com/api/v1/extract \
-H "X-API-Key: YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/image.jpg"}'
# URL Processing - Using query parameter
curl -X POST "https://exiftools.com/api/v1/extract?key=YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/image.jpg"}'
# Get results by UUID (no API key required)
curl -X GET https://exiftools.com/api/v1/extract/123e4567-e89b-12d3-a456-426614174000
# Response (immediate results)
{
"success": true,
"status": "completed",
"fileName": "image.jpg",
"uuid": "123e4567-e89b-12d3-a456-426614174000"
# ...
"metadata": {
"exif": {
"Make": "Canon",
"Model": "EOS R5",
"DateTimeOriginal": "2024:03:15 10:30:00",
"ExposureTime": "1/1000",
"FNumber": "2.8",
"ISO": "100"
},
"File" : {
"Name" : "image.jpg",
"Size" : 123456,
"Type" : "image/jpeg"
}
# ... more metadata
}
}
# Remove Metadata - File Upload - Using header
curl -X POST https://exiftools.com/api/v1/remove \
-H "X-API-Key: YOUR_API_KEY_HERE" \
-F "[email protected]"
# Remove Metadata - File Upload - Using query parameter
curl -X POST "https://exiftools.com/api/v1/remove?key=YOUR_API_KEY_HERE" \
-F "[email protected]"
# Remove Metadata - URL Processing - Using header
curl -X POST https://exiftools.com/api/v1/remove \
-H "X-API-Key: YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/image.jpg"}'
# Remove Metadata - URL Processing - Using query parameter
curl -X POST "https://exiftools.com/api/v1/remove?key=YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/image.jpg"}'
# Response
{
"success": true,
"status": "completed",
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"downloadUrl": "https://exiftools.com/download-cleaned/123e4567-e89b-12d3-a456-426614174000"
}
import requests
# File Upload - Using header
url = "https://exiftools.com/api/v1/extract"
headers = {
"X-API-Key": "YOUR_API_KEY_HERE"
}
files = {
"file": open("image.jpg", "rb")
}
response = requests.post(url, headers=headers, files=files)
# File Upload - Using query parameter
url = "https://exiftools.com/api/v1/extract?key=YOUR_API_KEY_HERE"
files = {
"file": open("image.jpg", "rb")
}
response = requests.post(url, files=files)
# URL Processing - Using header
url = "https://exiftools.com/api/v1/extract"
headers = {
"X-API-Key": "YOUR_API_KEY_HERE",
"Content-Type": "application/json"
}
data = {
"url": "https://example.com/image.jpg"
}
response = requests.post(url, headers=headers, json=data)
# URL Processing - Using query parameter
url = "https://exiftools.com/api/v1/extract?key=YOUR_API_KEY_HERE"
headers = {
"Content-Type": "application/json"
}
data = {
"url": "https://example.com/image.jpg"
}
response = requests.post(url, headers=headers, json=data)
# Get results by UUID (no API key required)
response = requests.get('https://exiftools.com/api/v1/extract/123e4567-e89b-12d3-a456-426614174000')
metadata = response.json()
# Remove Metadata - File Upload - Using header
url = "https://exiftools.com/api/v1/remove"
headers = {
"X-API-Key": "YOUR_API_KEY_HERE"
}
files = {
"file": open("image.jpg", "rb")
}
response = requests.post(url, headers=headers, files=files)
result = response.json()
# Download the cleaned file
download_url = result['downloadUrl']
cleaned_file = requests.get(download_url)
with open("image_cleaned.jpg", "wb") as f:
f.write(cleaned_file.content)
# Remove Metadata - File Upload - Using query parameter
url = "https://exiftools.com/api/v1/remove?key=YOUR_API_KEY_HERE"
files = {
"file": open("image.jpg", "rb")
}
response = requests.post(url, files=files)
result = response.json()
# Remove Metadata - URL Processing - Using header
url = "https://exiftools.com/api/v1/remove"
headers = {
"X-API-Key": "YOUR_API_KEY_HERE",
"Content-Type": "application/json"
}
data = {
"url": "https://example.com/image.jpg"
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
# Remove Metadata - URL Processing - Using query parameter
url = "https://exiftools.com/api/v1/remove?key=YOUR_API_KEY_HERE"
headers = {
"Content-Type": "application/json"
}
data = {
"url": "https://example.com/image.jpg"
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
// File Upload - Using header
const formData = new FormData();
formData.append('file', fileInput.files[0]);
fetch('https://exiftools.com/api/v1/extract', {
method: 'POST',
headers: {
'X-API-Key': 'YOUR_API_KEY_HERE'
},
body: formData
})
.then(response => response.json())
.then(data => console.log(data));
// File Upload - Using query parameter
const formData2 = new FormData();
formData2.append('file', fileInput.files[0]);
fetch('https://exiftools.com/api/v1/extract?key=YOUR_API_KEY_HERE', {
method: 'POST',
body: formData2
})
.then(response => response.json())
.then(data => console.log(data));
// URL Processing - Using header
fetch('https://exiftools.com/api/v1/extract', {
method: 'POST',
headers: {
'X-API-Key': 'YOUR_API_KEY_HERE',
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://example.com/image.jpg'
})
})
.then(response => response.json())
.then(data => console.log(data));
// URL Processing - Using query parameter
fetch('https://exiftools.com/api/v1/extract?key=YOUR_API_KEY_HERE', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://example.com/image.jpg'
})
})
.then(response => response.json())
.then(data => console.log(data));
// Get results by UUID (no API key required)
fetch('https://exiftools.com/api/v1/extract/123e4567-e89b-12d3-a456-426614174000')
.then(response => response.json())
.then(data => console.log(data));
// Remove Metadata - File Upload - Using header
const removeFormData = new FormData();
removeFormData.append('file', fileInput.files[0]);
fetch('https://exiftools.com/api/v1/remove', {
method: 'POST',
headers: {
'X-API-Key': 'YOUR_API_KEY_HERE'
},
body: removeFormData
})
.then(response => response.json())
.then(data => {
// Download the cleaned file
window.location.href = data.downloadUrl;
});
// Remove Metadata - File Upload - Using query parameter
const removeFormData2 = new FormData();
removeFormData2.append('file', fileInput.files[0]);
fetch('https://exiftools.com/api/v1/remove?key=YOUR_API_KEY_HERE', {
method: 'POST',
body: removeFormData2
})
.then(response => response.json())
.then(data => console.log(data));
// Remove Metadata - URL Processing - Using header
fetch('https://exiftools.com/api/v1/remove', {
method: 'POST',
headers: {
'X-API-Key': 'YOUR_API_KEY_HERE',
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://example.com/image.jpg'
})
})
.then(response => response.json())
.then(data => {
window.location.href = data.downloadUrl;
});
// Remove Metadata - URL Processing - Using query parameter
fetch('https://exiftools.com/api/v1/remove?key=YOUR_API_KEY_HERE', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://example.com/image.jpg'
})
})
.then(response => response.json())
.then(data => console.log(data));
// File Upload - Using header
$curl = curl_init();
$file = new CURLFile('/path/to/image.jpg', 'image/jpeg', 'image.jpg');
curl_setopt_array($curl, [
CURLOPT_URL => 'https://exiftools.com/api/v1/extract',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => [
'file' => $file
],
CURLOPT_HTTPHEADER => [
'X-API-Key: YOUR_API_KEY_HERE'
]
]);
$response = curl_exec($curl);
$metadata = json_decode($response, true);
curl_close($curl);
// File Upload - Using query parameter
$curl = curl_init();
$file = new CURLFile('/path/to/image.jpg', 'image/jpeg', 'image.jpg');
curl_setopt_array($curl, [
CURLOPT_URL => 'https://exiftools.com/api/v1/extract?key=YOUR_API_KEY_HERE',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => [
'file' => $file
]
]);
$response = curl_exec($curl);
$metadata = json_decode($response, true);
curl_close($curl);
// URL Processing - Using header
$curl = curl_init();
$data = json_encode(['url' => 'https://example.com/image.jpg']);
curl_setopt_array($curl, [
CURLOPT_URL => 'https://exiftools.com/api/v1/extract',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => [
'X-API-Key: YOUR_API_KEY_HERE',
'Content-Type: application/json'
]
]);
$response = curl_exec($curl);
$metadata = json_decode($response, true);
curl_close($curl);
// URL Processing - Using query parameter
$curl = curl_init();
$data = json_encode(['url' => 'https://example.com/image.jpg']);
curl_setopt_array($curl, [
CURLOPT_URL => 'https://exiftools.com/api/v1/extract?key=YOUR_API_KEY_HERE',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json'
]
]);
$response = curl_exec($curl);
$metadata = json_decode($response, true);
curl_close($curl);
// Get results by UUID (no API key required)
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://exiftools.com/api/v1/extract/123e4567-e89b-12d3-a456-426614174000',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPGET => true
]);
$response = curl_exec($curl);
$metadata = json_decode($response, true);
curl_close($curl);
// Remove Metadata - File Upload - Using header
$curl = curl_init();
$file = new CURLFile('/path/to/image.jpg', 'image/jpeg', 'image.jpg');
curl_setopt_array($curl, [
CURLOPT_URL => 'https://exiftools.com/api/v1/remove',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => [
'file' => $file
],
CURLOPT_HTTPHEADER => [
'X-API-Key: YOUR_API_KEY_HERE'
]
]);
$response = curl_exec($curl);
$result = json_decode($response, true);
curl_close($curl);
// Download the cleaned file
$downloadUrl = $result['downloadUrl'];
$cleanedContent = file_get_contents($downloadUrl);
file_put_contents('image_cleaned.jpg', $cleanedContent);
// Remove Metadata - File Upload - Using query parameter
$curl = curl_init();
$file = new CURLFile('/path/to/image.jpg', 'image/jpeg', 'image.jpg');
curl_setopt_array($curl, [
CURLOPT_URL => 'https://exiftools.com/api/v1/remove?key=YOUR_API_KEY_HERE',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => [
'file' => $file
]
]);
$response = curl_exec($curl);
$result = json_decode($response, true);
curl_close($curl);
// Remove Metadata - URL Processing - Using header
$curl = curl_init();
$data = json_encode(['url' => 'https://example.com/image.jpg']);
curl_setopt_array($curl, [
CURLOPT_URL => 'https://exiftools.com/api/v1/remove',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => [
'X-API-Key: YOUR_API_KEY_HERE',
'Content-Type: application/json'
]
]);
$response = curl_exec($curl);
$result = json_decode($response, true);
curl_close($curl);
// Remove Metadata - URL Processing - Using query parameter
$curl = curl_init();
$data = json_encode(['url' => 'https://example.com/image.jpg']);
curl_setopt_array($curl, [
CURLOPT_URL => 'https://exiftools.com/api/v1/remove?key=YOUR_API_KEY_HERE',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json'
]
]);
$response = curl_exec($curl);
$result = json_decode($response, true);
curl_close($curl);
require 'net/http'
require 'json'
require 'uri'
# File Upload - Using header
uri = URI('https://exiftools.com/api/v1/extract')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['X-API-Key'] = 'YOUR_API_KEY_HERE'
# Create multipart form data
form_data = [['file', File.open('image.jpg', 'rb')]]
request.set_form(form_data, 'multipart/form-data')
response = http.request(request)
metadata = JSON.parse(response.body)
# File Upload - Using query parameter
uri = URI('https://exiftools.com/api/v1/extract?key=YOUR_API_KEY_HERE')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
form_data = [['file', File.open('image.jpg', 'rb')]]
request.set_form(form_data, 'multipart/form-data')
response = http.request(request)
metadata = JSON.parse(response.body)
# URL Processing - Using header
uri = URI('https://exiftools.com/api/v1/extract')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['X-API-Key'] = 'YOUR_API_KEY_HERE'
request['Content-Type'] = 'application/json'
request.body = { url: 'https://example.com/image.jpg' }.to_json
response = http.request(request)
metadata = JSON.parse(response.body)
# URL Processing - Using query parameter
uri = URI('https://exiftools.com/api/v1/extract?key=YOUR_API_KEY_HERE')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = { url: 'https://example.com/image.jpg' }.to_json
response = http.request(request)
metadata = JSON.parse(response.body)
# Alternative using HTTParty gem (if available)
# require 'httparty'
#
# # File Upload
# response = HTTParty.post('https://exiftools.com/api/v1/extract',
# headers: { 'X-API-Key' => 'YOUR_API_KEY_HERE' },
# body: { file: File.open('image.jpg', 'rb') }
# )
#
# # URL Processing
# response = HTTParty.post('https://exiftools.com/api/v1/extract',
# headers: {
# 'X-API-Key' => 'YOUR_API_KEY_HERE',
# 'Content-Type' => 'application/json'
# },
# body: { url: 'https://example.com/image.jpg' }.to_json
# )
# Get results by UUID (no API key required)
uri = URI('https://exiftools.com/api/v1/extract/123e4567-e89b-12d3-a456-426614174000')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
response = http.request(request)
metadata = JSON.parse(response.body)
# Remove Metadata - File Upload - Using header
uri = URI('https://exiftools.com/api/v1/remove')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['X-API-Key'] = 'YOUR_API_KEY_HERE'
# Create multipart form data
form_data = [['file', File.open('image.jpg', 'rb')]]
request.set_form(form_data, 'multipart/form-data')
response = http.request(request)
result = JSON.parse(response.body)
# Download the cleaned file
download_uri = URI(result['downloadUrl'])
cleaned_file = Net::HTTP.get(download_uri)
File.write('image_cleaned.jpg', cleaned_file)
# Remove Metadata - File Upload - Using query parameter
uri = URI('https://exiftools.com/api/v1/remove?key=YOUR_API_KEY_HERE')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
form_data = [['file', File.open('image.jpg', 'rb')]]
request.set_form(form_data, 'multipart/form-data')
response = http.request(request)
result = JSON.parse(response.body)
# Remove Metadata - URL Processing - Using header
uri = URI('https://exiftools.com/api/v1/remove')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['X-API-Key'] = 'YOUR_API_KEY_HERE'
request['Content-Type'] = 'application/json'
request.body = { url: 'https://example.com/image.jpg' }.to_json
response = http.request(request)
result = JSON.parse(response.body)
# Remove Metadata - URL Processing - Using query parameter
uri = URI('https://exiftools.com/api/v1/remove?key=YOUR_API_KEY_HERE')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = { url: 'https://example.com/image.jpg' }.to_json
response = http.request(request)
result = JSON.parse(response.body)