Introduction
Through the podcaster API you can access your media files, podcast feeds, episodes and statistics.
This documentation aims to provide all the information you need to work with our API.
Authenticating requests
To authenticate requests, include an Authorization
header with the value "Bearer {YOUR_AUTH_KEY}"
.
All authenticated endpoints are marked with a requires authentication
badge in the documentation below.
You can retrieve your token by visiting your personal key management site. There you can create either a personal code (use as Bearer code which you can (also) use for the live examples on this page) or an OAuth client id. Please do not try to build your own (hosting/podcast) service or an user frontend directly on top of our infrastructure. Always cache your requests.
Endpoints
POST api/webhooks-processing
requires authentication
Example request:
curl --request POST \
"https://www.podcaster.de/api/webhooks-processing" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/webhooks-processing"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/webhooks-processing';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/webhooks-processing'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
POST api/generate/waveform/{id}
requires authentication
Example request:
curl --request POST \
"https://www.podcaster.de/api/generate/waveform/earum" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/generate/waveform/earum"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/generate/waveform/earum';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/generate/waveform/earum'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
POST api/generate/silence/{id}
requires authentication
Example request:
curl --request POST \
"https://www.podcaster.de/api/generate/silence/vel" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/generate/silence/vel"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/generate/silence/vel';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/generate/silence/vel'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Media
List files
requires authentication
Gets a list of the user´s uploaded (media) files. Accessible with scopes: media,media-read-only
Example request:
curl --request GET \
--get "https://www.podcaster.de/api/media?sort_by=name&sort_dir=desc&filter=%22kreativ%22&strict=1&page[number]=1&page[size]=10" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/media"
);
const params = {
"sort_by": "name",
"sort_dir": "desc",
"filter": ""kreativ"",
"strict": "1",
"page[number]": "1",
"page[size]": "10",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/media';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'sort_by' => 'name',
'sort_dir' => 'desc',
'filter' => '"kreativ"',
'strict' => '1',
'page[number]' => '1',
'page[size]' => '10',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/media'
params = {
'sort_by': 'name',
'sort_dir': 'desc',
'filter': '"kreativ"',
'strict': '1',
'page[number]': '1',
'page[size]': '10',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
"count": 7,
"items": [
{
"id": "1600240053",
"name": "1400x1400.png",
"byte": 14644,
"created": "16.09.2020 09:07:33",
"size": "14.3 KB",
"last": "09:07:33 16.09.2020",
"cat": "_default_",
"url": "https://beispiel.podcaster.de/download/1400x1400.png",
"extension": "png",
"mimetype": "image/png",
"type": "image",
"created_date": "16.09.2020",
"created_time": "09:09"
},
{
"id": "1593720040",
"name": "3000x3000.png",
"byte": 93132,
"created": "02.07.2020 22:00:40",
"size": "90.95 KB",
"last": "22:00:40 02.07.2020",
"cat": "logos",
"url": "https://beispiel.podcaster.de/download/3000x3000.png",
"extension": "png",
"mimetype": "image/png",
"type": "image",
"created_date": "02.07.2020",
"created_time": "22:10"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Upload file
requires authentication
Stores a file in the media manager.
Example request:
curl --request POST \
"https://www.podcaster.de/api/media" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "media=@/tmp/phpMjk2xW"
const url = new URL(
"https://www.podcaster.de/api/media"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('media', document.querySelector('input[name="media"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/media';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'multipart/form-data',
'Accept' => 'application/json',
],
'multipart' => [
[
'name' => 'media',
'contents' => fopen('/tmp/phpMjk2xW', 'r')
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/media'
files = {
'media': open('/tmp/phpMjk2xW', 'rb')}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, files=files)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get file
requires authentication
Gets details for a media file.
Example request:
curl --request GET \
--get "https://www.podcaster.de/api/media/123456789" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/media/123456789"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/media/123456789';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/media/123456789'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"id": 1600240053,
"name": "1400x1400.png",
"byte": 14644,
"size": "14.3 KB",
"time": "16.09.2020 09:07:33",
"last": "16.09.2020 09:07:33",
"cat": null,
"mimetype": "image/png",
"type": "image",
"info": "PNG image data, 1400 x 1400, 8-bit/color RGBA, non-interlaced",
"mime": "image/png"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete file
requires authentication
Remove a file from the media manager.
Example request:
curl --request DELETE \
"https://www.podcaster.de/api/media/123456789" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/media/123456789"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/media/123456789';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/media/123456789'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Copy file
requires authentication
Creates a copy of an existing media file with a unique name
Example request:
curl --request POST \
"https://www.podcaster.de/api/media/123456798/copy" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"label\": \"datei_version2.mp3\",
\"category\": \"Audios\"
}"
const url = new URL(
"https://www.podcaster.de/api/media/123456798/copy"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"label": "datei_version2.mp3",
"category": "Audios"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/media/123456798/copy';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'label' => 'datei_version2.mp3',
'category' => 'Audios',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/media/123456798/copy'
payload = {
"label": "datei_version2.mp3",
"category": "Audios"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get metadata
requires authentication
Retrieves the metadata of a mediafile
Example request:
curl --request GET \
--get "https://www.podcaster.de/api/media/eos/metadata" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"id\": 769315107.527036
}"
const url = new URL(
"https://www.podcaster.de/api/media/eos/metadata"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"id": 769315107.527036
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/media/eos/metadata';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'id' => 769315107.527036,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/media/eos/metadata'
payload = {
"id": 769315107.527036
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, json=payload)
response.json()
Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 179
access-control-allow-origin: *
{
"message": "Invalid key supplied"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update metadata
requires authentication
Change a mediafile's metadata
Example request:
curl --request PUT \
"https://www.podcaster.de/api/media/aut/metadata" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"image\": 1614.49714775
}"
const url = new URL(
"https://www.podcaster.de/api/media/aut/metadata"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"image": 1614.49714775
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/media/aut/metadata';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'image' => 1614.49714775,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/media/aut/metadata'
payload = {
"image": 1614.49714775
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Podcasts
List podcasts
requires authentication
Returns a list of podcasts. Accessible with scopes: feeds,feeds-read-only
Example request:
curl --request GET \
--get "https://www.podcaster.de/api/feeds?page%5Bnumber%5D=1&page%5Bsize%5D=10" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/feeds"
);
const params = {
"page[number]": "1",
"page[size]": "10",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feeds';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page[number]' => '1',
'page[size]' => '10',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/feeds'
params = {
'page[number]': '1',
'page[size]': '10',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
"data": [
{
"type": "feed",
"id": "sunt",
"links": {
"self": "https://www.podcaster.de/api/feeds/sunt",
"rss": "https://9umyj4.podcaster.de/sunt.rss",
"web": "",
"logo": ""
},
"attributes": {
"rss": {
"title": "Fugit ipsum et officia impedit adipisci ab.",
"description": "Enim dolorem dolores molestiae vel. Qui doloremque nisi voluptas odio temporibus omnis. Quae dolore aut iure voluptas hic quasi. Non numquam commodi sed est. Velit earum dolorem similique et. Sunt provident voluptas et quas consectetur et voluptatibus. Doloremque sunt cumque magni dolor quo. Qui qui voluptatem ab et ipsum et et veniam. Veritatis sed consequatur dolores. Unde nostrum sed at esse repellat nihil sed. Consequatur autem laudantium et est molestiae autem consequatur. Illo nam quo impedit praesentium dolorem sapiente deleniti. Iusto saepe reprehenderit suscipit rerum asperiores voluptas. Eos voluptatibus consequatur optio rerum minus perferendis. Ut quod in soluta cumque ut eos ab. Placeat quas occaecati aut corporis. Ipsum tempore tenetur esse. Quae eos quo eaque qui voluptatibus laudantium sed. Officia a vel similique eaque aperiam. Reprehenderit consequatur occaecati rem ut ut nostrum dicta. Sed delectus accusantium nihil et. Quam sequi veniam dolores aut a ipsa autem. Minima facilis quos et qui in quia. Aperiam a fugit aut aliquid dolores. Minima quaerat consectetur eum ipsum eveniet. Id perferendis sed ipsa sunt minima. Odio quod mollitia repellat consequatur aut id. Molestiae sapiente occaecati iure aliquam. Est earum earum reprehenderit. Enim et quam doloremque beatae. Ipsa repellat est quam ipsam. Sit quo cumque nam sit et. Qui sunt voluptas velit inventore est explicabo rerum. Adipisci cum totam aut maxime et veritatis consectetur vel. Hic illum iste rerum quod ipsam at autem explicabo. Deleniti itaque esse ut tempora iste praesentium veritatis. Odio aut beatae enim rem iusto. Amet qui enim ut iusto consequuntur. Suscipit neque corporis perferendis. Voluptas iusto quidem sapiente ad. Delectus eos ut at omnis libero et dolor. Animi quam laborum consequatur vero ut doloribus tempore. Praesentium nihil laudantium quas dolore. Fugit quia eaque repellendus debitis id. Molestiae quis eius et eaque aut et eaque. At modi id consequatur enim corporis libero molestiae nulla. Eos qui odio incidunt et. Voluptatibus ipsum natus id et. Adipisci tempore ea sapiente reprehenderit dolorum. Magni consectetur et sint. Sint laudantium eos laudantium vel est aut repellendus dolores. Qui mollitia debitis perferendis non eius excepturi. Corrupti qui delectus ut voluptas earum aliquid. Nihil nulla illo omnis sed quibusdam nihil. Praesentium veritatis molestiae temporibus. Qui itaque est ea optio ut distinctio impedit. Non ratione nisi sapiente. Cupiditate quo quod magni et et ut. Sit quae temporibus nemo qui numquam. Quas soluta distinctio quod consequuntur exercitationem. Veritatis culpa quia dolores dicta sit consequuntur. Veritatis maiores beatae quia quia vel molestias in itaque. Voluptatem voluptas voluptatum consequatur nostrum ipsam ut. Debitis perferendis unde error deserunt doloribus corporis et neque. Facilis fugit sit quo qui. Est aliquam commodi et mollitia qui dolorum voluptas. Accusamus aliquid sed adipisci fuga. Maiores porro rerum ipsum eos explicabo nobis. Dolorem id sunt harum illo quia esse suscipit. Et atque eius sed ut sunt aut. Alias eos odio voluptas voluptatibus et minus. Harum provident sit debitis quia incidunt beatae ullam excepturi. Nemo officia rem ab nemo quisquam dicta explicabo quasi. Non vitae rerum sunt distinctio et sequi praesentium et. Voluptatem sit culpa vel sequi porro nihil. Ad totam in nemo nemo ducimus quia ut. Totam a voluptas quibusdam dignissimos et non. Non earum qui eum expedita iste et. Qui quis facilis odit et corporis nobis. Ullam blanditiis laborum laudantium ut harum. Ipsa dolorum dolor voluptatem. Tempora expedita fugiat illo et aut qui excepturi perspiciatis. Neque est sunt sit temporibus non velit. Nam modi et error a aut dolorem alias. Laudantium qui qui omnis velit saepe deserunt mollitia. Error voluptates est velit sed corporis quia. Ut repellat magnam consequatur minus eos et quo. Illum rerum consequatur sit possimus. A eos consequatur dolores.",
"copyright": "Neque est libero omnis dolorem. Maiores vel rerum molestiae et et sed porro. Temporibus quod quo necessitatibus voluptatum et sunt ratione. Iusto aut voluptatum ad et ut animi et debitis."
},
"logo": ""
},
"shows_count": 1,
"relationships": [
"entry"
]
},
{
"type": "feed",
"id": "autem quos",
"links": {
"self": "https://www.podcaster.de/api/feeds/autem%20quos",
"rss": "https://ilnyd7.podcaster.de/autem quos.rss",
"web": "",
"logo": ""
},
"attributes": {
"rss": {
"title": "Consequatur magni pariatur vero deserunt et qui.",
"description": "Sint quo officiis animi non sit et est. Placeat rerum at quod et. Recusandae aperiam et et magni aut excepturi. Molestiae vitae cupiditate enim dolorum. Voluptatibus deserunt et quia explicabo dolorem. Deleniti quod repudiandae odio dolore veniam illo autem sunt. Sapiente sunt ullam ullam nesciunt optio magnam saepe. Sequi blanditiis cupiditate deleniti dolorem. Accusantium soluta consectetur totam. Sint quidem aut quod quod sit quo. Qui blanditiis quia non vitae nesciunt. Cumque dignissimos quis praesentium non magni qui. Quia libero corrupti libero voluptatem veritatis inventore soluta. Incidunt ipsam dolorem perferendis qui excepturi quisquam ea ipsum. Quam voluptate aliquid ipsam libero accusantium earum quis. Et sunt temporibus earum sit. Est iusto sint dolorum repellendus id eaque. Nam rerum impedit quo ad debitis in. Ut vitae aspernatur ut aperiam dolorum. Officia officia ut cumque reiciendis esse dolorem nisi. Deserunt temporibus quibusdam velit deserunt. Et accusamus possimus quae soluta ut. Velit autem ipsa doloremque qui sunt. Sunt assumenda facere repellendus eligendi distinctio tempore. Ad accusantium commodi dolores dolorum tempore alias. Esse animi veniam tempore aut sit. Provident eligendi quia non sit pariatur aut placeat. Aperiam nisi nihil magnam illum qui omnis libero. Sunt dicta voluptate debitis quia. In rerum sint et fuga rerum. Non ipsa qui dicta omnis ut a. Doloribus cupiditate expedita voluptatum et rerum omnis omnis. Voluptas totam aliquam enim eaque deserunt qui. Assumenda quia molestiae non occaecati. Aut enim rerum est itaque quis laboriosam. Omnis omnis pariatur sed cumque exercitationem. Aut distinctio magni deserunt molestiae eum fugit minus. Sit qui odit odit necessitatibus. Qui incidunt corrupti et quae veritatis excepturi eligendi. Ea eum exercitationem ullam nulla excepturi odio. Adipisci nihil sit at qui reprehenderit. Reprehenderit et voluptates rerum est maxime. Omnis minus labore dolorum neque in nobis. Beatae et molestiae nobis pariatur qui. Aspernatur aut molestiae sit alias amet. Dolore saepe quo sint enim aut ut exercitationem. Adipisci ullam et dolorem sit sit. Corrupti temporibus inventore harum. Autem numquam accusamus deserunt omnis. Et et voluptas ullam amet. Similique voluptate et voluptatibus officia. Ex adipisci magni sed recusandae. Illo pariatur dicta porro officiis quod iusto cumque. Enim omnis dolorum quia perferendis nihil. Laudantium enim nihil accusamus ut necessitatibus non saepe. At aut sit maxime voluptatum reiciendis aut. Quasi cumque qui occaecati aut dolorem quaerat ipsa. Odit debitis sunt incidunt. Et earum quaerat quisquam modi aliquam aspernatur non. Sed incidunt nesciunt est quis impedit. Sint ut magni aliquam cupiditate ut. Cum eos ipsam ipsa rerum. Qui in illo beatae. Et iste maiores illum aliquid ipsum. Ad voluptatem sint est porro in debitis delectus. Vero ut cumque nulla consequatur corrupti. Expedita non autem aut impedit. Asperiores quia beatae vero assumenda illum sapiente molestiae. Delectus doloremque culpa debitis officia necessitatibus. Sed eligendi nisi commodi placeat ipsa. Architecto et et laboriosam quas vitae sapiente. Nihil et et commodi. Voluptas sed corrupti vel cupiditate qui deserunt. Molestias esse et nobis quae ullam impedit. Voluptas ut laudantium accusantium perferendis reiciendis. Maiores fugit sit sed atque. Quas reiciendis ducimus qui in quis. Adipisci ullam blanditiis natus similique fugit. Totam qui molestiae sit porro. In vitae omnis magnam in voluptates neque autem. Maiores laudantium provident consequatur neque excepturi quia. Rerum eaque sapiente tempora nemo nobis et doloremque. Voluptatibus eaque molestiae totam quia molestiae. Accusamus aliquam reiciendis qui tempora dolorum. Repellat minima sed illum. Et eaque ad mollitia ipsa.",
"copyright": "Officiis sint cum eligendi. Ullam sint provident omnis et. Debitis exercitationem qui consequatur enim."
},
"logo": ""
},
"shows_count": 1,
"relationships": [
"entry"
]
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get podcast
requires authentication
Returns information about a podcast (feed). Accessible with scopes: feeds,feeds-read-only
Example request:
curl --request GET \
--get "https://www.podcaster.de/api/feeds/beispiel" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/feeds/beispiel"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feeds/beispiel';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/feeds/beispiel'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": {
"type": "feed",
"id": "omnis rerum sed",
"attributes": {
"rss": {
"title": "Rerum est aspernatur ab quia dolor corrupti accusantium.",
"description": "Est quam cumque animi placeat sint aut natus quo. Reprehenderit voluptas ut vel inventore voluptatem. Et laborum asperiores rerum. Non doloremque consequatur qui et. Vel et et blanditiis temporibus. Ab consectetur perspiciatis repudiandae. Soluta tempore aliquam et reprehenderit. Ut minima doloribus omnis illo consequatur occaecati. Illo et veritatis blanditiis rerum ab sint dicta. Et aliquam provident consequatur ut. Veritatis necessitatibus non reprehenderit iusto nostrum debitis maiores. Sed assumenda et et fugiat sequi quisquam. Harum eum aut quasi qui rerum. Et magni modi nostrum molestias. Consequuntur veniam odio at voluptas neque aperiam. Debitis illo temporibus possimus quia ducimus et qui. Quaerat aspernatur sit enim molestiae quibusdam consectetur. Omnis autem accusamus in sit voluptate est. Omnis aliquid aut quasi ut accusamus dolorem. Ipsum est enim qui culpa. Natus aut tempore sed nihil corporis dolorem sed. Aut architecto voluptatibus delectus ad. Velit inventore quos dolores ut. Est incidunt officia illum nisi earum. Nihil explicabo voluptatem aut quasi quia. Explicabo delectus molestias placeat et ea et accusantium. Voluptate sed vel quas est. Vel quaerat dicta ea sit atque eaque. Voluptas vel ullam qui. Id aspernatur sed explicabo qui. Veritatis ducimus delectus ullam voluptatibus quas accusantium corrupti. Consectetur recusandae vero voluptatibus perferendis rerum voluptas possimus eos. Id dolore incidunt animi iure non. Sit aut id illo aperiam dolore amet. In occaecati dolore neque esse officiis dolores quos id. Aut rerum et at. Id vel sed autem molestias ab in. Aliquam laudantium quod ut iste voluptatem vel impedit doloribus. Voluptatibus aut ut explicabo voluptatem quis perferendis possimus. Accusantium suscipit aut nobis et. Sequi ullam expedita excepturi ut laborum ipsa eveniet. Quia itaque similique quia et et. Blanditiis iure quia ratione magnam quidem enim asperiores molestiae. Ducimus magni facere facilis. Quas aspernatur alias sunt dicta. Iure suscipit non minima. Error praesentium blanditiis aut facere. Sequi non accusantium voluptatem ut praesentium. Hic voluptas et labore est. Aliquam autem illum excepturi qui. Sequi dolore pariatur cumque sit ipsa et doloribus distinctio. In sed doloribus nihil. Aliquid est ea beatae ratione. Molestiae optio asperiores et mollitia occaecati. Molestiae neque eveniet reiciendis aut non ea. Sapiente voluptatem delectus sit ab. Fugit nisi dicta id tempora rerum atque sed. Ipsa rerum voluptatem in dolore quo. In vitae aspernatur laboriosam qui repudiandae harum. Repudiandae unde voluptatum earum nam. Et est et enim molestias vel aut. Unde aut quod illum vel pariatur corporis pariatur. Dolores aliquam deleniti qui. Id nam id eius sapiente est facere earum. Repellat vitae qui eum dolor omnis ducimus sint aliquam. Rerum aut nihil dolores itaque reprehenderit sapiente sint. Dolor dolorem ratione iure ut. Aliquam possimus qui quo. Voluptatum est fugiat quo temporibus. Esse omnis nam et sunt et necessitatibus. Quia voluptas mollitia doloribus iure quia necessitatibus. Et aut eum consequatur quis sit neque asperiores. Inventore sit nisi enim quisquam. Tempore repellat rerum eum impedit molestiae corporis. Minus consequatur at aspernatur. Consequuntur enim dolores deleniti porro. Accusamus qui et est autem ratione. Qui itaque numquam ut. Sit rerum qui recusandae sequi et nihil dolores. Qui magnam iste sit ea veritatis minima. Consequatur excepturi asperiores odio. Voluptatum enim dignissimos doloribus quia dolorem. Labore est facilis perspiciatis nobis. Architecto saepe corporis voluptas eius. Delectus officiis quod voluptatum asperiores. Sed et tempora est eum consequatur sapiente velit. Aut quia vel id vitae. Ut quae mollitia aperiam eaque ut doloremque aut. Aut ipsum eum non. Distinctio sed non aliquam quaerat qui enim. Voluptatem exercitationem quisquam culpa distinctio ut. Et ea modi officia provident commodi. Quia qui voluptatibus commodi qui.",
"copyright": "Quia culpa sit eos dolorem ipsam facere. Ducimus et velit beatae deleniti. A non iusto aut eum voluptatibus nobis. Vel quia nihil accusamus. Molestias similique eum odit quisquam et est voluptatem. Minus dolorum et impedit expedita."
},
"itunes": {
"subtitle": "Amet facilis eum omnis quia."
},
"googleplay": {
"author": "Albert Schulte",
"description": "Nemo exercitationem autem nam velit nemo. Voluptas saepe non harum eos sint fuga. Illum officiis dolorem perspiciatis quia quo."
},
"logo": ""
},
"links": {
"self": "https://www.podcaster.de/api/feeds/omnis%20rerum%20sed",
"rss": "https://6akxg7.podcaster.de/omnis rerum sed.rss",
"web": "",
"logo": ""
},
"shows_count": 1,
"relationships": [
"entry"
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete podcast
requires authentication
Caution Removes a podcast. Accessible with scope: feeds
Example request:
curl --request DELETE \
"https://www.podcaster.de/api/feeds/beispiel" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/feeds/beispiel"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feeds/beispiel';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/feeds/beispiel'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Shows
List episodes
requires authentication
Returns a list of episodes (shows) belonging to a podcast feed. Accessible with scopes: shows,shows-read-only
Example request:
curl --request GET \
--get "https://www.podcaster.de/api/feed/beispiel/shows?page[number]=88&page[size]=11&sortBy=lastUpdate&sortDesc=desc&page%5Bnumber%5D=1&page%5Bsize%5D=10" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"filter\": \"Kurzfilm\"
}"
const url = new URL(
"https://www.podcaster.de/api/feed/beispiel/shows"
);
const params = {
"page[number]": "88",
"page[size]": "11",
"sortBy": "lastUpdate",
"sortDesc": "desc",
"page[number]": "1",
"page[size]": "10",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"filter": "Kurzfilm"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/beispiel/shows';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page[number]' => '88',
'page[size]' => '11',
'sortBy' => 'lastUpdate',
'sortDesc' => 'desc',
'page[number]' => '1',
'page[size]' => '10',
],
'json' => [
'filter' => 'Kurzfilm',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/feed/beispiel/shows'
payload = {
"filter": "Kurzfilm"
}
params = {
'page[number]': '88',
'page[size]': '11',
'sortBy': 'lastUpdate',
'sortDesc': 'desc',
'page[number]': '1',
'page[size]': '10',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()
Example response (200):
{
"data": [
{
"type": "show",
"id": "pod-5ea2082c6bc37297937508",
"feed_id": "Der_Podcast",
"links": {
"self": "https://api.podcaster.sattoaster/api/shows/pod-5ea2082c6bc37297937508?feedId=Der_Podcast",
"web": "https://beispiel.podcaster.de/der_podcast/beispiel-013/",
"logo": "",
"media": ""
},
"attributes": {
"title": "Beispiel #013",
"description": "Dies ist eine Beispiel-Episode für den Podcast-Hostingservice podcaster.de",
"author": "beispiel@kundendomain.me (Fabio Bacigalupo)",
"link": "https://beispiel.podcaster.de/der_podcast/beispiel-013/",
"copyright": "podcaster.de",
"logo": "",
"guid": "pod-5ea2082c6bc37297937508",
"publish_date": "1587677228",
"publish_date_formatted": "23.04.2020, 23:27 Uhr",
"is_published": "0",
"file": "",
"enclosure_url": "",
"itunes": {
"title": "Nur als Entwurf",
"subtitle": "",
"logo": "1587677200",
"summary": "",
"episodeType": "full",
"author": "Fabio Bacigalupo",
"duration": "00:05:08",
"season": "",
"episode": ""
},
"type": "unknown",
"duration_formatted": "5m 8s"
},
"relationships": [
"entry"
]
},
{
"type": "show",
"id": "pod-5cc21955598f7405476263",
"feed_id": "Der_Podcast",
"links": {
"self": "https://api.podcaster.sattoaster/api/shows/pod-5cc21955598f7405476263?feedId=Der_Podcast",
"web": "https://beispiel.podcaster.de/der_podcast/beispiel-folge-xyz-011/",
"logo": "",
"media": ""
},
"attributes": {
"title": "#012 Beispiel-Folge",
"description": "<div>Dies ist eine Beispiel-Episode für den Podcast-Hostingservice podcaster.de <br></div><div></div>\n\nIn der Folge wird erklärt, was ein Podcast ist.",
"author": "beispiel@kundendomain.me (Fabio Bacigalupo)",
"link": "https://beispiel.podcaster.de/der_podcast/beispiel-folge-xyz-011/",
"copyright": "podcaster.de",
"logo": "",
"guid": "pod-5cc21955598f7405476263",
"publish_date": "1557908895",
"publish_date_formatted": "15.05.2019, 10:28 Uhr",
"is_published": 1,
"file": "",
"enclosure_url": "",
"itunes": {
"title": "Beispiel-Folge xyz",
"subtitle": "xyz sagt alles",
"logo": "1555322159",
"summary": "",
"episodeType": "full",
"author": "Fabio Bacigalupo",
"duration": "00:05:08",
"season": "1",
"episode": "10"
},
"type": "unknown",
"duration_formatted": "5m 8s"
},
"relationships": [
"entry"
]
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get episode
requires authentication
Gets details of an episode. Accessible with scopes: shows,shows-read-only
Example request:
curl --request GET \
--get "https://www.podcaster.de/api/feed/LuchaTrashTalk/show/pod-1234567890?feed_id=beispiel" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/feed/LuchaTrashTalk/show/pod-1234567890"
);
const params = {
"feed_id": "beispiel",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/LuchaTrashTalk/show/pod-1234567890';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'feed_id' => 'beispiel',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/feed/LuchaTrashTalk/show/pod-1234567890'
params = {
'feed_id': 'beispiel',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
"data": {
"type": "show",
"id": "pod-5ea2082c6bc37297937508",
"feed_id": "Der_Podcast",
"attributes": {
"title": "Beispiel #013",
"subtitle": "",
"link": "https://beispiel.podcaster.de/der_podcast/beispiel-013/",
"description": "Dies ist eine Beispiel-Episode für den Podcast-Hostingservice podcaster.de",
"author": "beispiel@kundendomain.me (Fabio Bacigalupo)",
"email": "",
"copyright": "podcaster.de",
"itunes": {
"title": "Nur als Entwurf",
"subtitle": "",
"logo": "1587677200",
"summary": "",
"episodeType": "full",
"author": "Fabio Bacigalupo",
"duration": "00:05:08",
"season": "",
"episode": ""
}
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create episode
requires authentication
Adds a new episode. Accessible with scope: shows
Example request:
curl --request POST \
"https://www.podcaster.de/api/feed/beispiel/show" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "guid=iusto"\
--form "title=#21 - Spannende Erkenntnisse über Podcasting"\
--form "author=Maxima Musterfrau"\
--form "copyright=Podcast-Team MM"\
--form "is_public=1"\
--form "description="\
--form "itunes[title]=Spannende Erkenntnisse über Podcasting"\
--form "itunes[subtitle]=Dinge, die Du noch nicht wusstest"\
--form "itunes[summary]=Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt."\
--form "itunes[episode]=21"\
--form "itunes[episodeType]=full"\
--form "itunes[season]=4"\
--form "itunes[logo]=2435456"\
--form "itunes[explicit]=1"\
--form "itunes[author]=Bastian Albert, Fabio Bacigalupo"\
--form "publishing_date=2023-05-01"\
--form "publishing_time=12:10:59"\
--form "link=https://mein-blog-zum.podcast/s-e-u-p"\
--form "show_media=12345"\
--form "podcastindex[transcript]=291820442"\
--form "write_metadata="\
--form "media=@/tmp/phpSnz29m" \
--form "cover=@/tmp/phpWHV3Od"
const url = new URL(
"https://www.podcaster.de/api/feed/beispiel/show"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('guid', 'iusto');
body.append('title', '#21 - Spannende Erkenntnisse über Podcasting');
body.append('author', 'Maxima Musterfrau');
body.append('copyright', 'Podcast-Team MM');
body.append('is_public', '1');
body.append('description', '');
body.append('itunes[title]', 'Spannende Erkenntnisse über Podcasting');
body.append('itunes[subtitle]', 'Dinge, die Du noch nicht wusstest');
body.append('itunes[summary]', 'Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.');
body.append('itunes[episode]', '21');
body.append('itunes[episodeType]', 'full');
body.append('itunes[season]', '4');
body.append('itunes[logo]', '2435456');
body.append('itunes[explicit]', '1');
body.append('itunes[author]', 'Bastian Albert, Fabio Bacigalupo');
body.append('publishing_date', '2023-05-01');
body.append('publishing_time', '12:10:59');
body.append('link', 'https://mein-blog-zum.podcast/s-e-u-p');
body.append('show_media', '12345');
body.append('podcastindex[transcript]', '291820442');
body.append('write_metadata', '');
body.append('media', document.querySelector('input[name="media"]').files[0]);
body.append('cover', document.querySelector('input[name="cover"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/beispiel/show';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'multipart/form-data',
'Accept' => 'application/json',
],
'multipart' => [
[
'name' => 'guid',
'contents' => 'iusto'
],
[
'name' => 'title',
'contents' => '#21 - Spannende Erkenntnisse über Podcasting'
],
[
'name' => 'author',
'contents' => 'Maxima Musterfrau'
],
[
'name' => 'copyright',
'contents' => 'Podcast-Team MM'
],
[
'name' => 'is_public',
'contents' => '1'
],
[
'name' => 'description',
'contents' => ''
],
[
'name' => 'itunes[title]',
'contents' => 'Spannende Erkenntnisse über Podcasting'
],
[
'name' => 'itunes[subtitle]',
'contents' => 'Dinge, die Du noch nicht wusstest'
],
[
'name' => 'itunes[summary]',
'contents' => 'Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.'
],
[
'name' => 'itunes[episode]',
'contents' => '21'
],
[
'name' => 'itunes[episodeType]',
'contents' => 'full'
],
[
'name' => 'itunes[season]',
'contents' => '4'
],
[
'name' => 'itunes[logo]',
'contents' => '2435456'
],
[
'name' => 'itunes[explicit]',
'contents' => '1'
],
[
'name' => 'itunes[author]',
'contents' => 'Bastian Albert, Fabio Bacigalupo'
],
[
'name' => 'publishing_date',
'contents' => '2023-05-01'
],
[
'name' => 'publishing_time',
'contents' => '12:10:59'
],
[
'name' => 'link',
'contents' => 'https://mein-blog-zum.podcast/s-e-u-p'
],
[
'name' => 'show_media',
'contents' => '12345'
],
[
'name' => 'podcastindex[transcript]',
'contents' => '291820442'
],
[
'name' => 'write_metadata',
'contents' => ''
],
[
'name' => 'media',
'contents' => fopen('/tmp/phpSnz29m', 'r')
],
[
'name' => 'cover',
'contents' => fopen('/tmp/phpWHV3Od', 'r')
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/feed/beispiel/show'
files = {
'guid': (None, 'iusto'),
'title': (None, '#21 - Spannende Erkenntnisse über Podcasting'),
'author': (None, 'Maxima Musterfrau'),
'copyright': (None, 'Podcast-Team MM'),
'is_public': (None, '1'),
'description': (None, ''),
'itunes[title]': (None, 'Spannende Erkenntnisse über Podcasting'),
'itunes[subtitle]': (None, 'Dinge, die Du noch nicht wusstest'),
'itunes[summary]': (None, 'Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.'),
'itunes[episode]': (None, '21'),
'itunes[episodeType]': (None, 'full'),
'itunes[season]': (None, '4'),
'itunes[logo]': (None, '2435456'),
'itunes[explicit]': (None, '1'),
'itunes[author]': (None, 'Bastian Albert, Fabio Bacigalupo'),
'publishing_date': (None, '2023-05-01'),
'publishing_time': (None, '12:10:59'),
'link': (None, 'https://mein-blog-zum.podcast/s-e-u-p'),
'show_media': (None, '12345'),
'podcastindex[transcript]': (None, '291820442'),
'write_metadata': (None, ''),
'media': open('/tmp/phpSnz29m', 'rb'),
'cover': open('/tmp/phpWHV3Od', 'rb')}
payload = {
"guid": "iusto",
"title": "#21 - Spannende Erkenntnisse über Podcasting",
"author": "Maxima Musterfrau",
"copyright": "Podcast-Team MM",
"is_public": 1,
"description": "",
"itunes": {
"title": "Spannende Erkenntnisse über Podcasting",
"subtitle": "Dinge, die Du noch nicht wusstest",
"summary": "Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.",
"episode": 21,
"episodeType": "full",
"season": "4",
"logo": 2435456,
"explicit": true,
"author": "Bastian Albert, Fabio Bacigalupo"
},
"publishing_date": "2023-05-01",
"publishing_time": "12:10:59",
"link": "https:\/\/mein-blog-zum.podcast\/s-e-u-p",
"show_media": 12345,
"podcastindex": {
"transcript": 291820442
},
"write_metadata": false
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, files=files)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update episode
requires authentication
Updates details of an episode. Accessible with scope: shows
Example request:
curl --request PUT \
"https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"title\": \"#21 - Spannende Erkenntnisse über Podcasting\",
\"author\": \"oddbcuvpzwuvi\",
\"copyright\": \"ursbzbzpfma\",
\"is_public\": 1,
\"description\": \"Dolorem molestias qui in facilis animi ut.\",
\"itunes\": {
\"title\": \"Spannende Erkenntnisse über Podcasting\",
\"subtitle\": \"Dinge, die Du noch nicht wusstest\",
\"summary\": \"Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.\",
\"episode\": 21,
\"episodeType\": \"full\",
\"season\": \"4\",
\"logo\": 2435456,
\"explicit\": true,
\"author\": \"Bastian Albert, Fabio Bacigalupo\"
},
\"publishing_date\": \"2023-05-01\",
\"publishing_time\": \"12:10:59\",
\"link\": \"https:\\/\\/mein-blog-zum.podcast\\/s-e-u-p\",
\"show_media\": 12345,
\"podcastindex\": {
\"transcript\": 2.1
},
\"write_metadata\": false
}"
const url = new URL(
"https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"title": "#21 - Spannende Erkenntnisse über Podcasting",
"author": "oddbcuvpzwuvi",
"copyright": "ursbzbzpfma",
"is_public": 1,
"description": "Dolorem molestias qui in facilis animi ut.",
"itunes": {
"title": "Spannende Erkenntnisse über Podcasting",
"subtitle": "Dinge, die Du noch nicht wusstest",
"summary": "Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.",
"episode": 21,
"episodeType": "full",
"season": "4",
"logo": 2435456,
"explicit": true,
"author": "Bastian Albert, Fabio Bacigalupo"
},
"publishing_date": "2023-05-01",
"publishing_time": "12:10:59",
"link": "https:\/\/mein-blog-zum.podcast\/s-e-u-p",
"show_media": 12345,
"podcastindex": {
"transcript": 2.1
},
"write_metadata": false
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'title' => '#21 - Spannende Erkenntnisse über Podcasting',
'author' => 'oddbcuvpzwuvi',
'copyright' => 'ursbzbzpfma',
'is_public' => 1,
'description' => 'Dolorem molestias qui in facilis animi ut.',
'itunes' => [
'title' => 'Spannende Erkenntnisse über Podcasting',
'subtitle' => 'Dinge, die Du noch nicht wusstest',
'summary' => 'Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.',
'episode' => 21,
'episodeType' => 'full',
'season' => '4',
'logo' => 2435456,
'explicit' => true,
'author' => 'Bastian Albert, Fabio Bacigalupo',
],
'publishing_date' => '2023-05-01',
'publishing_time' => '12:10:59',
'link' => 'https://mein-blog-zum.podcast/s-e-u-p',
'show_media' => 12345,
'podcastindex' => [
'transcript' => 2.1,
],
'write_metadata' => false,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890'
payload = {
"title": "#21 - Spannende Erkenntnisse über Podcasting",
"author": "oddbcuvpzwuvi",
"copyright": "ursbzbzpfma",
"is_public": 1,
"description": "Dolorem molestias qui in facilis animi ut.",
"itunes": {
"title": "Spannende Erkenntnisse über Podcasting",
"subtitle": "Dinge, die Du noch nicht wusstest",
"summary": "Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.",
"episode": 21,
"episodeType": "full",
"season": "4",
"logo": 2435456,
"explicit": true,
"author": "Bastian Albert, Fabio Bacigalupo"
},
"publishing_date": "2023-05-01",
"publishing_time": "12:10:59",
"link": "https:\/\/mein-blog-zum.podcast\/s-e-u-p",
"show_media": 12345,
"podcastindex": {
"transcript": 2.1
},
"write_metadata": false
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete episode
requires authentication
Removes a show from a podcast (and the feed). Accessible with scope: shows
Example request:
curl --request DELETE \
"https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Copy episode
requires authentication
Creates a copy of a show. You can create a duplicate within the same podcast or copy the show to another podcast.
The copy is always saved with status draft
.
Accessible with scope: shows
Example request:
curl --request POST \
"https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/copy?feed_id_to=test" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/copy"
);
const params = {
"feed_id_to": "test",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/copy';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'feed_id_to' => 'test',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/copy'
params = {
'feed_id_to': 'test',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, params=params)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Move episode
requires authentication
Moves a show from one podcast to another.
Accessible with scope: shows
Example request:
curl --request POST \
"https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/move/test" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/move/test"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/move/test';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/move/test'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
User
Get user
requires authentication
Fetches details about authenticated user.
Example request:
curl --request GET \
--get "https://www.podcaster.de/api/user" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.podcaster.de/api/user"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/user';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/user'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": {
"type": "user",
"id": 21537,
"attributes": {
"id": 21537,
"name": "Beatrice Sauter",
"first_name": "Beatrice",
"last_name": "Sauter",
"username": "awulf",
"email": "seiler.annegret@example.org",
"name_title": null,
"telephone": "+49 375 0748042",
"telefax": "+49 5048 737 854",
"url": "http://bischoff.de/nisi-nisi-illum-enim-nisi-veniam-voluptas",
"organisation": "Ahrens",
"department": null,
"street": "Hoffmannstr.",
"housenumber": "Seifertweg 97a",
"city": "Stuhr",
"country": "VC",
"post_code": "83922",
"representative": null,
"mediarepresentative": null,
"register_court": null,
"register_number": null,
"board": null,
"chairman": null,
"controlling_authority": null,
"additional_specifications": null
},
"links": {
"self": "https://www.podcaster.de/api/user"
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update user
requires authentication
Updates details of a podcast. Accessible with scope: feeds
Example request:
curl --request PUT \
"https://www.podcaster.de/api/user/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name_title\": \"Prof\",
\"first_name\": \"Fabio\",
\"last_name\": \"Bacigalupo\",
\"telephone\": \"030-549072653\",
\"telefax\": \"030-549072660\",
\"url\": \"https:\\/\\/www.podcaster.de\",
\"organisation\": \"Podcast Plattform\",
\"department\": \"IT\",
\"street\": \"Brunnenstraße\",
\"housenumber\": \"147\",
\"city\": \"Berlin\",
\"country\": \"DE\",
\"post_code\": \"10115\",
\"representative\": \"Fabio Bacigalupo\",
\"mediarepresentative\": \"Steffen Wrede\",
\"register_court\": \"Berlin\",
\"register_number\": \"1234567890\",
\"board\": \"Yvonne Ständin\",
\"chairman\": \"Frauke Vorsätzer\",
\"controlling_authority\": \"Bafa\",
\"additional_specifications\": \"Hier kann ein beliebiger Freitext ergänzt werden.\",
\"organisiation\": \"\'Podcast Plattform\'\"
}"
const url = new URL(
"https://www.podcaster.de/api/user/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name_title": "Prof",
"first_name": "Fabio",
"last_name": "Bacigalupo",
"telephone": "030-549072653",
"telefax": "030-549072660",
"url": "https:\/\/www.podcaster.de",
"organisation": "Podcast Plattform",
"department": "IT",
"street": "Brunnenstraße",
"housenumber": "147",
"city": "Berlin",
"country": "DE",
"post_code": "10115",
"representative": "Fabio Bacigalupo",
"mediarepresentative": "Steffen Wrede",
"register_court": "Berlin",
"register_number": "1234567890",
"board": "Yvonne Ständin",
"chairman": "Frauke Vorsätzer",
"controlling_authority": "Bafa",
"additional_specifications": "Hier kann ein beliebiger Freitext ergänzt werden.",
"organisiation": "'Podcast Plattform'"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/user/1';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name_title' => 'Prof',
'first_name' => 'Fabio',
'last_name' => 'Bacigalupo',
'telephone' => '030-549072653',
'telefax' => '030-549072660',
'url' => 'https://www.podcaster.de',
'organisation' => 'Podcast Plattform',
'department' => 'IT',
'street' => 'Brunnenstraße',
'housenumber' => '147',
'city' => 'Berlin',
'country' => 'DE',
'post_code' => '10115',
'representative' => 'Fabio Bacigalupo',
'mediarepresentative' => 'Steffen Wrede',
'register_court' => 'Berlin',
'register_number' => '1234567890',
'board' => 'Yvonne Ständin',
'chairman' => 'Frauke Vorsätzer',
'controlling_authority' => 'Bafa',
'additional_specifications' => 'Hier kann ein beliebiger Freitext ergänzt werden.',
'organisiation' => '\'Podcast Plattform\'',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://www.podcaster.de/api/user/1'
payload = {
"name_title": "Prof",
"first_name": "Fabio",
"last_name": "Bacigalupo",
"telephone": "030-549072653",
"telefax": "030-549072660",
"url": "https:\/\/www.podcaster.de",
"organisation": "Podcast Plattform",
"department": "IT",
"street": "Brunnenstraße",
"housenumber": "147",
"city": "Berlin",
"country": "DE",
"post_code": "10115",
"representative": "Fabio Bacigalupo",
"mediarepresentative": "Steffen Wrede",
"register_court": "Berlin",
"register_number": "1234567890",
"board": "Yvonne Ständin",
"chairman": "Frauke Vorsätzer",
"controlling_authority": "Bafa",
"additional_specifications": "Hier kann ein beliebiger Freitext ergänzt werden.",
"organisiation": "'Podcast Plattform'"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.