MENU navbar-image

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()

Request      

POST api/webhooks-processing

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/generate/waveform/{id}

requires authentication

Example request:
curl --request POST \
    "https://www.podcaster.de/api/generate/waveform/modi" \
    --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/modi"
);

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/modi';
$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/modi'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Request      

POST api/generate/waveform/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the waveform. Example: modi

POST api/generate/silence/{id}

requires authentication

Example request:
curl --request POST \
    "https://www.podcaster.de/api/generate/silence/sapiente" \
    --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/sapiente"
);

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/sapiente';
$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/sapiente'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Request      

POST api/generate/silence/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the silence. Example: sapiente

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"
        }
    ]
}
 

Request      

GET api/media

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

sort_by   string  optional  

Sort criterium (Allowed values: 'name', 'size', 'created'. Default: 'name'). Example: name

sort_dir   string  optional  

Sort order ('asc', 'desc'. Default: 'desc'). Example: desc

filter   string  optional  

Search for a file (name). Example: "kreativ"

strict   integer  optional  

Used to limit search results to exact matches. (Default: 0) Example: 1

page   object  optional  
page.number   integer  optional  

Used for pagination. The page number. Example: 1

page.size   integer  optional  

Used for pagination. The page size. Example: 10

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/phpp9y1bY" 
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/phpp9y1bY', '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/phpp9y1bY', '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()

Request      

POST api/media

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

Body Parameters

media   file   

The media file to upload. Example: /tmp/phpp9y1bY

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"
}
 

Request      

GET api/media/{media_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

media_id   integer   

ID of the media file. Example: 123456789

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()

Request      

DELETE api/media/{media_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

media_id   integer   

ID of the media file to be deleted. Example: 123456789

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()

Request      

POST api/media/{media_id}/copy

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

media_id   integer   

ID of a media file. Example: 123456798

Body Parameters

label   string   

Name of new file. Example: datei_version2.mp3

category   string   

Group name for new file. Example: Audios

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\": 3.63988469
}"
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": 3.63988469
};

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' => 3.63988469,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/media/eos/metadata'
payload = {
    "id": 3.63988469
}
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"
}
 

Request      

GET api/media/{id}/metadata

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the medium. Example: eos

media_id   integer   

ID of the media file. Example: 123456789

Body Parameters

id   number   

Example: 3.63988469

type   string  optional  

Update metadata

requires authentication

Change a mediafile's metadata

Example request:
curl --request PUT \
    "https://www.podcaster.de/api/media/pariatur/metadata" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"image\": 56.01353611
}"
const url = new URL(
    "https://www.podcaster.de/api/media/pariatur/metadata"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "image": 56.01353611
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/media/pariatur/metadata';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'image' => 56.01353611,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/media/pariatur/metadata'
payload = {
    "image": 56.01353611
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Request      

PUT api/media/{id}/metadata

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the medium. Example: pariatur

media_id   integer   

ID of the media file. Example: 123456789

Body Parameters

adbreak   object  optional  
fields   object  optional  
image   number  optional  

Example: 56.01353611

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": "modi",
            "links": {
                "self": "https://www.podcaster.de/api/feeds/modi",
                "rss": "https://yndhnn.podcaster.de/modi.rss",
                "web": "",
                "logo": ""
            },
            "attributes": {
                "rss": {
                    "title": "Dolorem rerum placeat consequatur mollitia voluptatem autem ut.",
                    "description": "Harum laboriosam labore dignissimos nisi quo aut. Ducimus quisquam deleniti voluptas ipsam eos tempora. Distinctio corporis odio dolor consectetur. Ab est quod aut quia nesciunt. Aut excepturi omnis velit rerum ut quas. Voluptatem autem id facere vitae. Voluptate consequatur voluptas aut rerum. Suscipit a neque illum ducimus consectetur et sed. Harum nobis consequuntur sed dolore aperiam. Qui tenetur iure voluptas perferendis quia et vero. A quia tempore molestiae illo alias commodi modi quisquam. Unde sint atque consequatur tempore sit. Minima incidunt et non ex qui consectetur dolor. Vero cupiditate optio odio iusto nulla ducimus. Itaque incidunt ipsum laboriosam consectetur. Modi neque aut blanditiis ad esse est. Doloremque sequi sed consequatur culpa odit. Id aliquid molestiae ullam et aperiam et est. Ut autem ut sunt corporis hic qui tempore. Eum eum praesentium recusandae ratione ipsam. Nesciunt similique occaecati explicabo atque accusamus cupiditate aut. Natus vero deleniti inventore amet. Dignissimos quam optio laboriosam voluptas eius delectus et. Qui reprehenderit recusandae expedita voluptates. Omnis ex veniam eius. Possimus dignissimos sed qui repudiandae consequatur quae. Voluptatem consequatur ad et. Rerum necessitatibus non architecto quia iure. Nemo omnis beatae ducimus in. Enim dignissimos ut sed veritatis. Deleniti et esse non aut mollitia delectus. Numquam enim dolor omnis odit nihil iure nobis. Quo sit repellendus ab odio. Omnis temporibus quasi modi fugit. Rerum eos alias atque veritatis qui. Assumenda debitis eveniet minus eos. Incidunt officia quam consectetur iste. Ut non recusandae aliquid quis voluptatum. Eius beatae aspernatur nemo asperiores impedit alias perspiciatis. Necessitatibus deserunt repudiandae architecto deleniti qui molestiae quaerat. Rerum voluptatem cumque ullam sit repellat temporibus commodi. Sapiente quo veritatis doloribus repellendus enim deserunt. Nemo id voluptatum facilis et. Iusto et labore unde velit est. Esse ratione consequatur laudantium est magni quia. Culpa est dignissimos eum esse qui quis. Minima dignissimos modi et tempora animi voluptatem quaerat. Molestiae ipsa culpa ratione minus culpa facere quia quod. Aut quibusdam esse nobis nisi reiciendis minima. Sed nesciunt at ducimus ipsa. Sunt et ut sed iste laborum. Ut eaque aut vel minus. Incidunt labore doloribus ullam vel perspiciatis. Debitis non rerum natus reprehenderit doloremque. Et nostrum quia delectus ipsa consequatur voluptates. Perspiciatis officia ut omnis id sit soluta natus. Incidunt ab laudantium voluptas. Voluptatem tempora voluptas sint provident ut deserunt amet culpa. Pariatur mollitia exercitationem assumenda dolorem eum. Cupiditate pariatur porro non molestias. Velit qui sint atque. Et est blanditiis vel dicta. Consequuntur placeat possimus laborum temporibus nihil minus. Aspernatur atque quis et labore impedit. Et qui dignissimos fugit ratione ea voluptatem ea. Consectetur porro impedit ratione qui facere quis. Autem cum et et omnis et. Aut explicabo consequatur quos tenetur debitis praesentium. Voluptates minus dolorem necessitatibus aut vel dolor. Ut harum tempora aut eveniet velit. Quo dolor nisi iste doloribus vitae quidem in. Sit voluptatem aut omnis aperiam voluptates. Nostrum asperiores dolor dolor consequatur aliquam repellendus. Velit perferendis illo temporibus quas quasi qui aut architecto. Unde molestiae qui sapiente nihil ut quibusdam officia. Sed dolor molestiae amet aspernatur et eligendi. Dolorem veniam ipsa incidunt. Dolores inventore laudantium qui non est sed voluptatem. Ut ad unde totam enim. Sapiente et autem fugiat odio ut nemo dolores. Iste sapiente corporis aperiam recusandae incidunt. Occaecati enim ipsum expedita repellat ipsam expedita. Et ab aspernatur ut consequatur asperiores cumque. Sed soluta ipsam a. Aperiam corporis voluptates nesciunt vero voluptatem sit similique. Voluptates ex iure enim culpa.",
                    "copyright": "Possimus expedita sit omnis. Quia voluptate error consectetur architecto consectetur. Sint laudantium explicabo possimus consequatur iure dolore."
                },
                "logo": ""
            },
            "shows_count": 1,
            "relationships": [
                "entry"
            ]
        },
        {
            "type": "feed",
            "id": "nobis saepe",
            "links": {
                "self": "https://www.podcaster.de/api/feeds/nobis%20saepe",
                "rss": "https://e4ecr1.podcaster.de/nobis saepe.rss",
                "web": "",
                "logo": ""
            },
            "attributes": {
                "rss": {
                    "title": "Est ut beatae est non corrupti ipsam aperiam.",
                    "description": "Corrupti repellat animi dolores est soluta. Omnis error itaque earum libero voluptatum. Quidem aut quisquam tenetur architecto ratione. Eius et expedita placeat magnam sed tenetur mollitia. Hic et omnis debitis debitis et magnam sunt. Nemo sed id distinctio quas impedit. Non est dolor recusandae aliquid consectetur. Nostrum voluptas cum enim aut asperiores. Voluptatem rem temporibus omnis. Corporis dolorem consequatur et. Explicabo non et delectus eveniet. Quibusdam sequi assumenda dolores voluptatem voluptas vel. Tenetur rerum quidem et optio. Sed ex modi eveniet consequatur. Dolor aliquid qui eligendi natus incidunt. Debitis placeat minima quia doloribus. Placeat qui veritatis iure accusantium necessitatibus et eligendi. Laudantium explicabo quidem consectetur dolorum rem. Quis voluptas est possimus reiciendis esse quasi officia. Ullam ullam assumenda quisquam atque temporibus dolor. Omnis in aut maxime quibusdam tempore. Fugit magnam sunt voluptatibus eum dolorem fugit. Quia quis et velit in est nisi. Necessitatibus et hic reiciendis est rem. Molestiae praesentium itaque dolores laboriosam enim est voluptas. Aliquid sit optio molestiae culpa aut eaque ea consectetur. Consequatur animi consequatur perspiciatis facere eius ipsam soluta. Nihil architecto sunt quasi accusamus nulla animi ea. Modi consequatur exercitationem amet quisquam dolore inventore. Occaecati itaque et amet eos eius illum ut. Quo id autem dicta omnis consequuntur. Quam aut magnam quo repudiandae expedita veritatis blanditiis. Quibusdam quia vitae omnis architecto ut. Mollitia quo optio magnam ex aliquid et commodi. Aut non voluptatum nesciunt id qui sunt qui incidunt. Aliquid numquam omnis quia ipsa dolor illo quidem. Harum dolorem maiores saepe est velit et magni. Maxime in aut et et illum. Corporis ut similique iusto sit eum eos. Illum ut ut omnis perspiciatis. Voluptatum fugiat dolorum inventore amet labore ut. Qui qui illo suscipit eaque aut ipsa. Est autem ab et omnis non. Error est et voluptatem enim nobis ad. Dolorum maxime nihil delectus. Modi a similique minus commodi. Aspernatur aut quam ea dolores minus. Blanditiis harum dolore voluptatem. Repellendus voluptatibus veritatis quibusdam vitae. Voluptas quaerat ut et. Officia similique saepe et sequi occaecati. Fugit et quod cupiditate. Nulla quis fugit velit quo. Et harum nesciunt unde consectetur id nulla. Nostrum error occaecati nesciunt in omnis. In occaecati pariatur non in eveniet repudiandae. Error commodi sunt voluptas ut facilis harum. Nam sequi facere aperiam labore aliquam perferendis. Quos tenetur dolore ut totam blanditiis. Quis tenetur id consequuntur iure ratione sint sed. Iure exercitationem minima dolores nihil. Dolorem nobis quisquam fugiat explicabo. Corrupti quae similique ea placeat fuga ipsa possimus dignissimos. Incidunt maxime in optio pariatur et asperiores nihil autem. Ut qui nisi quo minima sequi. Voluptates aut quo iste quaerat eius consequuntur voluptatum. Temporibus provident omnis aliquam dolor voluptatibus. Non rerum earum quo ex odit minima. Vitae alias porro temporibus reprehenderit delectus rerum molestiae. Excepturi sed dolorem in dicta. Voluptate et exercitationem nihil ipsam nam. Vitae voluptatem consectetur libero quia placeat minima. Omnis sit consequatur doloremque non suscipit architecto. Exercitationem iure facilis doloremque maiores molestiae. Enim explicabo omnis tenetur officia expedita et accusantium. Rerum omnis blanditiis quis impedit. Aut est esse architecto dolor culpa delectus aut sunt. Ea porro provident atque numquam. Sunt aspernatur velit voluptatem occaecati quibusdam totam earum maiores. Explicabo qui perferendis facere illo provident sint laboriosam possimus. Veritatis veritatis est est. Aut asperiores magnam rem. Ut libero ut dolorem libero et fuga.",
                    "copyright": "Est est natus velit eveniet. A enim dicta optio deserunt quia architecto et. Quod aliquid id aut qui et veritatis. Quo et ut et saepe debitis asperiores."
                },
                "logo": ""
            },
            "shows_count": 1,
            "relationships": [
                "entry"
            ]
        }
    ]
}
 

Request      

GET api/feeds

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

page[number]   integer  optional  

Used for pagination. The page number. Example: 1

page[size]   integer  optional  

Used for pagination. The page size. Example: 10

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": "unde nam",
        "attributes": {
            "rss": {
                "title": "Eaque omnis soluta distinctio. Nulla id eum tenetur.",
                "description": "Delectus sed et quisquam natus porro ad. Nam placeat atque quibusdam consequatur molestiae. Saepe consectetur ex minima. Omnis aut quis ducimus aut. Numquam aperiam vero nihil quis maiores accusantium harum. Sed ipsum consequuntur quia est quas. Qui nulla excepturi tenetur voluptatem modi sed. A inventore corrupti voluptates placeat natus itaque voluptatibus. Aut rem officiis at sint et molestiae. Consequatur nobis qui nihil tempora. Quia voluptas id et itaque eum et. Id voluptatem alias accusamus et quae minus voluptate quasi. Quasi facere alias voluptatem id occaecati. Consequatur necessitatibus cupiditate officia nesciunt. Maxime eaque quaerat incidunt dolor. Sed ipsa ut voluptates labore ut cum. Nihil qui quo qui sint. Dolor expedita at id sit voluptatibus suscipit ab. Dolor et quia ut repellat in quia. Quas accusantium nemo fugit porro. Optio hic quos et omnis est dicta. Nesciunt delectus numquam repudiandae in eveniet. Sed illum numquam et et. Pariatur rerum mollitia non blanditiis sunt assumenda. Perferendis aspernatur iusto et voluptas quia voluptatem. Aut aliquam fuga cupiditate. Dicta quidem qui est et velit ea minus. Et eius error accusantium et accusantium sapiente. Libero ea enim et totam enim voluptates ut. Corrupti et autem iusto magnam et tempora. Reprehenderit aut temporibus totam repudiandae dolorem non. Et facere occaecati sit aut ducimus neque nobis. Laudantium magni odit ea itaque qui praesentium eveniet. Pariatur quia mollitia delectus sint dignissimos fuga. Aut consequatur omnis voluptas odio facere. Non enim aut hic aspernatur voluptatem explicabo sit. Ex magni recusandae saepe voluptates incidunt. Magnam aliquid mollitia ipsum rerum. Aliquam qui est aliquid earum. Delectus aut ipsum earum corrupti ut quibusdam. Asperiores nisi dolores aliquam. Aut hic ullam animi quaerat non. Velit est nihil molestiae ut quo et qui. Magnam qui minima saepe perferendis voluptate sed. Eius et pariatur ad consequatur cumque eos. Delectus ut ipsa minima similique. Natus perspiciatis reprehenderit quia quos quia repudiandae. Sunt quia non aut velit aliquid. Et assumenda omnis qui nihil est excepturi. Cupiditate voluptatum ut suscipit qui ratione et. Ut vitae consectetur voluptate id amet est. Quia ullam sit qui ut. Aspernatur nihil quisquam rerum odio. Neque non ad rerum consequatur quas esse nam corrupti. Minima ut dolorum quo autem. Vel sed beatae aut tempore id eaque aut. Nulla ad perferendis sit provident. Qui autem deleniti maxime repudiandae sint iusto. Excepturi corporis itaque facere blanditiis et neque. Ad perspiciatis similique aliquam quis. Vel occaecati iure illo neque provident. Ipsam sunt ea nam corporis labore ducimus dolor. Nihil voluptas et suscipit voluptate aut excepturi id. Magnam nihil magni quibusdam similique aut quisquam. Autem est delectus in quis. Et vel corrupti adipisci quo in et voluptates. Aut deleniti dolores sint similique officia. Explicabo autem explicabo adipisci optio non. Debitis harum illum esse qui. Eaque maiores qui sit sapiente reiciendis esse hic debitis. Odio libero nihil tenetur autem. Aspernatur quo impedit non. Sed fugit doloribus nam ipsa. Aut doloribus explicabo animi vel. Quia nobis nesciunt itaque sed ut. Sed quisquam neque omnis. Explicabo quas voluptate velit dolorum. Odio adipisci nulla dignissimos aut quo. Eos quis modi sed consequatur suscipit tenetur sequi. Voluptatum sunt sed omnis. Provident consectetur totam est velit sint praesentium. Voluptas eveniet nihil non sed ipsa ut quae. Nulla harum possimus odit iste qui amet. Harum eligendi quo qui rerum pariatur. Inventore est nostrum voluptate ut earum. Soluta nulla libero aut unde et praesentium. Deserunt quo et et nihil neque vero quae. Numquam velit est aut consequatur placeat aut vel. Repellendus aspernatur delectus non voluptates soluta. Quia et at explicabo dolor itaque dolor incidunt. Eveniet quos est et ipsa non adipisci iste. Explicabo dolor saepe pariatur placeat porro tempora illum numquam.",
                "copyright": "Officiis iure autem vel. Et quidem explicabo quia excepturi dolorem dolor voluptatem culpa. Provident occaecati nemo expedita qui adipisci nihil. Minima voluptas consequatur et temporibus adipisci vero. Dolores ab eum voluptatem est."
            },
            "itunes": {
                "subtitle": "Itaque modi est quos incidunt."
            },
            "googleplay": {
                "author": "Jose Stadler",
                "description": "Molestiae quo natus ratione quia. Vel minima deleniti quae. Delectus rerum sit repellendus modi minus nam voluptates. Voluptates tenetur commodi omnis assumenda sequi explicabo."
            },
            "logo": ""
        },
        "links": {
            "self": "https://www.podcaster.de/api/feeds/unde%20nam",
            "rss": "https://yhxwzy.podcaster.de/unde nam.rss",
            "web": "",
            "logo": ""
        },
        "shows_count": 1,
        "relationships": [
            "entry"
        ]
    }
}
 

Request      

GET api/feeds/{feed_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

ID of the podcast (feed). Example: beispiel

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()

Request      

DELETE api/feeds/{feed_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

ID of the podcast (feed). Example: beispiel

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]=28&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]": "28",
    "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]' => '28',
            '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]': '28',
  '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"
            ]
        }
    ]
}
 

Request      

GET api/feed/{feed_id}/shows

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

ID des Podcasts. Lässt sich über Podcasts :: List podcasts finden. Example: beispiel

Query Parameters

page   object  optional  
page.number   number  optional  

value muss mindestens 1 sein. Example: 28

page.size   number  optional  

value muss mindestens 1 sein. value darf maximal 500 sein. Example: 12

filter   string  optional  
sortBy   string  optional  

You can either sort by lastUpdate or is_public Example: lastUpdate

sortDesc   string  optional  

Sort order. Example: desc

page[number]   integer  optional  

Used for pagination. The page number. Example: 1

page[size]   integer  optional  

Used for pagination. The page size. Example: 10

Body Parameters

filter   string  optional  

Suche in Titel und Beschreibung nach bestimmten Episoden. Example: Kurzfilm

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": ""
            }
        }
    }
}
 

Request      

GET api/feed/{feed_id}/show/{guid}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

The ID of the feed. Example: LuchaTrashTalk

guid   string   

GUID einer Episode. Example: pod-1234567890

Query Parameters

feed_id   string   

ID des Podcasts Example: beispiel

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=repellat"\
    --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]=148.263717687"\
    --form "write_metadata="\
    --form "media=@/tmp/phpj2LEgF" \
    --form "cover=@/tmp/phpftEMY2" 
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', 'repellat');
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]', '148.263717687');
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' => 'repellat'
            ],
            [
                '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' => '148.263717687'
            ],
            [
                'name' => 'write_metadata',
                'contents' => ''
            ],
            [
                'name' => 'media',
                'contents' => fopen('/tmp/phpj2LEgF', 'r')
            ],
            [
                'name' => 'cover',
                'contents' => fopen('/tmp/phpftEMY2', '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, 'repellat'),
  '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, '148.263717687'),
  'write_metadata': (None, ''),
  'media': open('/tmp/phpj2LEgF', 'rb'),
  'cover': open('/tmp/phpftEMY2', 'rb')}
payload = {
    "guid": "repellat",
    "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": 148.263717687
    },
    "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()

Request      

POST api/feed/{feed_id}/show

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

feed_id   string   

Podcast to which this show is to be added. Example: beispiel

Body Parameters

guid   string  optional  

Example: repellat

title   string   

Titel der Episode. Example: #21 - Spannende Erkenntnisse über Podcasting

author   string   

Autor der Episode. value darf maximal 255 Zeichen haben. Example: Maxima Musterfrau

copyright   string  optional  

Angabe zu Nutzerrechten. value darf maximal 255 Zeichen haben. Example: Podcast-Team MM

is_public   integer   

Veröffentlichungsstatus der Episode. Entwurf ist 0, Live ist 1. Example: 1

description   string   

Beschreibung der Episde. value darf maximal 4000 Zeichen haben.

itunes   object  optional  
title   string  optional  

Titel der Episode spezifisch für Apple Podcasts. Example: Spannende Erkenntnisse über Podcasting

subtitle   string  optional  

Untertitel der Episode spezifisch für Apple Podcasts. Wird aber auch anderswo genutzt. Example: Dinge, die Du noch nicht wusstest

summary   string  optional  

Kurzzusammenfassung des Inhaltes der Episode. Example: Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.

episode   integer  optional  

Nummer der Episode als Ganzzahl. Sollte fortlaufend sein. Example: 21

episodeType   string  optional  

Typ der Episode nach Apple. Kann "full" für eine normale Episode, "trailer" für einen Trailer oder "bonus" für Bonusmaterial sein. Example: full

season   string  optional  

Nummer als Ganzzahl der Staffel (Season), falls genutzt. Example: 4

logo   integer  optional  

ID des verlinkten Bildes. Muss ein existierendes "Logo" sein. Abrufbar über Media :: Get file mit filter=type:logo Example: 2435456

explicit   boolean  optional  

Signalisiert eine Episode mit anstäßigen Inhalten. Example: true

author   string  optional  

Name der Podcaster/in(nen). Example: Bastian Albert, Fabio Bacigalupo

publishing_date   string  optional  

Veröffentlichungsdatum der Episode im Format YYYY-mm-dd (Y: Jahr, m: Monat, d: Tag). Bei Datum in der Zukunft wird die Episode automatisch geplant. Example: 2023-05-01

publishing_time   string  optional  

Uhrzeit der Veröffentlichung im Format hh:ii:ss (h: Stunde, i: Minute, s: Sekunde). Example: 12:10:59

link   string  optional  

Link zu einer Webseite zur Episode. Example: https://mein-blog-zum.podcast/s-e-u-p

show_media   integer  optional  

ID der verlinkten Datei. Abrufbar über Media :: Get file. Darf nicht gefüllt sein, wenn media verwendet wird. Example: 12345

media   file  optional  

Must be a file. Example: /tmp/phpj2LEgF

cover   file  optional  

Must be a file. Example: /tmp/phpftEMY2

podcastindex   object  optional  
transcript   number  optional  

Example: 148.263717687

write_metadata   boolean  optional  

Example: false

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\": \"est\",
    \"copyright\": \"edyjoeaxdolnttlrklu\",
    \"is_public\": 1,
    \"description\": \"Sed architecto aliquam non excepturi excepturi aut perferendis.\",
    \"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.8105995
    },
    \"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": "est",
    "copyright": "edyjoeaxdolnttlrklu",
    "is_public": 1,
    "description": "Sed architecto aliquam non excepturi excepturi aut perferendis.",
    "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.8105995
    },
    "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' => 'est',
            'copyright' => 'edyjoeaxdolnttlrklu',
            'is_public' => 1,
            'description' => 'Sed architecto aliquam non excepturi excepturi aut perferendis.',
            '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.8105995,
            ],
            '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": "est",
    "copyright": "edyjoeaxdolnttlrklu",
    "is_public": 1,
    "description": "Sed architecto aliquam non excepturi excepturi aut perferendis.",
    "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.8105995
    },
    "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()

Request      

PUT api/feed/{feed_id}/show/{guid}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

ID des Podcasts Example: beispiel

guid   string   

GUID einer Episode. Example: pod-1234567890

Body Parameters

title   string   

Titel der Episode. Example: #21 - Spannende Erkenntnisse über Podcasting

author   string   

value darf maximal 255 Zeichen haben. Example: est

copyright   string  optional  

value darf maximal 255 Zeichen haben. Example: edyjoeaxdolnttlrklu

is_public   integer   

Veröffentlichungsstatus der Episode. Entwurf ist 0, Live ist 1. Example: 1

description   string   

value darf maximal 4000 Zeichen haben. Example: Sed architecto aliquam non excepturi excepturi aut perferendis.

itunes   object  optional  
title   string  optional  

Titel der Episode spezifisch für Apple Podcasts. Example: Spannende Erkenntnisse über Podcasting

subtitle   string  optional  

Untertitel der Episode spezifisch für Apple Podcasts. Wird aber auch anderswo genutzt. Example: Dinge, die Du noch nicht wusstest

summary   string  optional  

Kurzzusammenfassung des Inhaltes der Episode. Example: Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.

episode   integer  optional  

Nummer der Episode als Ganzzahl. Sollte fortlaufend sein. Example: 21

episodeType   string  optional  

Typ der Episode nach Apple. Kann "full" für eine normale Episode, "trailer" für einen Trailer oder "bonus" für Bonusmaterial sein. Example: full

season   string  optional  

Nummer als Ganzzahl der Staffel (Season), falls genutzt. Example: 4

logo   integer  optional  

ID des verlinkten Bildes. Muss ein existierendes "Logo" sein. Abrufbar über Media :: Get file mit filter=type:logo Example: 2435456

explicit   boolean  optional  

Signalisiert eine Episode mit anstäßigen Inhalten. Example: true

author   string  optional  

Name der Podcaster/in(nen). Example: Bastian Albert, Fabio Bacigalupo

publishing_date   string  optional  

Veröffentlichungsdatum der Episode im Format YYYY-mm-dd (Y: Jahr, m: Monat, d: Tag). Bei Datum in der Zukunft wird die Episode automatisch geplant. Example: 2023-05-01

publishing_time   string  optional  

Uhrzeit der Veröffentlichung im Format H:i:s (H: Stunde, i: Minute, s: Sekunde). Example: 12:10:59

link   string  optional  

Link zu einer Webseite zur Episode. Example: https://mein-blog-zum.podcast/s-e-u-p

show_media   integer  optional  

ID der verlinkten Datei. Abrufbar über Media :: Get file. Example: 12345

podcastindex   object  optional  
transcript   number  optional  

Example: 0.8105995

write_metadata   boolean  optional  

TODO: Create new IsTranscriptRule. Example: false

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()

Request      

DELETE api/feed/{feed_id}/show/{guid}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

ID des Podcasts Example: beispiel

guid   string   

GUID einer Episode. Example: pod-1234567890

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()

Request      

POST api/feed/{feed_id}/show/{guid}/copy

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

ID des Podcasts Example: beispiel

guid   string   

GUID einer Episode. Example: pod-1234567890

Query Parameters

feed_id_to   string  optional  

ID of the podcast the show is copied to. If omitted the same podcast as the source is used. Example: test

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()

Request      

POST api/feed/{feed_id}/show/{guid}/move/{feed_id_to}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

ID des Podcasts Example: beispiel

guid   string   

GUID einer Episode. Example: pod-1234567890

feed_id_to   string   

ID of the podcast the show is moved to. Example: test

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": 20859,
        "attributes": {
            "id": 20859,
            "name": "Berta Jacob",
            "first_name": "Berta",
            "last_name": "Jacob",
            "username": "juri08",
            "email": "schumacher.elsa@example.com",
            "name_title": null,
            "telephone": "+49 951 812 7083",
            "telefax": "+49 89 585 8437",
            "url": "http://heuer.com/",
            "organisation": "Ebert KG",
            "department": null,
            "street": "Winterweg",
            "housenumber": "Ivo-Baier-Weg 681",
            "city": "Schorndorf",
            "country": "IL",
            "post_code": "68751",
            "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"
        }
    }
}
 

Request      

GET api/user

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

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()

Request      

PUT api/user/{id}

PATCH api/user/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the user. Example: 1

Body Parameters

name_title   string  optional  

Title from profession or heritage. value muss mindestens 2 Zeichen lang sein. Example: Prof

first_name   string  optional  

First name. value muss mindestens 2 Zeichen lang sein. Example: Fabio

last_name   string   

Surname. value muss mindestens 2 Zeichen lang sein. Example: Bacigalupo

telephone   string  optional  

Telephone number. value muss mindestens 2 Zeichen lang sein. Example: 030-549072653

telefax   string  optional  

Fax number. value muss mindestens 2 Zeichen lang sein. Example: 030-549072660

url   string  optional  

Website url. Must be a valid URL. value muss mindestens 6 Zeichen lang sein. Example: https://www.podcaster.de

organisation   string  optional  

Organisation. Example: Podcast Plattform

department   string  optional  

Abteilung. Example: IT

street   string  optional  

Straße. value muss mindestens 3 Zeichen lang sein. Example: Brunnenstraße

housenumber   string  optional  

Hausnummer. Example: 147

city   string  optional  

Ort. Example: Berlin

country   string   

Ländercode. Example: DE

Must be one of:
  • AF
  • EG
  • AX
  • AL
  • DZ
  • AS
  • VI
  • UM
  • AD
  • AO
  • AI
  • AQ
  • AG
  • GQ
  • AR
  • AM
  • AW
  • AZ
  • ET
  • AU
  • BS
  • BH
  • BD
  • BB
  • BY
  • BE
  • BZ
  • BJ
  • BM
  • BT
  • BO
  • BQ
  • BA
  • BW
  • BV
  • BR
  • VG
  • IO
  • BN
  • BG
  • BF
  • BI
  • CV
  • CL
  • CN
  • CK
  • CR
  • CI
  • CW
  • DK
  • DE
  • DM
  • DO
  • DJ
  • EC
  • SV
  • ER
  • EE
  • SZ
  • FK
  • FO
  • FJ
  • FI
  • FR
  • GF
  • PF
  • TF
  • GA
  • GM
  • GE
  • GH
  • GI
  • GD
  • GR
  • GL
  • GP
  • GU
  • GT
  • GG
  • GN
  • GW
  • GY
  • HT
  • HM
  • HN
  • IN
  • ID
  • IQ
  • IR
  • IE
  • IS
  • IM
  • IL
  • IT
  • JM
  • JP
  • YE
  • JE
  • JO
  • KY
  • KH
  • CM
  • CA
  • KZ
  • QA
  • KE
  • KG
  • KI
  • CC
  • CO
  • KM
  • CG
  • CD
  • HR
  • CU
  • KW
  • LA
  • LS
  • LV
  • LB
  • LR
  • LY
  • LI
  • LT
  • LU
  • MG
  • MW
  • MY
  • MV
  • ML
  • MT
  • MA
  • MH
  • MQ
  • MR
  • MU
  • YT
  • MX
  • FM
  • MC
  • MN
  • ME
  • MS
  • MZ
  • MM
  • NA
  • NR
  • NP
  • NC
  • NZ
  • NI
  • NL
  • NE
  • NG
  • NU
  • KP
  • MP
  • MK
  • NF
  • NO
  • OM
  • AT
  • PK
  • PS
  • PW
  • PA
  • PG
  • PY
  • PE
  • PH
  • PN
  • PL
  • PT
  • PR
  • MD
  • RE
  • RW
  • RO
  • RU
  • SB
  • ZM
  • WS
  • SM
  • ST
  • SA
  • SE
  • CH
  • SN
  • RS
  • SC
  • SL
  • ZW
  • SG
  • SX
  • SK
  • SI
  • SO
  • HK
  • MO
  • ES
  • SJ
  • LK
  • BL
  • SH
  • KN
  • LC
  • MF
  • PM
  • VC
  • ZA
  • SD
  • GS
  • KR
  • SS
  • SR
  • SY
  • TJ
  • TW
  • TZ
  • TH
  • TL
  • TG
  • TK
  • TO
  • TT
  • TD
  • CZ
  • TN
  • TR
  • TM
  • TC
  • TV
  • UG
  • UA
  • HU
  • UY
  • UZ
  • VU
  • VA
  • VE
  • AE
  • US
  • GB
  • VN
  • WF
  • CX
  • EH
  • CF
  • CY
post_code   string  optional  

Postleitzahl. value muss mindestens 2 Zeichen lang sein. Example: 10115

representative   string  optional  

Repräsentant/in. value muss mindestens 2 Zeichen lang sein. Example: Fabio Bacigalupo

mediarepresentative   string  optional  

Repräsentant/in für Öffentlichkeitsarbeit. value muss mindestens 2 Zeichen lang sein. Example: Steffen Wrede

register_court   string  optional  

Amtsgericht. value muss mindestens 2 Zeichen lang sein. Example: Berlin

register_number   string  optional  

Register-Nummer. value muss mindestens 2 Zeichen lang sein. Example: 1234567890

board   string  optional  

Vorstand. value muss mindestens 2 Zeichen lang sein. Example: Yvonne Ständin

chairman   string  optional  

Vorsitzende/r. value muss mindestens 2 Zeichen lang sein. Example: Frauke Vorsätzer

controlling_authority   string  optional  

Finanzaufsicht. value muss mindestens 2 Zeichen lang sein. Example: Bafa

additional_specifications   string  optional  

Weitere Angaben. Example: Hier kann ein beliebiger Freitext ergänzt werden.

organisiation   string  optional  

The organisation of the account owner. Example: 'Podcast Plattform'