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()
Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 169
access-control-allow-origin: *
{
"message": "Class \"Spatie\\WebhookClient\\ProcessWebhookJob\" not found"
}
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/phpyljqmv"
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/phpyljqmv', '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/phpyljqmv', '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()
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.
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()
Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 178
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.
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()
Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 177
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.
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": "sed dolorum vel",
"links": {
"self": "https://www.podcaster.de/api/feeds/sed%20dolorum%20vel",
"rss": "https://wmj7dy.podcaster.de/sed dolorum vel.rss",
"web": "",
"logo": ""
},
"attributes": {
"rss": {
"title": "Minima aut et ut beatae ut nesciunt.",
"description": "Non enim exercitationem quisquam aut. Ipsam velit eum unde et. Numquam consequatur placeat debitis nostrum quisquam ipsa. Eius illo voluptatibus aperiam eveniet consequatur sint. Incidunt ab ex et vel. A dolores minus et expedita maiores unde rerum. Illum qui consectetur qui a. Quis velit nihil nobis sit nisi cumque voluptas. Iusto incidunt rem quidem aperiam. Autem est rerum dignissimos beatae modi. Tempore adipisci et molestias consequatur laudantium voluptatem et qui. Quod quasi quas animi non. Placeat cumque non dolorum cumque. Ut nobis corporis temporibus voluptatem. Nam placeat ut ducimus. Temporibus aspernatur quo nulla quod. Sit temporibus in recusandae tempore quia ut. Qui officiis est qui. Velit nesciunt facere repellat nostrum. Nam voluptatem optio nihil ut atque fugit rerum. Odit molestias est saepe sed sed dolorem nemo minus. Voluptas et sunt explicabo molestiae sit. Est qui optio perferendis. Aut eum quasi totam amet aut libero. Dolorum et sit vero necessitatibus. Sapiente quod omnis earum consectetur possimus aut. Optio tempora recusandae rerum magnam. Optio nulla aut et ab tempore ea et. Eum dolores similique occaecati at qui placeat fuga. Dignissimos qui aliquam expedita alias dolores voluptates fugiat. Voluptas est et repellat rerum quod et magni. Ut dignissimos impedit voluptatibus quis consequatur. Animi accusantium sint ipsum amet necessitatibus molestias facere qui. Nihil dignissimos ab atque. Magni et molestiae esse voluptas. Repudiandae et aut aut reiciendis cupiditate. Rem dolorum id alias. Corrupti rem odit ipsum sed perspiciatis culpa fuga. Vitae est necessitatibus vero repellendus nihil aut. Ut ut deserunt a molestias nostrum est. Aut quisquam in harum possimus et. Esse cum aut dolor at recusandae ea aut. Doloribus ipsa inventore necessitatibus dicta voluptatem ducimus in. Illum amet repudiandae fugit odio aut non culpa alias. Nesciunt aliquid enim soluta dolores doloribus. Alias voluptate ea voluptatem rerum. Ut ratione facere hic quaerat adipisci aperiam dolore velit. Beatae vitae dolor aperiam tempore vero. Exercitationem omnis velit id nulla quos quia hic. A et labore est ut vel similique omnis autem. Repellendus quisquam in eius beatae. Adipisci perspiciatis culpa voluptatem odio consequatur fuga aliquam soluta. Ut et et quis et sapiente temporibus. Maxime qui voluptas nesciunt cupiditate id. Quidem corporis quibusdam est ea laboriosam facere voluptatibus. Mollitia autem maxime magni enim commodi rerum. Excepturi ducimus inventore necessitatibus dolorem. Non quis quam sunt. Autem qui est itaque impedit. Tempora exercitationem dolor ullam repellendus. Ut qui omnis voluptatem reprehenderit architecto velit. Culpa labore accusamus sint sunt sunt in sequi. Impedit odit sit atque cupiditate enim. Aperiam libero esse molestiae accusantium repellendus. Et ullam rerum voluptas dolor dolor aut autem. Cupiditate qui ut nulla est delectus omnis. Dolores tenetur dolor sed quasi rem dignissimos necessitatibus quia. Incidunt accusantium et id rerum ut ducimus rerum. Iusto perferendis ipsa numquam deserunt quam ut neque. Natus assumenda neque nihil laboriosam cum quisquam qui. Impedit nulla odio dolorem quasi beatae. Fugiat qui natus quos veritatis. Atque necessitatibus aut ab est odit nesciunt et. Voluptatem fugit delectus quia exercitationem. Aperiam beatae neque ullam qui ab. Quia velit quia rem tenetur dolor alias nobis. Deserunt voluptatem non eos exercitationem consequatur necessitatibus nesciunt id. Necessitatibus fugiat rem quo eum natus consequatur et. Quo a qui minima incidunt vel a veniam. Voluptatem in tenetur non. Et in doloribus dicta quis magnam aut et officia. In recusandae libero repellat itaque consectetur. Sunt sed in qui placeat ut est nobis. Explicabo animi itaque eum ut dolorem.",
"copyright": "Sed ab minus aliquam et aut. Temporibus vel suscipit molestiae veniam."
},
"logo": ""
},
"shows_count": 1,
"relationships": [
"entry"
]
},
{
"type": "feed",
"id": "molestiae quis",
"links": {
"self": "https://www.podcaster.de/api/feeds/molestiae%20quis",
"rss": "https://15eyvjh.podcaster.de/molestiae quis.rss",
"web": "",
"logo": ""
},
"attributes": {
"rss": {
"title": "Voluptatem ducimus hic voluptates et sit.",
"description": "Exercitationem quis nulla est velit veniam occaecati non. Ipsam perferendis facilis reiciendis quos autem voluptatem aspernatur deleniti. Temporibus eaque sequi ipsa harum dolorem molestias. Quos enim illum mollitia neque distinctio quia. Ut dignissimos ut ea velit velit vel. Voluptas exercitationem voluptatem modi quaerat ut. Earum illum voluptatum voluptas animi dolores consequatur ducimus et. Fuga deserunt velit est sint. Perspiciatis aut dolores et placeat sint earum. In itaque cumque sapiente cupiditate iste. Consequatur et ullam iure dolor sed. Tenetur id repellendus illum autem. Occaecati enim possimus animi sequi non. Harum itaque perferendis sit architecto occaecati maiores. Magnam soluta est dolor qui aut natus eius. Doloribus reiciendis neque eius mollitia qui ad at. Alias fugiat laborum dignissimos veritatis perspiciatis non. Necessitatibus rerum saepe dolorum. Quos consequatur praesentium rerum id iusto eius ea sed. Eius excepturi sint nulla est occaecati nihil rerum. Possimus consequatur eius reprehenderit dolores debitis. Et architecto officiis libero. Nesciunt vero iure soluta impedit. Et repellendus distinctio consequatur ab. Deserunt laboriosam atque consequuntur laudantium molestias nobis. Est reprehenderit quisquam labore et dolor natus qui nesciunt. At accusamus inventore non non maiores. Rem vitae assumenda in non sunt delectus dolores. Fuga saepe fugit expedita odio quam. Repudiandae magnam commodi fuga aspernatur. Vero molestiae possimus esse sit. Est maiores quia dicta voluptatem autem optio. Voluptatem nihil reprehenderit rerum porro. Qui excepturi enim placeat optio ex quibusdam. Voluptatum et et voluptates est ea. Est maxime odio animi et. Laudantium possimus asperiores dicta nihil. Et maiores laboriosam quo doloremque ipsum. Soluta quis tenetur incidunt vitae. Aut excepturi possimus mollitia cupiditate doloribus quasi. Et et impedit quis eum nihil optio voluptas. Quibusdam rerum debitis qui et. Odit velit ab voluptatum culpa. Voluptatem velit id cupiditate dignissimos. Qui omnis fuga quas neque recusandae occaecati hic. Ex aliquid corporis aspernatur est eum autem. Sint officiis voluptatem eaque consequatur vero dicta architecto. Velit itaque consectetur vel voluptatem consequatur ipsa inventore et. Aperiam ullam perferendis ut qui. Rerum quo similique et eos in minima repellendus. Voluptatem quia beatae accusantium qui sit eos. Vero ab qui atque. Eos fugiat fugiat officiis. Omnis occaecati error libero animi ut accusantium ducimus. Et id qui quia officiis voluptatem autem. Porro aut accusamus sequi fugit ut impedit neque. Sint at facilis libero blanditiis. Doloremque qui minima recusandae rem placeat. Cum laudantium nisi non et porro reiciendis tenetur. Aut temporibus ad possimus expedita et et. Qui alias magni quia soluta et rerum magni. Explicabo dicta dolorem suscipit perferendis. Dolores molestiae nemo consequatur quo. Vitae omnis iure maxime reiciendis qui quam nihil at. Adipisci alias deleniti magni facilis quidem sit. Nostrum voluptatem in deleniti illo velit ex. Qui libero consequatur laborum corporis accusamus culpa sed. Pariatur et aperiam earum voluptates. Et molestiae voluptatem dolores ut. Sint vero aliquid amet rerum expedita. Aut aut numquam illo tempora pariatur non sint. At et aut exercitationem reprehenderit labore. Corporis libero voluptatem laboriosam quis quisquam aut. Voluptatem quia similique iure itaque ex mollitia assumenda. Tenetur sed aliquid voluptas est qui doloremque. Placeat et dignissimos consectetur deserunt. Sit rem ut id. Fugit velit quia voluptate cupiditate nihil vero magnam. Optio ut consequatur aut est. Cum occaecati nostrum dolorem eum. Qui provident consequatur atque enim dolore necessitatibus officia numquam. Error est quae adipisci reiciendis nemo ullam dolorum. Pariatur itaque est animi vero accusantium quam aut molestias. Rerum ea unde aut. Cupiditate praesentium culpa mollitia maxime laboriosam.",
"copyright": "Consequatur consectetur ab ea. Repellat fugiat optio est odit sunt. Quaerat eligendi quidem odit. Et voluptatem non fugiat esse dolores nobis. Et sit molestiae nobis animi. Placeat vel non quae non. Aliquam voluptatum minus aperiam consectetur."
},
"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": "aut dicta",
"attributes": {
"rss": {
"title": "Vitae laborum delectus qui quidem quia laudantium.",
"description": "Quisquam veritatis sapiente error repellat reprehenderit similique eligendi incidunt. Et fugit distinctio quia ipsam. Numquam est incidunt tenetur odit autem non et. Aut quis fuga qui qui saepe ab. Fuga nihil dolorum aut. Odio fuga et voluptas voluptas necessitatibus nihil. In qui quo est et adipisci quia. Nam velit dolor ab et aliquam tenetur. Est eius sapiente hic suscipit quidem. Omnis eum quasi officia doloribus. Fugit quam veniam quod quae voluptas quis. Esse occaecati laudantium laudantium veritatis ut odio quaerat. Est ut molestias ex temporibus numquam quia sunt. Vitae quod debitis vel sunt ducimus ipsam. Sequi explicabo quis reprehenderit alias. Voluptate ea molestiae dolores sunt eos. Quae consequatur ea ut assumenda nostrum tenetur. Ab non sequi atque quis illum est. Voluptas natus quo perspiciatis. Temporibus illum voluptas voluptate natus perspiciatis commodi non. Dolores explicabo et ut magni. Sint non aut ex rem. Dolor maiores id exercitationem ea. Earum vitae animi et rerum harum et. Itaque dolorum quis labore ex enim modi nulla. Laboriosam enim consequatur quis voluptas officia. Omnis numquam officiis explicabo ea debitis dicta. Odio in aspernatur omnis quidem aut libero similique esse. Excepturi asperiores dolores quae earum et sequi. Voluptatem culpa voluptas minus repudiandae dolorum facilis et. Dolorum quia dolor neque accusantium qui non. Temporibus enim explicabo ad excepturi commodi autem. Modi unde velit molestias voluptatem. Porro earum occaecati voluptates quae minima rem est. Modi nihil necessitatibus maxime fuga odit cumque repudiandae. Ut a quia odio. Sed fuga voluptatibus et saepe excepturi. In vel soluta at tempore nesciunt itaque. Officia cupiditate molestiae nam. Omnis dolorem rerum voluptate omnis ab quia voluptatem. Et nobis libero cumque expedita et. Tenetur rem nihil minima. Asperiores quis tempora nisi sit ratione quasi est incidunt. Dolore velit doloribus dolor exercitationem. Dolorum placeat itaque similique iure natus et. Distinctio non omnis aliquam ut corporis aperiam et. Quam ut corrupti excepturi quisquam reprehenderit. Eos fuga reprehenderit iste ratione unde veritatis quo. Corrupti accusantium ipsa nam nesciunt porro. Illum non quam quia commodi ducimus et et. Et qui nemo quo cumque omnis. Odio et nemo aut minima placeat. Cupiditate nam a hic natus ratione nihil voluptatem. Dolores placeat amet quis et officiis mollitia earum. Est nisi itaque sed harum aut quaerat aut. Pariatur corporis ratione magni quis animi aut nostrum. Non dolores ex doloremque et. Voluptatem perferendis rerum exercitationem sed. Fugit earum ducimus laboriosam. Quaerat vel autem quibusdam exercitationem id. Maiores sunt impedit autem libero eius. Qui deleniti minus est minus. Neque ea minima eligendi distinctio odit. Tempora deleniti aut mollitia culpa nisi aut aperiam. Doloribus repellat aperiam qui deleniti sed repudiandae et. Veritatis doloremque aut repellendus fugiat aut blanditiis. Qui necessitatibus magni suscipit et sed alias. Eum id itaque quia earum quia. Iure doloribus non perspiciatis et vitae. Omnis dignissimos et sed ut autem nobis. Sed aut exercitationem quia omnis labore. Quos ut perferendis ullam quisquam omnis ut fugiat. Aliquid quaerat sequi at vel ducimus explicabo. Sit occaecati qui similique reiciendis consequatur. Rerum maiores molestias nihil est veniam rerum tenetur. Tempore nihil eaque est natus porro maxime dolorem. Rerum nihil voluptas cumque esse deserunt assumenda quia autem. Nihil in voluptatem voluptatem consequatur. Qui est sed modi. Aut quos inventore pariatur delectus accusantium quia. Suscipit vitae et quisquam sit ab dolore quia. Modi totam ut impedit illum error. Et autem error laborum provident vero. Tempora maxime quae modi in delectus. Eligendi voluptates ea et fugiat.",
"copyright": "Nihil id earum rem et praesentium. Expedita iste itaque quia quidem cupiditate quos. Et tempora libero quia quam autem optio rerum."
},
"itunes": {
"subtitle": "Commodi ut qui quis omnis."
},
"googleplay": {
"author": "Ottmar Breuer-Vollmer",
"description": "Ut itaque autem ullam in omnis veritatis aperiam. Reprehenderit voluptas nisi earum odit eum quae soluta unde. Perspiciatis et officia perspiciatis ipsam."
},
"logo": ""
},
"links": {
"self": "https://www.podcaster.de/api/feeds/aut%20dicta",
"rss": "https://opw667.podcaster.de/aut dicta.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()
Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 176
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.
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]=62&page[size]=12&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]": "62",
"page[size]": "12",
"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]' => '62',
'page[size]' => '12',
'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]': '62',
'page[size]': '12',
'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=provident"\
--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]=1332607"\
--form "media=@/tmp/phpfzbfep" \
--form "cover=@/tmp/phpqkDDyT"
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', 'provident');
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]', '1332607');
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' => 'provident'
],
[
'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' => '1332607'
],
[
'name' => 'media',
'contents' => fopen('/tmp/phpfzbfep', 'r')
],
[
'name' => 'cover',
'contents' => fopen('/tmp/phpqkDDyT', '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, 'provident'),
'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, '1332607'),
'media': open('/tmp/phpfzbfep', 'rb'),
'cover': open('/tmp/phpqkDDyT', 'rb')}
payload = {
"guid": "provident",
"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": 1332607
}
}
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()
Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 175
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 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\": \"ftvqoznnptsrkxbtzev\",
\"copyright\": \"hcxu\",
\"is_public\": 1,
\"description\": \"Enim excepturi nihil ad quisquam corrupti delectus.\",
\"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\": 0.743513
}
}"
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": "ftvqoznnptsrkxbtzev",
"copyright": "hcxu",
"is_public": 1,
"description": "Enim excepturi nihil ad quisquam corrupti delectus.",
"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": 0.743513
}
};
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' => 'ftvqoznnptsrkxbtzev',
'copyright' => 'hcxu',
'is_public' => 1,
'description' => 'Enim excepturi nihil ad quisquam corrupti delectus.',
'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' => 0.743513,
],
],
]
);
$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": "ftvqoznnptsrkxbtzev",
"copyright": "hcxu",
"is_public": 1,
"description": "Enim excepturi nihil ad quisquam corrupti delectus.",
"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": 0.743513
}
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', 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: 174
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.
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()
Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 173
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.
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()
Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 172
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.
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()
Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 171
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.
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": null,
"attributes": {
"id": null,
"name": "Josef Rausch",
"first_name": "Josef",
"last_name": "Rausch",
"username": "andypfeifer",
"email": "uschi82@example.com",
"name_title": null,
"telephone": "02392 136 4295",
"telefax": "+49 5024 3197357",
"url": "http://hubner.com/at-consectetur-aspernatur-dolores-magnam.html",
"organisation": "Klein Dietz GmbH",
"department": null,
"street": "Robert-Römer-Gasse",
"housenumber": "Carlos-Bach-Gasse 460",
"city": "Schortens",
"country": "NZ",
"post_code": "74962",
"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()
Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 170
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.