MENU navbar-image

Introduction

Public REST API (v1) for managing podcast feeds, episodes and media files.

This is the reference documentation for v1 of the podcaster public API.

<aside>All endpoints require an OAuth access token or Personal Access Token
issued by Passport. Pass it as a <code>Bearer</code> token in the
<code>Authorization</code> header. Each endpoint lists the scope it requires.</aside>

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_ACCESS_TOKEN}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

Authentication uses Laravel Passport. You can obtain a token by:

<ul>
    <li>Creating a <b>Personal Access Token</b> in your account settings.</li>
    <li>Performing the OAuth Authorization Code flow against <code>/oauth/authorize</code>.</li>
</ul>

Tokens are scoped — each endpoint declares which scope it requires (e.g. <code>feeds</code>,
<code>media</code>, <code>shows</code>). Read-only variants (<code>*-read-only</code>) are also accepted
where appropriate.

Episodes

List episodes

requires authentication

Returns a list of episodes belonging to a podcast channel. Accessible with scopes: shows,shows-read-only

Example request:
curl --request GET \
    --get "https://podcaster.rest/v1/shows?channel_id=123e4567-e89b-12d3-a456-426655440000&page[number]=22&page[size]=7&filter=Kurzfilm&sortBy=published_at&sortDesc=desc&page%5Bnumber%5D=1&page%5Bsize%5D=10" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://podcaster.rest/v1/shows"
);

const params = {
    "channel_id": "123e4567-e89b-12d3-a456-426655440000",
    "page[number]": "22",
    "page[size]": "7",
    "filter": "Kurzfilm",
    "sortBy": "published_at",
    "sortDesc": "desc",
    "page[number]": "1",
    "page[size]": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/shows';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'channel_id' => '123e4567-e89b-12d3-a456-426655440000',
            'page[number]' => '22',
            'page[size]' => '7',
            'filter' => 'Kurzfilm',
            'sortBy' => 'published_at',
            'sortDesc' => 'desc',
            'page[number]' => '1',
            'page[size]' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/shows'
params = {
  'channel_id': '123e4567-e89b-12d3-a456-426655440000',
  'page[number]': '22',
  'page[size]': '7',
  'filter': 'Kurzfilm',
  'sortBy': 'published_at',
  'sortDesc': 'desc',
  'page[number]': '1',
  'page[size]': '10',
}
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  '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",
            "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",
                "status": "DRAFT",
                "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",
                "status": "PUBLISHED",
                "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 v1/shows

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

channel_id   string  optional    

UUId des Podcasts. Example: 123e4567-e89b-12d3-a456-426655440000

page   object  optional    
page.number   number  optional    

:Attribute muss mindestens 1 sein. Example: 22

page.size   number  optional    

:Attribute muss mindestens 1 sein. :Attribute darf maximal 500 sein. Example: 7

filter   string  optional    

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

sortBy   string  optional    

You can either sort by published_at or status Example: published_at

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

Get episode

requires authentication

Gets details of an episode. Accessible with scopes: shows,shows-read-only

Example request:
curl --request GET \
    --get "https://podcaster.rest/v1/shows/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://podcaster.rest/v1/shows/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/shows/6ff8f7f6-1eb3-3525-be4a-3932c805afed';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/shows/6ff8f7f6-1eb3-3525-be4a-3932c805afed'
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
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 v1/shows/{show_uuid}

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

show_uuid   string     

Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

uuid   string     

UUID einer Episode. Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

Create episode

requires authentication

Adds a new episode. Accessible with scope: shows

Example request:
curl --request POST \
    "https://podcaster.rest/v1/shows" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "channel_id=123e4567-e89b-12d3-a456-426655440000"\
    --form "status=PUBLISHED"\
    --form "title=Dies ist eine Episode."\
    --form "description="\
    --form "author=Maxima Musterfrau"\
    --form "copyright=Podcast-Team MM"\
    --form "link="\
    --form "file_id=1554927456"\
    --form "itunes[title]="\
    --form "itunes[subtitle]="\
    --form "itunes[summary]="\
    --form "itunes[episode]=0"\
    --form "itunes[episodeType]="\
    --form "itunes[season]=0"\
    --form "itunes[logo]=0c9304c2-841d-40e8-9e48-a265d4c8f79b"\
    --form "itunes[explicit]="\
    --form "itunes[block]="\
    --form "itunes[author]="\
    --form "publishing_date=2021-08-26"\
    --form "publishing_time=12:10:59"\
    --form "podcastindex[episode_node_value]=4326.41688"\
    --form "podcastindex[episode_display]=m"\
    --form "podcastindex[chapter_url]=https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt"\
    --form "podcastindex[chapter_type]=w"\
    --form "podcastindex[image_srcset]=architecto"\
    --form "podcastindex[license_node_value]=n"\
    --form "podcastindex[license_url]=http://crooks.biz/et-fugiat-sunt-nihil-accusantium"\
    --form "podcastindex[location_node_value]=n"\
    --form "podcastindex[location_geo_latitude]=4326.41688"\
    --form "podcastindex[location_geo_longitude]=4326.41688"\
    --form "podcastindex[location_osm]=m"\
    --form "podcastindex[season_node_value]=16"\
    --form "podcastindex[season_name]=n"\
    --form "podcastindex[transcript]=0c9304c2-841d-40e8-9e48-a265d4c8f79b"\
    --form "write_metadata=1"\
    --form "media=@/tmp/phpal94ijo2108bc4fekvK" \
    --form "cover=@/tmp/phpt0ffnmet05o00JuZBRt" \
    --form "podcastindex[transcript_file]=@/tmp/php6umo1im0a8751HjhHHQ" 
const url = new URL(
    "https://podcaster.rest/v1/shows"
);

const headers = {
    "Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('channel_id', '123e4567-e89b-12d3-a456-426655440000');
body.append('status', 'PUBLISHED');
body.append('title', 'Dies ist eine Episode.');
body.append('description', '');
body.append('author', 'Maxima Musterfrau');
body.append('copyright', 'Podcast-Team MM');
body.append('link', '');
body.append('file_id', '1554927456');
body.append('itunes[title]', '');
body.append('itunes[subtitle]', '');
body.append('itunes[summary]', '');
body.append('itunes[episode]', '0');
body.append('itunes[episodeType]', '');
body.append('itunes[season]', '0');
body.append('itunes[logo]', '0c9304c2-841d-40e8-9e48-a265d4c8f79b');
body.append('itunes[explicit]', '');
body.append('itunes[block]', '');
body.append('itunes[author]', '');
body.append('publishing_date', '2021-08-26');
body.append('publishing_time', '12:10:59');
body.append('podcastindex[episode_node_value]', '4326.41688');
body.append('podcastindex[episode_display]', 'm');
body.append('podcastindex[chapter_url]', 'https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt');
body.append('podcastindex[chapter_type]', 'w');
body.append('podcastindex[image_srcset]', 'architecto');
body.append('podcastindex[license_node_value]', 'n');
body.append('podcastindex[license_url]', 'http://crooks.biz/et-fugiat-sunt-nihil-accusantium');
body.append('podcastindex[location_node_value]', 'n');
body.append('podcastindex[location_geo_latitude]', '4326.41688');
body.append('podcastindex[location_geo_longitude]', '4326.41688');
body.append('podcastindex[location_osm]', 'm');
body.append('podcastindex[season_node_value]', '16');
body.append('podcastindex[season_name]', 'n');
body.append('podcastindex[transcript]', '0c9304c2-841d-40e8-9e48-a265d4c8f79b');
body.append('write_metadata', '1');
body.append('media', document.querySelector('input[name="media"]').files[0]);
body.append('cover', document.querySelector('input[name="cover"]').files[0]);
body.append('podcastindex[transcript_file]', document.querySelector('input[name="podcastindex[transcript_file]"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/shows';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'channel_id',
                'contents' => '123e4567-e89b-12d3-a456-426655440000'
            ],
            [
                'name' => 'status',
                'contents' => 'PUBLISHED'
            ],
            [
                'name' => 'title',
                'contents' => 'Dies ist eine Episode.'
            ],
            [
                'name' => 'description',
                'contents' => ''
            ],
            [
                'name' => 'author',
                'contents' => 'Maxima Musterfrau'
            ],
            [
                'name' => 'copyright',
                'contents' => 'Podcast-Team MM'
            ],
            [
                'name' => 'link',
                'contents' => ''
            ],
            [
                'name' => 'file_id',
                'contents' => '1554927456'
            ],
            [
                'name' => 'itunes[title]',
                'contents' => ''
            ],
            [
                'name' => 'itunes[subtitle]',
                'contents' => ''
            ],
            [
                'name' => 'itunes[summary]',
                'contents' => ''
            ],
            [
                'name' => 'itunes[episode]',
                'contents' => '0'
            ],
            [
                'name' => 'itunes[episodeType]',
                'contents' => ''
            ],
            [
                'name' => 'itunes[season]',
                'contents' => '0'
            ],
            [
                'name' => 'itunes[logo]',
                'contents' => '0c9304c2-841d-40e8-9e48-a265d4c8f79b'
            ],
            [
                'name' => 'itunes[explicit]',
                'contents' => ''
            ],
            [
                'name' => 'itunes[block]',
                'contents' => ''
            ],
            [
                'name' => 'itunes[author]',
                'contents' => ''
            ],
            [
                'name' => 'publishing_date',
                'contents' => '2021-08-26'
            ],
            [
                'name' => 'publishing_time',
                'contents' => '12:10:59'
            ],
            [
                'name' => 'podcastindex[episode_node_value]',
                'contents' => '4326.41688'
            ],
            [
                'name' => 'podcastindex[episode_display]',
                'contents' => 'm'
            ],
            [
                'name' => 'podcastindex[chapter_url]',
                'contents' => 'https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt'
            ],
            [
                'name' => 'podcastindex[chapter_type]',
                'contents' => 'w'
            ],
            [
                'name' => 'podcastindex[image_srcset]',
                'contents' => 'architecto'
            ],
            [
                'name' => 'podcastindex[license_node_value]',
                'contents' => 'n'
            ],
            [
                'name' => 'podcastindex[license_url]',
                'contents' => 'http://crooks.biz/et-fugiat-sunt-nihil-accusantium'
            ],
            [
                'name' => 'podcastindex[location_node_value]',
                'contents' => 'n'
            ],
            [
                'name' => 'podcastindex[location_geo_latitude]',
                'contents' => '4326.41688'
            ],
            [
                'name' => 'podcastindex[location_geo_longitude]',
                'contents' => '4326.41688'
            ],
            [
                'name' => 'podcastindex[location_osm]',
                'contents' => 'm'
            ],
            [
                'name' => 'podcastindex[season_node_value]',
                'contents' => '16'
            ],
            [
                'name' => 'podcastindex[season_name]',
                'contents' => 'n'
            ],
            [
                'name' => 'podcastindex[transcript]',
                'contents' => '0c9304c2-841d-40e8-9e48-a265d4c8f79b'
            ],
            [
                'name' => 'write_metadata',
                'contents' => '1'
            ],
            [
                'name' => 'media',
                'contents' => fopen('/tmp/phpal94ijo2108bc4fekvK', 'r')
            ],
            [
                'name' => 'cover',
                'contents' => fopen('/tmp/phpt0ffnmet05o00JuZBRt', 'r')
            ],
            [
                'name' => 'podcastindex[transcript_file]',
                'contents' => fopen('/tmp/php6umo1im0a8751HjhHHQ', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/shows'
files = {
  'channel_id': (None, '123e4567-e89b-12d3-a456-426655440000'),
  'status': (None, 'PUBLISHED'),
  'title': (None, 'Dies ist eine Episode.'),
  'description': (None, ''),
  'author': (None, 'Maxima Musterfrau'),
  'copyright': (None, 'Podcast-Team MM'),
  'link': (None, ''),
  'file_id': (None, '1554927456'),
  'itunes[title]': (None, ''),
  'itunes[subtitle]': (None, ''),
  'itunes[summary]': (None, ''),
  'itunes[episode]': (None, '0'),
  'itunes[episodeType]': (None, ''),
  'itunes[season]': (None, '0'),
  'itunes[logo]': (None, '0c9304c2-841d-40e8-9e48-a265d4c8f79b'),
  'itunes[explicit]': (None, ''),
  'itunes[block]': (None, ''),
  'itunes[author]': (None, ''),
  'publishing_date': (None, '2021-08-26'),
  'publishing_time': (None, '12:10:59'),
  'podcastindex[episode_node_value]': (None, '4326.41688'),
  'podcastindex[episode_display]': (None, 'm'),
  'podcastindex[chapter_url]': (None, 'https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt'),
  'podcastindex[chapter_type]': (None, 'w'),
  'podcastindex[image_srcset]': (None, 'architecto'),
  'podcastindex[license_node_value]': (None, 'n'),
  'podcastindex[license_url]': (None, 'http://crooks.biz/et-fugiat-sunt-nihil-accusantium'),
  'podcastindex[location_node_value]': (None, 'n'),
  'podcastindex[location_geo_latitude]': (None, '4326.41688'),
  'podcastindex[location_geo_longitude]': (None, '4326.41688'),
  'podcastindex[location_osm]': (None, 'm'),
  'podcastindex[season_node_value]': (None, '16'),
  'podcastindex[season_name]': (None, 'n'),
  'podcastindex[transcript]': (None, '0c9304c2-841d-40e8-9e48-a265d4c8f79b'),
  'write_metadata': (None, '1'),
  'media': open('/tmp/phpal94ijo2108bc4fekvK', 'rb'),
  'cover': open('/tmp/phpt0ffnmet05o00JuZBRt', 'rb'),
  'podcastindex[transcript_file]': open('/tmp/php6umo1im0a8751HjhHHQ', 'rb')}
payload = {
    "channel_id": "123e4567-e89b-12d3-a456-426655440000",
    "status": "PUBLISHED",
    "title": "Dies ist eine Episode.",
    "description": "",
    "author": "Maxima Musterfrau",
    "copyright": "Podcast-Team MM",
    "link": "",
    "file_id": "1554927456",
    "itunes": {
        "title": "",
        "subtitle": "",
        "summary": "",
        "episode": 0,
        "episodeType": "",
        "season": 0,
        "logo": "0c9304c2-841d-40e8-9e48-a265d4c8f79b",
        "explicit": false,
        "block": false,
        "author": ""
    },
    "publishing_date": "2021-08-26",
    "publishing_time": "12:10:59",
    "podcastindex": {
        "episode_node_value": 4326.41688,
        "episode_display": "m",
        "chapter_url": "https:\/\/www.gulgowski.com\/nihil-accusantium-harum-mollitia-modi-deserunt",
        "chapter_type": "w",
        "image_srcset": "architecto",
        "license_node_value": "n",
        "license_url": "http:\/\/crooks.biz\/et-fugiat-sunt-nihil-accusantium",
        "location_node_value": "n",
        "location_geo_latitude": 4326.41688,
        "location_geo_longitude": 4326.41688,
        "location_osm": "m",
        "season_node_value": 16,
        "season_name": "n",
        "transcript": "0c9304c2-841d-40e8-9e48-a265d4c8f79b"
    },
    "write_metadata": true
}
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/json'
}

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

Request      

POST v1/shows

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Body Parameters

channel_id   string  optional    

UUId des Podcasts. Example: 123e4567-e89b-12d3-a456-426655440000

status   string  optional    

Status der Episode: DRAFT (Entwurf), PUBLISHED (Veröffentlicht) Example: PUBLISHED

title   string     

Titel der Episode. :Attribute darf maximal 255 Zeichen haben. Example: Dies ist eine Episode.

description   string     

Beschreibung der Episode. :Attribute darf maximal 4000 Zeichen haben.

author   string     

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

copyright   string  optional    

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

link   string  optional    

Must be a valid URL. :Attribute darf maximal 400 Zeichen haben.

file_id   string  optional    

ID einer Medien-Datei. Example: 1554927456

itunes   object  optional    
title   string  optional    

Apple Podcast-spezifischer Titel der Episode. :Attribute darf maximal 255 Zeichen haben.

subtitle   string  optional    

Apple Podcast-spezifischer Untertitel der Episode. :Attribute darf maximal 255 Zeichen haben.

summary   string  optional    

Apple Podcast-spezifische Zusammenfassung der Episode (ohne HTML). :Attribute darf maximal 4000 Zeichen haben.

episode   integer  optional    

Example: 0

episodeType   string     
Must be one of:
  • full
  • trailer
  • bonus
season   integer  optional    

Example: 0

logo   string  optional    

UUID eines bereits hochgeladenen Episodencovers aus der Mediathek. Nicht zusammen mit cover. Example: 0c9304c2-841d-40e8-9e48-a265d4c8f79b

explicit   boolean  optional    

Ob die Episode explizite Inhalte enthält. Nein: false, 0 oder "no". Ja: true, 1 oder "yes". Ohne Angabe gilt die Episode als nicht explizit. Example: false

block   boolean  optional    

Ob die Episode in Apple Podcasts ausgeblendet werden soll. Nein: false, 0 oder "no". Ja: true, 1 oder "yes". Ohne Angabe wird sie nicht ausgeblendet. Example: false

author   string  optional    

:Attribute darf maximal 255 Zeichen haben.

publishing_date   string     

Must be a valid date in the format Y-m-d. Example: 2021-08-26

publishing_time   string     

Must be a valid date in the format H:i:s. Example: 12:10:59

media   file  optional    

Must be a file. Example: /tmp/phpal94ijo2108bc4fekvK

cover   file  optional    

Episodencover, das direkt mit hochgeladen wird (PNG oder JPG, quadratisch, 1400–3000 Pixel, max. 3 MB). Nicht zusammen mit itunes.logo. Example: /tmp/phpt0ffnmet05o00JuZBRt

podcastindex   object  optional    
episode_node_value   number  optional    

Example: 4326.41688

episode_display   string  optional    

:Attribute darf maximal 32 Zeichen haben. Example: m

chapter_url   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt

chapter_type   string  optional    

:Attribute darf maximal 50 Zeichen haben. Example: w

image_srcset   string  optional    

Example: architecto

license_node_value   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: n

license_url   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: http://crooks.biz/et-fugiat-sunt-nihil-accusantium

location_node_value   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: n

location_geo_latitude   number  optional    

Example: 4326.41688

location_geo_longitude   number  optional    

Example: 4326.41688

location_osm   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: m

season_node_value   integer  optional    

Example: 16

season_name   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: n

transcript   string  optional    

UUID eines bereits hochgeladenen Transkripts aus der Mediathek. Nicht zusammen mit podcastindex.transcript_file. Example: 0c9304c2-841d-40e8-9e48-a265d4c8f79b

transcript_file   file  optional    

Transkript-Datei, die direkt mit hochgeladen wird (VTT, SRT, JSON oder TXT). Nicht zusammen mit podcastindex.transcript. Example: /tmp/php6umo1im0a8751HjhHHQ

write_metadata   boolean  optional    

Example: true

Update episode

requires authentication

Updates details of an episode. Only the fields that are sent are changed. Accessible with scope: shows

Example request:
curl --request PUT \
    "https://podcaster.rest/v1/shows/0c9304c2-841d-40e8-9e48-a265d4c8f79b" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "status=PUBLISHED"\
    --form "title=Dies ist eine Episode."\
    --form "description=Shownotes zur Episode"\
    --form "author=Maxima Musterfrau"\
    --form "copyright=Podcast-Team MM"\
    --form "link=https://beispiel.podcaster.de/folge-1"\
    --form "file_id=1554927456"\
    --form "audiotakes_guid=b"\
    --form "itunes[episode]=1"\
    --form "itunes[episodeType]=full"\
    --form "itunes[season]=1"\
    --form "itunes[logo]=0c9304c2-841d-40e8-9e48-a265d4c8f79b"\
    --form "itunes[explicit]="\
    --form "itunes[block]="\
    --form "publishing_date=2026-10-20"\
    --form "publishing_time=12:10:59"\
    --form "podcastindex[episode_node_value]=4326.41688"\
    --form "podcastindex[episode_display]=m"\
    --form "podcastindex[chapter_url]=https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt"\
    --form "podcastindex[chapter_type]=w"\
    --form "podcastindex[image_srcset]=architecto"\
    --form "podcastindex[license_node_value]=n"\
    --form "podcastindex[license_url]=http://crooks.biz/et-fugiat-sunt-nihil-accusantium"\
    --form "podcastindex[location_node_value]=n"\
    --form "podcastindex[location_geo_latitude]=4326.41688"\
    --form "podcastindex[location_geo_longitude]=4326.41688"\
    --form "podcastindex[location_osm]=m"\
    --form "podcastindex[season_node_value]=16"\
    --form "podcastindex[season_name]=n"\
    --form "podcastindex[transcript]=0c9304c2-841d-40e8-9e48-a265d4c8f79b"\
    --form "write_metadata=1"\
    --form "cover=@/tmp/phpbjvir40gos9l4vay8Ug" \
    --form "podcastindex[transcript_file]=@/tmp/php9tmda5qomocjaZsyuG4" 
const url = new URL(
    "https://podcaster.rest/v1/shows/0c9304c2-841d-40e8-9e48-a265d4c8f79b"
);

const headers = {
    "Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('status', 'PUBLISHED');
body.append('title', 'Dies ist eine Episode.');
body.append('description', 'Shownotes zur Episode');
body.append('author', 'Maxima Musterfrau');
body.append('copyright', 'Podcast-Team MM');
body.append('link', 'https://beispiel.podcaster.de/folge-1');
body.append('file_id', '1554927456');
body.append('audiotakes_guid', 'b');
body.append('itunes[episode]', '1');
body.append('itunes[episodeType]', 'full');
body.append('itunes[season]', '1');
body.append('itunes[logo]', '0c9304c2-841d-40e8-9e48-a265d4c8f79b');
body.append('itunes[explicit]', '');
body.append('itunes[block]', '');
body.append('publishing_date', '2026-10-20');
body.append('publishing_time', '12:10:59');
body.append('podcastindex[episode_node_value]', '4326.41688');
body.append('podcastindex[episode_display]', 'm');
body.append('podcastindex[chapter_url]', 'https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt');
body.append('podcastindex[chapter_type]', 'w');
body.append('podcastindex[image_srcset]', 'architecto');
body.append('podcastindex[license_node_value]', 'n');
body.append('podcastindex[license_url]', 'http://crooks.biz/et-fugiat-sunt-nihil-accusantium');
body.append('podcastindex[location_node_value]', 'n');
body.append('podcastindex[location_geo_latitude]', '4326.41688');
body.append('podcastindex[location_geo_longitude]', '4326.41688');
body.append('podcastindex[location_osm]', 'm');
body.append('podcastindex[season_node_value]', '16');
body.append('podcastindex[season_name]', 'n');
body.append('podcastindex[transcript]', '0c9304c2-841d-40e8-9e48-a265d4c8f79b');
body.append('write_metadata', '1');
body.append('cover', document.querySelector('input[name="cover"]').files[0]);
body.append('podcastindex[transcript_file]', document.querySelector('input[name="podcastindex[transcript_file]"]').files[0]);

fetch(url, {
    method: "PUT",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/shows/0c9304c2-841d-40e8-9e48-a265d4c8f79b';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'status',
                'contents' => 'PUBLISHED'
            ],
            [
                'name' => 'title',
                'contents' => 'Dies ist eine Episode.'
            ],
            [
                'name' => 'description',
                'contents' => 'Shownotes zur Episode'
            ],
            [
                'name' => 'author',
                'contents' => 'Maxima Musterfrau'
            ],
            [
                'name' => 'copyright',
                'contents' => 'Podcast-Team MM'
            ],
            [
                'name' => 'link',
                'contents' => 'https://beispiel.podcaster.de/folge-1'
            ],
            [
                'name' => 'file_id',
                'contents' => '1554927456'
            ],
            [
                'name' => 'audiotakes_guid',
                'contents' => 'b'
            ],
            [
                'name' => 'itunes[episode]',
                'contents' => '1'
            ],
            [
                'name' => 'itunes[episodeType]',
                'contents' => 'full'
            ],
            [
                'name' => 'itunes[season]',
                'contents' => '1'
            ],
            [
                'name' => 'itunes[logo]',
                'contents' => '0c9304c2-841d-40e8-9e48-a265d4c8f79b'
            ],
            [
                'name' => 'itunes[explicit]',
                'contents' => ''
            ],
            [
                'name' => 'itunes[block]',
                'contents' => ''
            ],
            [
                'name' => 'publishing_date',
                'contents' => '2026-10-20'
            ],
            [
                'name' => 'publishing_time',
                'contents' => '12:10:59'
            ],
            [
                'name' => 'podcastindex[episode_node_value]',
                'contents' => '4326.41688'
            ],
            [
                'name' => 'podcastindex[episode_display]',
                'contents' => 'm'
            ],
            [
                'name' => 'podcastindex[chapter_url]',
                'contents' => 'https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt'
            ],
            [
                'name' => 'podcastindex[chapter_type]',
                'contents' => 'w'
            ],
            [
                'name' => 'podcastindex[image_srcset]',
                'contents' => 'architecto'
            ],
            [
                'name' => 'podcastindex[license_node_value]',
                'contents' => 'n'
            ],
            [
                'name' => 'podcastindex[license_url]',
                'contents' => 'http://crooks.biz/et-fugiat-sunt-nihil-accusantium'
            ],
            [
                'name' => 'podcastindex[location_node_value]',
                'contents' => 'n'
            ],
            [
                'name' => 'podcastindex[location_geo_latitude]',
                'contents' => '4326.41688'
            ],
            [
                'name' => 'podcastindex[location_geo_longitude]',
                'contents' => '4326.41688'
            ],
            [
                'name' => 'podcastindex[location_osm]',
                'contents' => 'm'
            ],
            [
                'name' => 'podcastindex[season_node_value]',
                'contents' => '16'
            ],
            [
                'name' => 'podcastindex[season_name]',
                'contents' => 'n'
            ],
            [
                'name' => 'podcastindex[transcript]',
                'contents' => '0c9304c2-841d-40e8-9e48-a265d4c8f79b'
            ],
            [
                'name' => 'write_metadata',
                'contents' => '1'
            ],
            [
                'name' => 'cover',
                'contents' => fopen('/tmp/phpbjvir40gos9l4vay8Ug', 'r')
            ],
            [
                'name' => 'podcastindex[transcript_file]',
                'contents' => fopen('/tmp/php9tmda5qomocjaZsyuG4', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/shows/0c9304c2-841d-40e8-9e48-a265d4c8f79b'
files = {
  'status': (None, 'PUBLISHED'),
  'title': (None, 'Dies ist eine Episode.'),
  'description': (None, 'Shownotes zur Episode'),
  'author': (None, 'Maxima Musterfrau'),
  'copyright': (None, 'Podcast-Team MM'),
  'link': (None, 'https://beispiel.podcaster.de/folge-1'),
  'file_id': (None, '1554927456'),
  'audiotakes_guid': (None, 'b'),
  'itunes[episode]': (None, '1'),
  'itunes[episodeType]': (None, 'full'),
  'itunes[season]': (None, '1'),
  'itunes[logo]': (None, '0c9304c2-841d-40e8-9e48-a265d4c8f79b'),
  'itunes[explicit]': (None, ''),
  'itunes[block]': (None, ''),
  'publishing_date': (None, '2026-10-20'),
  'publishing_time': (None, '12:10:59'),
  'podcastindex[episode_node_value]': (None, '4326.41688'),
  'podcastindex[episode_display]': (None, 'm'),
  'podcastindex[chapter_url]': (None, 'https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt'),
  'podcastindex[chapter_type]': (None, 'w'),
  'podcastindex[image_srcset]': (None, 'architecto'),
  'podcastindex[license_node_value]': (None, 'n'),
  'podcastindex[license_url]': (None, 'http://crooks.biz/et-fugiat-sunt-nihil-accusantium'),
  'podcastindex[location_node_value]': (None, 'n'),
  'podcastindex[location_geo_latitude]': (None, '4326.41688'),
  'podcastindex[location_geo_longitude]': (None, '4326.41688'),
  'podcastindex[location_osm]': (None, 'm'),
  'podcastindex[season_node_value]': (None, '16'),
  'podcastindex[season_name]': (None, 'n'),
  'podcastindex[transcript]': (None, '0c9304c2-841d-40e8-9e48-a265d4c8f79b'),
  'write_metadata': (None, '1'),
  'cover': open('/tmp/phpbjvir40gos9l4vay8Ug', 'rb'),
  'podcastindex[transcript_file]': open('/tmp/php9tmda5qomocjaZsyuG4', 'rb')}
payload = {
    "status": "PUBLISHED",
    "title": "Dies ist eine Episode.",
    "description": "Shownotes zur Episode",
    "author": "Maxima Musterfrau",
    "copyright": "Podcast-Team MM",
    "link": "https:\/\/beispiel.podcaster.de\/folge-1",
    "file_id": "1554927456",
    "audiotakes_guid": "b",
    "itunes": {
        "episode": 1,
        "episodeType": "full",
        "season": 1,
        "logo": "0c9304c2-841d-40e8-9e48-a265d4c8f79b",
        "explicit": false,
        "block": false
    },
    "publishing_date": "2026-10-20",
    "publishing_time": "12:10:59",
    "podcastindex": {
        "episode_node_value": 4326.41688,
        "episode_display": "m",
        "chapter_url": "https:\/\/www.gulgowski.com\/nihil-accusantium-harum-mollitia-modi-deserunt",
        "chapter_type": "w",
        "image_srcset": "architecto",
        "license_node_value": "n",
        "license_url": "http:\/\/crooks.biz\/et-fugiat-sunt-nihil-accusantium",
        "location_node_value": "n",
        "location_geo_latitude": 4326.41688,
        "location_geo_longitude": 4326.41688,
        "location_osm": "m",
        "season_node_value": 16,
        "season_name": "n",
        "transcript": "0c9304c2-841d-40e8-9e48-a265d4c8f79b"
    },
    "write_metadata": true
}
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/json'
}

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

Request      

PUT v1/shows/{show_uuid}

PATCH v1/shows/{show_uuid}

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

URL Parameters

show_uuid   string     

UUID der Episode. Example: 0c9304c2-841d-40e8-9e48-a265d4c8f79b

Body Parameters

status   string     

Veröffentlichungsstatus: DRAFT (Entwurf) oder PUBLISHED (Veröffentlicht). Example: PUBLISHED

Must be one of:
  • 1
  • 2
  • 4
  • 8
  • 16
title   string  optional    

Titel der Episode. :Attribute darf maximal 255 Zeichen haben. Example: Dies ist eine Episode.

description   string  optional    

Beschreibung der Episode. :Attribute darf maximal 4000 Zeichen haben. Example: Shownotes zur Episode

author   string  optional    

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

copyright   string  optional    

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

link   string  optional    

Link zur Webseite der Episode. Must be a valid URL. :Attribute darf maximal 400 Zeichen haben. Example: https://beispiel.podcaster.de/folge-1

guid   string  optional    

GUID der Episode, eindeutig innerhalb des Podcasts. Leer gesendet bleibt die bisherige GUID erhalten. :Attribute darf maximal 255 Zeichen haben.

file_id   string  optional    

ID einer Medien-Datei. Example: 1554927456

audiotakes_guid   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: b

itunes   object  optional    
title   string  optional    

Apple Podcast-spezifischer Titel der Episode. :Attribute darf maximal 255 Zeichen haben.

subtitle   string  optional    

Apple Podcast-spezifischer Untertitel der Episode. :Attribute darf maximal 255 Zeichen haben.

summary   string  optional    

Apple Podcast-spezifische Zusammenfassung der Episode (ohne HTML). :Attribute darf maximal 4000 Zeichen haben.

episode   integer  optional    

Episodennummer. Example: 1

episodeType   string  optional    

Episodentyp: full, trailer oder bonus. Leer gesendet gilt full. Example: full

Must be one of:
  • full
  • trailer
  • bonus
season   integer  optional    

Staffelnummer. Example: 1

logo   string  optional    

UUID eines bereits hochgeladenen Episodencovers aus der Mediathek. Nicht zusammen mit cover. Example: 0c9304c2-841d-40e8-9e48-a265d4c8f79b

explicit   boolean  optional    

Ob die Episode explizite Inhalte enthält. Nein: false, 0 oder "no". Ja: true, 1 oder "yes". Leer gesendet gilt die Episode als nicht explizit. Example: false

block   boolean  optional    

Ob die Episode in Apple Podcasts ausgeblendet werden soll. Nein: false, 0 oder "no". Ja: true, 1 oder "yes". Example: false

author   string  optional    

Autor der Episode für Apple Podcasts. :Attribute darf maximal 255 Zeichen haben.

publishing_date   string  optional    

Veröffentlichungsdatum (Y-m-d). Leer gesendet gilt das heutige Datum. Must be a valid date in the format Y-m-d. Example: 2026-10-20

publishing_time   string  optional    

Veröffentlichungszeit (H:i:s). Leer gesendet gilt die aktuelle Uhrzeit. Must be a valid date in the format H:i:s. Example: 12:10:59

cover   file  optional    

Episodencover, das direkt mit hochgeladen wird (PNG oder JPG, quadratisch, 1400–3000 Pixel, max. 3 MB). Nicht zusammen mit itunes.logo. Must be a file. Example: /tmp/phpbjvir40gos9l4vay8Ug

podcastindex   object  optional    
episode_node_value   number  optional    

Example: 4326.41688

episode_display   string  optional    

:Attribute darf maximal 32 Zeichen haben. Example: m

chapter_url   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt

chapter_type   string  optional    

:Attribute darf maximal 50 Zeichen haben. Example: w

image_srcset   string  optional    

Example: architecto

license_node_value   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: n

license_url   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: http://crooks.biz/et-fugiat-sunt-nihil-accusantium

location_node_value   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: n

location_geo_latitude   number  optional    

Example: 4326.41688

location_geo_longitude   number  optional    

Example: 4326.41688

location_osm   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: m

season_node_value   integer  optional    

Example: 16

season_name   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: n

transcript   string  optional    

UUID eines bereits hochgeladenen Transkripts aus der Mediathek. Nicht zusammen mit podcastindex.transcript_file. Example: 0c9304c2-841d-40e8-9e48-a265d4c8f79b

transcript_file   file  optional    

Transkript-Datei, die direkt mit hochgeladen wird (VTT, SRT, JSON oder TXT). Nicht zusammen mit podcastindex.transcript. Must be a file. Example: /tmp/php9tmda5qomocjaZsyuG4

write_metadata   boolean  optional    

Example: true

Delete episode

requires authentication

Removes an episode from a podcast channel. Accessible with scope: shows

Example request:
curl --request DELETE \
    "https://podcaster.rest/v1/shows/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://podcaster.rest/v1/shows/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/shows/6ff8f7f6-1eb3-3525-be4a-3932c805afed';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/shows/6ff8f7f6-1eb3-3525-be4a-3932c805afed'
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Request      

DELETE v1/shows/{show_uuid}

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

show_uuid   string     

Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

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://podcaster.rest/v1/media?sort_by=name&sort_dir=desc&filter=%22kreativ%22&strict=1&page[number]=1&page[size]=10" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://podcaster.rest/v1/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_ACCESS_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/media';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            '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://podcaster.rest/v1/media'
params = {
  'sort_by': 'name',
  'sort_dir': 'desc',
  'filter': '"kreativ"',
  'strict': '1',
  'page[number]': '1',
  'page[size]': '10',
}
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200):


{
    "items": {
        "data": [
            {
                "type": "media",
                "id": "0c9304c2-841d-40e8-9e48-a265d4c8f79b",
                "links": {
                    "self": "https://files.pdcstrcdn.de/h/beispiel/i/1600240053/f/1400x1400.png",
                    "embed": "https://files.pdcstrcdn.de/h/beispiel/i/1600240053/f/1400x1400.png?v=1600240053"
                },
                "attributes": {
                    "name": "1400x1400.png",
                    "byte": 14644,
                    "created": "16.09.20 09:07",
                    "created_date": "16.09.20",
                    "created_time": "09:07",
                    "size": "14.3 KB",
                    "cat": null,
                    "extension": "png",
                    "mimetype": "image/png",
                    "type": "image"
                }
            },
            {
                "type": "media",
                "id": "106ffd15-9619-457f-b35e-46d418afa34d",
                "links": {
                    "self": "https://files.pdcstrcdn.de/h/beispiel/i/1593720040/f/3000x3000.png",
                    "embed": "https://files.pdcstrcdn.de/h/beispiel/i/1593720040/f/3000x3000.png?v=1593720040"
                },
                "attributes": {
                    "name": "3000x3000.png",
                    "byte": 93132,
                    "created": "02.07.20 22:00",
                    "created_date": "02.07.20",
                    "created_time": "22:00",
                    "size": "90.95 KB",
                    "cat": "logos",
                    "extension": "png",
                    "mimetype": "image/png",
                    "type": "image"
                }
            }
        ],
        "count": 0
    },
    "labels": [],
    "total": 7
}
 

Request      

GET v1/media

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

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

Get file

requires authentication

Gets details for a media file.

Example request:
curl --request GET \
    --get "https://podcaster.rest/v1/media/0c9304c2-841d-40e8-9e48-a265d4c8f79b" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://podcaster.rest/v1/media/0c9304c2-841d-40e8-9e48-a265d4c8f79b"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/media/0c9304c2-841d-40e8-9e48-a265d4c8f79b';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/media/0c9304c2-841d-40e8-9e48-a265d4c8f79b'
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200):


{
    "name": "1400x1400.png",
    "byte": 14644,
    "size": "14.3 KB",
    "mime_type": "image/png",
    "type": "image",
    "url": "https://beispiel.podcaster.de/download/1400x1400.png",
    "uuid": "0c9304c2-841d-40e8-9e48-a265d4c8f79b",
    "extension": "png",
    "created": "16.09.20 09:07",
    "created_time": "09:07",
    "created_date": "16.09.20",
    "width": 1400,
    "height": 1400,
    "isLogo": true,
    "usage": [
        "Cover vom Podcast `Beispiel-Podcast`"
    ],
    "intern": "https://www.podcaster.de/s/i/0c9304c2-841d-40e8-9e48-a265d4c8f79b/1400x1400.png"
}
 

Request      

GET v1/media/{media_id}

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

media_id   string     

UUID of the media file (as returned as id by the file list). Example: 0c9304c2-841d-40e8-9e48-a265d4c8f79b

Upload file

requires authentication

Stores a file in the media manager.

Example request:
curl --request POST \
    "https://podcaster.rest/v1/media" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "media=@/tmp/phpd1fo2rft18oi8ExQkxl" 
const url = new URL(
    "https://podcaster.rest/v1/media"
);

const headers = {
    "Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
    "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://podcaster.rest/v1/media';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'media',
                'contents' => fopen('/tmp/phpd1fo2rft18oi8ExQkxl', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/media'
files = {
  'media': open('/tmp/phpd1fo2rft18oi8ExQkxl', 'rb')}
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/json'
}

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

Request      

POST v1/media

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Body Parameters

media   file     

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

Delete file

requires authentication

Remove a file from the media manager.

Example request:
curl --request DELETE \
    "https://podcaster.rest/v1/media/0c9304c2-841d-40e8-9e48-a265d4c8f79b" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://podcaster.rest/v1/media/0c9304c2-841d-40e8-9e48-a265d4c8f79b"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/media/0c9304c2-841d-40e8-9e48-a265d4c8f79b';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/media/0c9304c2-841d-40e8-9e48-a265d4c8f79b'
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Request      

DELETE v1/media/{media_id}

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

media_id   string     

UUID of the media file to be deleted (as returned as id by the file list). Example: 0c9304c2-841d-40e8-9e48-a265d4c8f79b

Podcasts

List podcasts

requires authentication

Returns a list of podcasts. Accessible with scopes: feeds,feeds-read-only

Example request:
curl --request GET \
    --get "https://podcaster.rest/v1/channels?page%5Bnumber%5D=1&page%5Bsize%5D=10" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://podcaster.rest/v1/channels"
);

const params = {
    "page[number]": "1",
    "page[size]": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/channels';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            '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://podcaster.rest/v1/channels'
params = {
  'page[number]': '1',
  'page[size]': '10',
}
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200):


{
    "data": [
        {
            "type": "channel",
            "id": "d8d4c7af-9923-4957-a26c-257b50d03026",
            "links": {
                "self": "https://podcaster.rest/api/channels/d8d4c7af-9923-4957-a26c-257b50d03026",
                "rss": "https://3c7nyt.podcaster.de/fyshbm9vMKOWBu2sJOY5.rss",
                "web": "",
                "logo": "https://podcaster.rest/images/help/cover_missing.svg?v=1"
            },
            "attributes": {
                "rss": {
                    "title": "dignissimos",
                    "subtitle": "Necessitatibus.",
                    "description": "Quis eaque aut necessitatibus delectus aspernatur. Quis omnis omnis omnis eaque natus sit. Officia dolorem molestiae deleniti eos et ut non sed.",
                    "copyright": "Ut amet."
                },
                "logo": null,
                "is_explicit": true,
                "is_protected": null,
                "imported": null,
                "podcastindex": {
                    "guid": "eYtzzsI1HU1aGjupIx7A",
                    "medium": "id",
                    "podping": true,
                    "license": {
                        "identifier": "Qui qui beatae nisi.",
                        "url": "http://seidl.com/"
                    },
                    "locked": {
                        "value": "no",
                        "owner": "sauer.thilo@web.de"
                    },
                    "update_frequency": {
                        "description": "Täglich",
                        "complete": true,
                        "dtstart": "2026-10-22T12:53:34.000000Z",
                        "rrule": "FREQ=DAILY"
                    },
                    "chat": [],
                    "trailer": [],
                    "blocks": [],
                    "fundings": [],
                    "images": [],
                    "locations": [],
                    "persons": [],
                    "txts": [],
                    "social_interacts": [],
                    "remote_items": [],
                    "podrolls": [],
                    "publisher": [],
                    "live_items": [],
                    "values": []
                }
            },
            "shows_count": 0
        },
        {
            "type": "channel",
            "id": "9010053c-b764-4afd-88cb-77959e0d5fe9",
            "links": {
                "self": "https://podcaster.rest/api/channels/9010053c-b764-4afd-88cb-77959e0d5fe9",
                "rss": "https://caunrc.podcaster.de/xEl1ab6Ih1q5PuIhB3w4.rss",
                "web": "",
                "logo": "https://podcaster.rest/images/help/cover_missing.svg?v=1"
            },
            "attributes": {
                "rss": {
                    "title": "quasi",
                    "subtitle": "Quidem quam.",
                    "description": "Delectus culpa qui quis aut sit similique. Expedita aspernatur laudantium et voluptatem delectus quis iusto. Et itaque dolores distinctio soluta.",
                    "copyright": "Voluptas."
                },
                "logo": null,
                "is_explicit": true,
                "is_protected": null,
                "imported": null,
                "podcastindex": {
                    "guid": "oG6L2v2JAwiZTdyIpa9z",
                    "medium": "voluptatem",
                    "podping": true,
                    "license": {
                        "identifier": "Aut autem autem.",
                        "url": "http://seiler.de/expedita-consequuntur-culpa-dolorem-veniam-qui-beatae-ut"
                    },
                    "locked": {
                        "value": "yes",
                        "owner": "pweise@posteo.de"
                    },
                    "update_frequency": {
                        "description": "Täglich",
                        "complete": false,
                        "dtstart": "2026-10-22T12:53:35.000000Z",
                        "rrule": "FREQ=DAILY"
                    },
                    "chat": [],
                    "trailer": [],
                    "blocks": [],
                    "fundings": [],
                    "images": [],
                    "locations": [],
                    "persons": [],
                    "txts": [],
                    "social_interacts": [],
                    "remote_items": [],
                    "podrolls": [],
                    "publisher": [],
                    "live_items": [],
                    "values": []
                }
            },
            "shows_count": 0
        }
    ]
}
 

Request      

GET v1/channels

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

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://podcaster.rest/v1/channels/a07d83fb-55db-47a0-80fa-fd3cc28d0327" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://podcaster.rest/v1/channels/a07d83fb-55db-47a0-80fa-fd3cc28d0327"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/channels/a07d83fb-55db-47a0-80fa-fd3cc28d0327';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/channels/a07d83fb-55db-47a0-80fa-fd3cc28d0327'
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200):


{
    "data": {
        "type": "channel",
        "id": "666a9d44-32d5-471d-b4d4-feeeea5227a1",
        "feed_id": "JZQyXkN7n7IPQRms5B28",
        "attributes": {
            "rss": {
                "title": "aut",
                "description": "Veniam corporis dolorem mollitia. Nemo odit quia officia est dignissimos. Blanditiis odio veritatis excepturi doloribus delectus fugit. Repudiandae laboriosam est alias tenetur ratione.",
                "copyright": "Assumenda.",
                "subtitle": "Suscipit doloribus.",
                "link": "http://www.ott.com/rem-est-esse-sint-aut",
                "author": "Julius Weiss-Jacobs",
                "email": "klose.birgitta@hinz.net",
                "language": "ie",
                "category": "molestiae"
            },
            "itunes": {
                "title": null,
                "subtitle": "Suscipit doloribus.",
                "summary": "Ut aut deserunt et.",
                "author": null,
                "type": "serial",
                "block": false,
                "explicit": false,
                "complete": false,
                "new_feed_url": "https://pfeifer.org/dicta-vitae-assumenda-consequatur-ut.html",
                "category": [],
                "logo": null
            },
            "podcastindex": {
                "guid": "Mj2fSJddPVZAKYYDnifm",
                "medium": "et",
                "podping": true,
                "license": {
                    "identifier": "Quisquam sit.",
                    "url": "http://marquardt.de/dolores-sed-rem-ea"
                },
                "locked": {
                    "value": "yes",
                    "owner": "lorenz88@reimer.com"
                },
                "update_frequency": {
                    "description": "Täglich",
                    "complete": false,
                    "dtstart": "2026-10-22T12:53:37.000000Z",
                    "rrule": "FREQ=DAILY"
                },
                "chat": [],
                "trailer": [],
                "blocks": [],
                "fundings": [],
                "images": [],
                "locations": [],
                "persons": [],
                "txts": [],
                "social_interacts": [],
                "remote_items": [],
                "podrolls": [],
                "publisher": [],
                "live_items": [],
                "values": []
            },
            "logo": "https://podcaster.rest/images/help/cover_missing.svg?v=1"
        },
        "links": {
            "self": "https://podcaster.rest/api/channels/JZQyXkN7n7IPQRms5B28",
            "rss": "https://vjmfkq.podcaster.de/JZQyXkN7n7IPQRms5B28.rss",
            "web": "",
            "logo": "https://podcaster.rest/images/help/cover_missing.svg?v=1",
            "remove_sync": false,
            "logo_intern": "https://podcaster.rest/images/help/cover_missing.svg?v=1"
        },
        "shows_count": 0,
        "imported": null
    }
}
 

Request      

GET v1/channels/{channel_uuid}

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

channel_uuid   string     

Example: a07d83fb-55db-47a0-80fa-fd3cc28d0327

uuid   string     

UUID of the podcast (channel). Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

Create podcast

requires authentication

Creates a new podcast. Accessible with scope: feeds

Example request:
curl --request POST \
    "https://podcaster.rest/v1/channels?channel=architecto" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"feed_id\": \"neuer-podcast\",
    \"feed_url\": \"http:\\/\\/www.bailey.biz\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\",
    \"title\": \"Dies ist ein Podcast.\",
    \"author\": \"Fabio\",
    \"description\": \"Diese Episode ist über das podcaster API.\",
    \"copyright\": \"Free to use\",
    \"link\": \"https:\\/\\/beispiel.podcast.de\",
    \"email\": \"cecil42@example.com\",
    \"language\": \"y\",
    \"category\": \"k\",
    \"apple_podcasts_title\": \"c\",
    \"apple_podcasts_subtitle\": \"Das ist der Untertitel\",
    \"apple_podcasts_summary\": \"m\",
    \"apple_podcasts_explicit\": false,
    \"apple_podcasts_block\": false,
    \"apple_podcasts_complete\": false,
    \"apple_podcasts_author\": \"y\",
    \"apple_podcasts_type\": \"episodic\",
    \"channel_apple_podcasts_category\": [],
    \"channel_domain\": {
        \"protocol\": \"http\",
        \"domain\": \"b\",
        \"subdomain\": \"n\"
    },
    \"image_id\": \"architecto\",
    \"podcast_index_guid\": \"n\",
    \"podcast_index_medium\": \"g\",
    \"podcast_index_uses_podping\": true,
    \"podcast_index_license_node_value\": \"z\",
    \"podcast_index_license_url\": \"http:\\/\\/rempel.com\\/sunt-nihil-accusantium-harum-mollitia\",
    \"podcast_index_locked_node_value\": \"k\",
    \"podcast_index_locked_owner\": \"h\",
    \"podcast_index_update_frequency_node_value\": \"w\",
    \"podcast_index_update_frequency_complete\": false,
    \"podcast_index_update_frequency_dt_start\": \"2026-10-22T14:53:37\",
    \"podcast_index_update_frequency_rrule\": \"a\",
    \"podcast_index_trailer\": {
        \"node_value\": \"y\",
        \"url\": \"http:\\/\\/www.romaguera.net\\/aut-adipisci-quidem-nostrum-qui-commodi-incidunt-iure\",
        \"pubdate\": \"2026-10-22T14:53:37\",
        \"type\": \"r\",
        \"season\": 4326.41688
    },
    \"podcast_index_chat\": {
        \"server\": \"m\",
        \"protocol\": \"i\",
        \"accountId\": \"y\",
        \"space\": \"v\"
    },
    \"podcast_index_blocks\": [
        {
            \"node_value\": \"d\",
            \"service_id\": \"l\"
        }
    ],
    \"podcast_index_fundings\": [
        {
            \"node_value\": \"j\",
            \"url\": \"http:\\/\\/tillman.com\\/\"
        }
    ],
    \"podcast_index_txts\": [
        {
            \"node_value\": \"h\",
            \"purpose\": \"w\"
        }
    ],
    \"podcast_index_images\": [
        {
            \"href\": \"a\",
            \"alt\": \"y\",
            \"aspect_ratio\": \"kcmyuwpwlvqwrsit\",
            \"width\": 4326.41688,
            \"height\": 4326.41688,
            \"type\": \"m\",
            \"purpose\": \"i\"
        }
    ],
    \"podcast_index_locations\": [
        {
            \"node_value\": \"y\",
            \"rel\": \"v\",
            \"geo_latitude\": 4326.41688,
            \"geo_longitude\": 4326.41688,
            \"osm\": \"m\",
            \"country\": \"iy\"
        }
    ],
    \"podcast_index_persons\": [
        {
            \"node_value\": \"v\",
            \"role\": \"d\",
            \"group\": \"l\",
            \"img\": \"j\",
            \"href\": \"n\"
        }
    ],
    \"podcast_index_social_interacts\": [
        {
            \"uri\": \"i\",
            \"protocol\": \"k\",
            \"account_id\": \"h\",
            \"account_url\": \"http:\\/\\/www.dubuque.net\\/quo-omnis-nostrum-aut-adipisci\",
            \"priority\": 4326.41688
        }
    ],
    \"podcast_index_remote_items\": [
        {
            \"feed_guid\": \"m\",
            \"feed_url\": \"https:\\/\\/www.gulgowski.com\\/nihil-accusantium-harum-mollitia-modi-deserunt\",
            \"item_guid\": \"w\",
            \"medium\": \"a\",
            \"title\": \"y\"
        }
    ],
    \"podcast_index_values\": [
        {
            \"type\": \"k\",
            \"method\": \"c\",
            \"suggested\": 4326.41688,
            \"recipients\": [
                {
                    \"name\": \"m\",
                    \"custom_key\": \"i\",
                    \"custom_value\": \"y\",
                    \"type\": \"v\",
                    \"address\": \"d\",
                    \"split\": 4326.41688,
                    \"fee\": false
                }
            ]
        }
    ],
    \"podcast_index_live_items\": [
        {
            \"status\": \"miyvdl\",
            \"start\": \"2026-10-22T14:53:37\",
            \"end\": \"2026-10-22T14:53:37\",
            \"content_links\": [
                {
                    \"node_value\": \"j\",
                    \"href\": \"n\"
                }
            ]
        }
    ]
}"
const url = new URL(
    "https://podcaster.rest/v1/channels"
);

const params = {
    "channel": "architecto",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

let body = {
    "feed_id": "neuer-podcast",
    "feed_url": "http:\/\/www.bailey.biz\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html",
    "title": "Dies ist ein Podcast.",
    "author": "Fabio",
    "description": "Diese Episode ist über das podcaster API.",
    "copyright": "Free to use",
    "link": "https:\/\/beispiel.podcast.de",
    "email": "cecil42@example.com",
    "language": "y",
    "category": "k",
    "apple_podcasts_title": "c",
    "apple_podcasts_subtitle": "Das ist der Untertitel",
    "apple_podcasts_summary": "m",
    "apple_podcasts_explicit": false,
    "apple_podcasts_block": false,
    "apple_podcasts_complete": false,
    "apple_podcasts_author": "y",
    "apple_podcasts_type": "episodic",
    "channel_apple_podcasts_category": [],
    "channel_domain": {
        "protocol": "http",
        "domain": "b",
        "subdomain": "n"
    },
    "image_id": "architecto",
    "podcast_index_guid": "n",
    "podcast_index_medium": "g",
    "podcast_index_uses_podping": true,
    "podcast_index_license_node_value": "z",
    "podcast_index_license_url": "http:\/\/rempel.com\/sunt-nihil-accusantium-harum-mollitia",
    "podcast_index_locked_node_value": "k",
    "podcast_index_locked_owner": "h",
    "podcast_index_update_frequency_node_value": "w",
    "podcast_index_update_frequency_complete": false,
    "podcast_index_update_frequency_dt_start": "2026-10-22T14:53:37",
    "podcast_index_update_frequency_rrule": "a",
    "podcast_index_trailer": {
        "node_value": "y",
        "url": "http:\/\/www.romaguera.net\/aut-adipisci-quidem-nostrum-qui-commodi-incidunt-iure",
        "pubdate": "2026-10-22T14:53:37",
        "type": "r",
        "season": 4326.41688
    },
    "podcast_index_chat": {
        "server": "m",
        "protocol": "i",
        "accountId": "y",
        "space": "v"
    },
    "podcast_index_blocks": [
        {
            "node_value": "d",
            "service_id": "l"
        }
    ],
    "podcast_index_fundings": [
        {
            "node_value": "j",
            "url": "http:\/\/tillman.com\/"
        }
    ],
    "podcast_index_txts": [
        {
            "node_value": "h",
            "purpose": "w"
        }
    ],
    "podcast_index_images": [
        {
            "href": "a",
            "alt": "y",
            "aspect_ratio": "kcmyuwpwlvqwrsit",
            "width": 4326.41688,
            "height": 4326.41688,
            "type": "m",
            "purpose": "i"
        }
    ],
    "podcast_index_locations": [
        {
            "node_value": "y",
            "rel": "v",
            "geo_latitude": 4326.41688,
            "geo_longitude": 4326.41688,
            "osm": "m",
            "country": "iy"
        }
    ],
    "podcast_index_persons": [
        {
            "node_value": "v",
            "role": "d",
            "group": "l",
            "img": "j",
            "href": "n"
        }
    ],
    "podcast_index_social_interacts": [
        {
            "uri": "i",
            "protocol": "k",
            "account_id": "h",
            "account_url": "http:\/\/www.dubuque.net\/quo-omnis-nostrum-aut-adipisci",
            "priority": 4326.41688
        }
    ],
    "podcast_index_remote_items": [
        {
            "feed_guid": "m",
            "feed_url": "https:\/\/www.gulgowski.com\/nihil-accusantium-harum-mollitia-modi-deserunt",
            "item_guid": "w",
            "medium": "a",
            "title": "y"
        }
    ],
    "podcast_index_values": [
        {
            "type": "k",
            "method": "c",
            "suggested": 4326.41688,
            "recipients": [
                {
                    "name": "m",
                    "custom_key": "i",
                    "custom_value": "y",
                    "type": "v",
                    "address": "d",
                    "split": 4326.41688,
                    "fee": false
                }
            ]
        }
    ],
    "podcast_index_live_items": [
        {
            "status": "miyvdl",
            "start": "2026-10-22T14:53:37",
            "end": "2026-10-22T14:53:37",
            "content_links": [
                {
                    "node_value": "j",
                    "href": "n"
                }
            ]
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/channels';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'channel' => 'architecto',
        ],
        'json' => [
            'feed_id' => 'neuer-podcast',
            'feed_url' => 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html',
            'title' => 'Dies ist ein Podcast.',
            'author' => 'Fabio',
            'description' => 'Diese Episode ist über das podcaster API.',
            'copyright' => 'Free to use',
            'link' => 'https://beispiel.podcast.de',
            'email' => 'cecil42@example.com',
            'language' => 'y',
            'category' => 'k',
            'apple_podcasts_title' => 'c',
            'apple_podcasts_subtitle' => 'Das ist der Untertitel',
            'apple_podcasts_summary' => 'm',
            'apple_podcasts_explicit' => false,
            'apple_podcasts_block' => false,
            'apple_podcasts_complete' => false,
            'apple_podcasts_author' => 'y',
            'apple_podcasts_type' => 'episodic',
            'channel_apple_podcasts_category' => [],
            'channel_domain' => ['protocol' => 'http', 'domain' => 'b', 'subdomain' => 'n'],
            'image_id' => 'architecto',
            'podcast_index_guid' => 'n',
            'podcast_index_medium' => 'g',
            'podcast_index_uses_podping' => true,
            'podcast_index_license_node_value' => 'z',
            'podcast_index_license_url' => 'http://rempel.com/sunt-nihil-accusantium-harum-mollitia',
            'podcast_index_locked_node_value' => 'k',
            'podcast_index_locked_owner' => 'h',
            'podcast_index_update_frequency_node_value' => 'w',
            'podcast_index_update_frequency_complete' => false,
            'podcast_index_update_frequency_dt_start' => '2026-10-22T14:53:37',
            'podcast_index_update_frequency_rrule' => 'a',
            'podcast_index_trailer' => ['node_value' => 'y', 'url' => 'http://www.romaguera.net/aut-adipisci-quidem-nostrum-qui-commodi-incidunt-iure', 'pubdate' => '2026-10-22T14:53:37', 'type' => 'r', 'season' => 4326.41688],
            'podcast_index_chat' => ['server' => 'm', 'protocol' => 'i', 'accountId' => 'y', 'space' => 'v'],
            'podcast_index_blocks' => [
                ['node_value' => 'd', 'service_id' => 'l'],
            ],
            'podcast_index_fundings' => [
                ['node_value' => 'j', 'url' => 'http://tillman.com/'],
            ],
            'podcast_index_txts' => [
                ['node_value' => 'h', 'purpose' => 'w'],
            ],
            'podcast_index_images' => [
                ['href' => 'a', 'alt' => 'y', 'aspect_ratio' => 'kcmyuwpwlvqwrsit', 'width' => 4326.41688, 'height' => 4326.41688, 'type' => 'm', 'purpose' => 'i'],
            ],
            'podcast_index_locations' => [
                ['node_value' => 'y', 'rel' => 'v', 'geo_latitude' => 4326.41688, 'geo_longitude' => 4326.41688, 'osm' => 'm', 'country' => 'iy'],
            ],
            'podcast_index_persons' => [
                ['node_value' => 'v', 'role' => 'd', 'group' => 'l', 'img' => 'j', 'href' => 'n'],
            ],
            'podcast_index_social_interacts' => [
                ['uri' => 'i', 'protocol' => 'k', 'account_id' => 'h', 'account_url' => 'http://www.dubuque.net/quo-omnis-nostrum-aut-adipisci', 'priority' => 4326.41688],
            ],
            'podcast_index_remote_items' => [
                ['feed_guid' => 'm', 'feed_url' => 'https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt', 'item_guid' => 'w', 'medium' => 'a', 'title' => 'y'],
            ],
            'podcast_index_values' => [
                [
                    'type' => 'k',
                    'method' => 'c',
                    'suggested' => 4326.41688,
                    'recipients' => [
                        ['name' => 'm', 'custom_key' => 'i', 'custom_value' => 'y', 'type' => 'v', 'address' => 'd', 'split' => 4326.41688, 'fee' => false],
                    ],
                ],
            ],
            'podcast_index_live_items' => [
                [
                    'status' => 'miyvdl',
                    'start' => '2026-10-22T14:53:37',
                    'end' => '2026-10-22T14:53:37',
                    'content_links' => [
                        ['node_value' => 'j', 'href' => 'n'],
                    ],
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/channels'
payload = {
    "feed_id": "neuer-podcast",
    "feed_url": "http:\/\/www.bailey.biz\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html",
    "title": "Dies ist ein Podcast.",
    "author": "Fabio",
    "description": "Diese Episode ist über das podcaster API.",
    "copyright": "Free to use",
    "link": "https:\/\/beispiel.podcast.de",
    "email": "cecil42@example.com",
    "language": "y",
    "category": "k",
    "apple_podcasts_title": "c",
    "apple_podcasts_subtitle": "Das ist der Untertitel",
    "apple_podcasts_summary": "m",
    "apple_podcasts_explicit": false,
    "apple_podcasts_block": false,
    "apple_podcasts_complete": false,
    "apple_podcasts_author": "y",
    "apple_podcasts_type": "episodic",
    "channel_apple_podcasts_category": [],
    "channel_domain": {
        "protocol": "http",
        "domain": "b",
        "subdomain": "n"
    },
    "image_id": "architecto",
    "podcast_index_guid": "n",
    "podcast_index_medium": "g",
    "podcast_index_uses_podping": true,
    "podcast_index_license_node_value": "z",
    "podcast_index_license_url": "http:\/\/rempel.com\/sunt-nihil-accusantium-harum-mollitia",
    "podcast_index_locked_node_value": "k",
    "podcast_index_locked_owner": "h",
    "podcast_index_update_frequency_node_value": "w",
    "podcast_index_update_frequency_complete": false,
    "podcast_index_update_frequency_dt_start": "2026-10-22T14:53:37",
    "podcast_index_update_frequency_rrule": "a",
    "podcast_index_trailer": {
        "node_value": "y",
        "url": "http:\/\/www.romaguera.net\/aut-adipisci-quidem-nostrum-qui-commodi-incidunt-iure",
        "pubdate": "2026-10-22T14:53:37",
        "type": "r",
        "season": 4326.41688
    },
    "podcast_index_chat": {
        "server": "m",
        "protocol": "i",
        "accountId": "y",
        "space": "v"
    },
    "podcast_index_blocks": [
        {
            "node_value": "d",
            "service_id": "l"
        }
    ],
    "podcast_index_fundings": [
        {
            "node_value": "j",
            "url": "http:\/\/tillman.com\/"
        }
    ],
    "podcast_index_txts": [
        {
            "node_value": "h",
            "purpose": "w"
        }
    ],
    "podcast_index_images": [
        {
            "href": "a",
            "alt": "y",
            "aspect_ratio": "kcmyuwpwlvqwrsit",
            "width": 4326.41688,
            "height": 4326.41688,
            "type": "m",
            "purpose": "i"
        }
    ],
    "podcast_index_locations": [
        {
            "node_value": "y",
            "rel": "v",
            "geo_latitude": 4326.41688,
            "geo_longitude": 4326.41688,
            "osm": "m",
            "country": "iy"
        }
    ],
    "podcast_index_persons": [
        {
            "node_value": "v",
            "role": "d",
            "group": "l",
            "img": "j",
            "href": "n"
        }
    ],
    "podcast_index_social_interacts": [
        {
            "uri": "i",
            "protocol": "k",
            "account_id": "h",
            "account_url": "http:\/\/www.dubuque.net\/quo-omnis-nostrum-aut-adipisci",
            "priority": 4326.41688
        }
    ],
    "podcast_index_remote_items": [
        {
            "feed_guid": "m",
            "feed_url": "https:\/\/www.gulgowski.com\/nihil-accusantium-harum-mollitia-modi-deserunt",
            "item_guid": "w",
            "medium": "a",
            "title": "y"
        }
    ],
    "podcast_index_values": [
        {
            "type": "k",
            "method": "c",
            "suggested": 4326.41688,
            "recipients": [
                {
                    "name": "m",
                    "custom_key": "i",
                    "custom_value": "y",
                    "type": "v",
                    "address": "d",
                    "split": 4326.41688,
                    "fee": false
                }
            ]
        }
    ],
    "podcast_index_live_items": [
        {
            "status": "miyvdl",
            "start": "2026-10-22T14:53:37",
            "end": "2026-10-22T14:53:37",
            "content_links": [
                {
                    "node_value": "j",
                    "href": "n"
                }
            ]
        }
    ]
}
params = {
  'channel': 'architecto',
}
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Request      

POST v1/channels

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

channel   string  optional    

Object Example: architecto

Body Parameters

feed_id   string     

ID (Bezeichner) für den Podcast(-Feed). :Attribute darf maximal 100 Zeichen haben. Example: neuer-podcast

feed_url   string  optional    

This field is required when feed_id is not present. Must be a valid URL. :Attribute darf maximal 255 Zeichen haben. Example: http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html

title   string     

Titel des Podcasts. :Attribute darf maximal 255 Zeichen haben. Example: Dies ist ein Podcast.

author   string     

Autor des Podcasts. :Attribute darf maximal 255 Zeichen haben. Example: Fabio

description   string     

Beschreibung des Podcasts. :Attribute darf maximal 4000 Zeichen haben. Example: Diese Episode ist über das podcaster API.

copyright   string     

Angabe zu Nutzerrechten. :Attribute darf maximal 255 Zeichen haben. Example: Free to use

link   string  optional    

Link zur Webseite des Podcasts. Must be a valid URL. :Attribute darf maximal 255 Zeichen haben. Example: https://beispiel.podcast.de

email   string     

:Attribute muss eine gültige E-Mail-Adresse sein. :Attribute darf maximal 255 Zeichen haben. Example: cecil42@example.com

language   string     

Must match an existing stored value. :Attribute darf maximal 3 Zeichen haben. Example: y

category   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: k

apple_podcasts_title   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: c

apple_podcasts_subtitle   string  optional    

Untertitel. :Attribute darf maximal 255 Zeichen haben. Example: Das ist der Untertitel

apple_podcasts_summary   string  optional    

:Attribute darf maximal 4000 Zeichen haben. Example: m

apple_podcasts_explicit   boolean  optional    

Ob der Podcast explizite Inhalte enthält. Nein: false, 0 oder "no". Ja: true, 1 oder "yes". Example: false

apple_podcasts_block   boolean  optional    

Example: false

apple_podcasts_complete   boolean  optional    

Ob der Podcast abgeschlossen ist (keine neuen Episoden). Nein: false, 0 oder "no". Ja: true, 1 oder "yes". Example: false

apple_podcasts_author   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: y

apple_podcasts_type   string  optional    

Podcast-Typ. Example: episodic

Must be one of:
  • episodic
  • serial
channel_apple_podcasts_category   object     

:Attribute muss mindestens 1 Elemente haben. :Attribute darf maximal 3 Elemente haben.

channel_domain   object  optional    
protocol   string  optional    

Example: http

Must be one of:
  • http
  • https
domain   string  optional    

:Attribute darf maximal 100 Zeichen haben. Example: b

subdomain   string     

Must match the regex /^(A-Za-z0-9?$)/u. :Attribute darf maximal 100 Zeichen haben. Example: n

image_id   string  optional    

Example: architecto

podcast_index_guid   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: n

podcast_index_medium   string  optional    

:Attribute darf maximal 32 Zeichen haben. Example: g

podcast_index_uses_podping   boolean  optional    

Example: true

podcast_index_license_node_value   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: z

podcast_index_license_url   string  optional    

Must be a valid URL. :Attribute darf maximal 255 Zeichen haben. Example: http://rempel.com/sunt-nihil-accusantium-harum-mollitia

podcast_index_locked_node_value   string  optional    

:Attribute darf maximal 3 Zeichen haben. Example: k

podcast_index_locked_owner   string  optional    

:Attribute muss eine gültige E-Mail-Adresse sein. :Attribute darf maximal 128 Zeichen haben. Example: h

podcast_index_update_frequency_node_value   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: w

podcast_index_update_frequency_complete   boolean  optional    

Example: false

podcast_index_update_frequency_dt_start   string  optional    

:Attribute muss ein gültiges Datum sein. Example: 2026-10-22T14:53:37

podcast_index_update_frequency_rrule   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: a

podcast_index_trailer   object  optional    
node_value   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: y

url   string  optional    

Must be a valid URL. :Attribute darf maximal 255 Zeichen haben. Example: http://www.romaguera.net/aut-adipisci-quidem-nostrum-qui-commodi-incidunt-iure

pubdate   string  optional    

:Attribute muss ein gültiges Datum sein. Example: 2026-10-22T14:53:37

type   string  optional    

:Attribute darf maximal 50 Zeichen haben. Example: r

season   number  optional    

Example: 4326.41688

podcast_index_chat   object  optional    
server   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: m

protocol   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: i

accountId   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: y

space   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: v

podcast_index_blocks   object[]  optional    
node_value   string  optional    

:Attribute darf maximal 3 Zeichen haben. Example: d

service_id   string  optional    

:Attribute darf maximal 32 Zeichen haben. Example: l

podcast_index_fundings   object[]  optional    
node_value   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: j

url   string  optional    

Must be a valid URL. :Attribute darf maximal 255 Zeichen haben. Example: http://tillman.com/

podcast_index_txts   object[]  optional    
node_value   string  optional    

:Attribute darf maximal 4000 Zeichen haben. Example: h

purpose   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: w

podcast_index_images   object[]  optional    
href   string  optional    

Must be a valid URL. :Attribute darf maximal 255 Zeichen haben. Example: a

alt   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: y

aspect_ratio   string  optional    

:Attribute darf maximal 16 Zeichen haben. Example: kcmyuwpwlvqwrsit

width   number  optional    

Example: 4326.41688

height   number  optional    

Example: 4326.41688

type   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: m

purpose   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: i

podcast_index_locations   object[]  optional    
node_value   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: y

rel   string  optional    

:Attribute darf maximal 30 Zeichen haben. Example: v

geo_latitude   number  optional    

Example: 4326.41688

geo_longitude   number  optional    

Example: 4326.41688

osm   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: m

country   string  optional    

:Attribute darf maximal 2 Zeichen haben. Example: iy

podcast_index_persons   object[]  optional    
node_value   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: v

role   string  optional    

:Attribute darf maximal 50 Zeichen haben. Example: d

group   string  optional    

:Attribute darf maximal 50 Zeichen haben. Example: l

img   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: j

href   string  optional    

Must be a valid URL. :Attribute darf maximal 255 Zeichen haben. Example: n

podcast_index_social_interacts   object[]  optional    
uri   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: i

protocol   string  optional    

:Attribute darf maximal 32 Zeichen haben. Example: k

account_id   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: h

account_url   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: http://www.dubuque.net/quo-omnis-nostrum-aut-adipisci

priority   number  optional    

Example: 4326.41688

podcast_index_remote_items   object[]  optional    
feed_guid   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: m

feed_url   string  optional    

Must be a valid URL. :Attribute darf maximal 255 Zeichen haben. Example: https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt

item_guid   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: w

medium   string  optional    

:Attribute darf maximal 32 Zeichen haben. Example: a

title   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: y

podcast_index_values   object[]  optional    
type   string  optional    

:Attribute darf maximal 50 Zeichen haben. Example: k

method   string  optional    

:Attribute darf maximal 50 Zeichen haben. Example: c

suggested   number  optional    

Example: 4326.41688

recipients   object[]  optional    
name   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: m

custom_key   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: i

custom_value   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: y

type   string  optional    

:Attribute darf maximal 50 Zeichen haben. Example: v

address   string  optional    

:Attribute darf maximal 255 Zeichen haben. Example: d

split   number  optional    

Example: 4326.41688

fee   boolean  optional    

Example: false

podcast_index_live_items   object[]  optional    
status   string  optional    

:Attribute darf maximal 10 Zeichen haben. Example: miyvdl

start   string  optional    

:Attribute muss ein gültiges Datum sein. Example: 2026-10-22T14:53:37

end   string  optional    

:Attribute muss ein gültiges Datum sein. Example: 2026-10-22T14:53:37

content_links   object[]  optional    
node_value   string  optional    

:Attribute darf maximal 128 Zeichen haben. Example: j

href   string  optional    

Must be a valid URL. :Attribute darf maximal 255 Zeichen haben. Example: n

Delete podcast

requires authentication

Caution Removes a podcast. Accessible with scope: feeds

Example request:
curl --request DELETE \
    "https://podcaster.rest/v1/channels/a07d83fb-55db-47a0-80fa-fd3cc28d0327" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://podcaster.rest/v1/channels/a07d83fb-55db-47a0-80fa-fd3cc28d0327"
);

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


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/channels/a07d83fb-55db-47a0-80fa-fd3cc28d0327';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/channels/a07d83fb-55db-47a0-80fa-fd3cc28d0327'
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Request      

DELETE v1/channels/{channel_uuid}

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

channel_uuid   string     

Example: a07d83fb-55db-47a0-80fa-fd3cc28d0327

uuid   string     

UUID of the podcast (channel). Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

Statistics

List statistics datasets

requires authentication

Returns every dataset this API can serve, the statistics level it requires and whether the authenticated account's package includes it. Use this to discover what GET /v1/statistics/{dataset} will answer before calling it.

Example request:
curl --request GET \
    --get "https://podcaster.rest/v1/statistics" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://podcaster.rest/v1/statistics"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/statistics';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/statistics'
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200):


{
    "data": [
        {
            "dataset": "summary",
            "description": "Totals for the range: Abrufe, unique listeners, hours listened, all-time Abrufe.",
            "tab": "dashboard",
            "requires_export": false,
            "required_level": 1,
            "required_level_name": "Starter",
            "included": true,
            "needs_range": true,
            "parameters": []
        }
    ],
    "meta": {
        "level": {
            "value": 3,
            "name": "Pro"
        },
        "tabs": [
            "dashboard",
            "hits",
            "episodes",
            "subscribers",
            "audience",
            "sources"
        ],
        "exports": [
            "csv",
            "pdf",
            "email"
        ]
    }
}
 

Request      

GET v1/statistics

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get a statistics dataset

requires authentication

Every dataset takes the same scope parameters — from, to, channel, episode — plus the ones listed for it by GET /v1/statistics. Figures cover the podcasts of the authenticated account only.

Example request:
curl --request GET \
    --get "https://podcaster.rest/v1/statistics/summary?from=2026-09-01&to=2026-09-30&channel=9f8e7d6c-5b4a-4321-8765-0a1b2c3d4e5f&grouping=daily&limit=50&format=json%0A%0ARate+limits+per+account%3A+40+requests%2Fminute+and+800%2Fhour+for+regular+datasets%2C%0A10%2Fminute+and+120%2Fhour+for+the+heavy+ones+%28%60insights.%2A%60%2C+%60explorer.%2A%60%2C+%60export.rows%60%2C%0A%60episodes.performance%60%2C+%60episodes.comparison%60%2C+%60audience.agents%60%2C+%60geo.points%60%29%2C+each%0Acounted+in+its+own+budget.+Exceeding+one+answers+429+with+a+%60Retry-After%60+header." \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"from\": \"2026-10-22\",
    \"to\": \"2052-11-14\",
    \"channel\": \"a4855dc5-0acb-33c3-b921-f4291f719ca0\",
    \"episode\": \"c90237e9-ced5-3af6-88ea-84aeaa148878\",
    \"grouping\": \"daily\",
    \"limit\": 15,
    \"order_by\": \"month_1\",
    \"direction\": \"desc\",
    \"episodes\": [
        \"d6fa562b-acd5-35ff-babb-d11194d3737b\"
    ],
    \"days\": 1,
    \"weeks\": 5,
    \"top\": 4,
    \"min_episodes\": 17,
    \"trend_days\": 5,
    \"threshold\": 3,
    \"country\": \"hw\",
    \"service\": \"a\",
    \"filters\": [
        [
            \"y\"
        ]
    ],
    \"format\": \"json\"
}"
const url = new URL(
    "https://podcaster.rest/v1/statistics/summary"
);

const params = {
    "from": "2026-09-01",
    "to": "2026-09-30",
    "channel": "9f8e7d6c-5b4a-4321-8765-0a1b2c3d4e5f",
    "grouping": "daily",
    "limit": "50",
    "format": "json

Rate limits per account: 40 requests/minute and 800/hour for regular datasets,
10/minute and 120/hour for the heavy ones (`insights.*`, `explorer.*`, `export.rows`,
`episodes.performance`, `episodes.comparison`, `audience.agents`, `geo.points`), each
counted in its own budget. Exceeding one answers 429 with a `Retry-After` header.",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

let body = {
    "from": "2026-10-22",
    "to": "2052-11-14",
    "channel": "a4855dc5-0acb-33c3-b921-f4291f719ca0",
    "episode": "c90237e9-ced5-3af6-88ea-84aeaa148878",
    "grouping": "daily",
    "limit": 15,
    "order_by": "month_1",
    "direction": "desc",
    "episodes": [
        "d6fa562b-acd5-35ff-babb-d11194d3737b"
    ],
    "days": 1,
    "weeks": 5,
    "top": 4,
    "min_episodes": 17,
    "trend_days": 5,
    "threshold": 3,
    "country": "hw",
    "service": "a",
    "filters": [
        [
            "y"
        ]
    ],
    "format": "json"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/statistics/summary';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'from' => '2026-09-01',
            'to' => '2026-09-30',
            'channel' => '9f8e7d6c-5b4a-4321-8765-0a1b2c3d4e5f',
            'grouping' => 'daily',
            'limit' => '50',
            'format' => 'json

Rate limits per account: 40 requests/minute and 800/hour for regular datasets,
10/minute and 120/hour for the heavy ones (`insights.*`, `explorer.*`, `export.rows`,
`episodes.performance`, `episodes.comparison`, `audience.agents`, `geo.points`), each
counted in its own budget. Exceeding one answers 429 with a `Retry-After` header.',
        ],
        'json' => [
            'from' => '2026-10-22',
            'to' => '2052-11-14',
            'channel' => 'a4855dc5-0acb-33c3-b921-f4291f719ca0',
            'episode' => 'c90237e9-ced5-3af6-88ea-84aeaa148878',
            'grouping' => 'daily',
            'limit' => 15,
            'order_by' => 'month_1',
            'direction' => 'desc',
            'episodes' => ['d6fa562b-acd5-35ff-babb-d11194d3737b'],
            'days' => 1,
            'weeks' => 5,
            'top' => 4,
            'min_episodes' => 17,
            'trend_days' => 5,
            'threshold' => 3,
            'country' => 'hw',
            'service' => 'a',
            'filters' => [
                ['y'],
            ],
            'format' => 'json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/statistics/summary'
payload = {
    "from": "2026-10-22",
    "to": "2052-11-14",
    "channel": "a4855dc5-0acb-33c3-b921-f4291f719ca0",
    "episode": "c90237e9-ced5-3af6-88ea-84aeaa148878",
    "grouping": "daily",
    "limit": 15,
    "order_by": "month_1",
    "direction": "desc",
    "episodes": [
        "d6fa562b-acd5-35ff-babb-d11194d3737b"
    ],
    "days": 1,
    "weeks": 5,
    "top": 4,
    "min_episodes": 17,
    "trend_days": 5,
    "threshold": 3,
    "country": "hw",
    "service": "a",
    "filters": [
        [
            "y"
        ]
    ],
    "format": "json"
}
params = {
  'from': '2026-09-01',
  'to': '2026-09-30',
  'channel': '9f8e7d6c-5b4a-4321-8765-0a1b2c3d4e5f',
  'grouping': 'daily',
  'limit': '50',
  'format': 'json

Rate limits per account: 40 requests/minute and 800/hour for regular datasets,
10/minute and 120/hour for the heavy ones (`insights.*`, `explorer.*`, `export.rows`,
`episodes.performance`, `episodes.comparison`, `audience.agents`, `geo.points`), each
counted in its own budget. Exceeding one answers 429 with a `Retry-After` header.',
}
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Example response (403, dataset not included in the package):


{
    "message": "The package of this account does not include the dataset \"insights.anomalies\".",
    "dataset": "insights.anomalies",
    "current_level": 2,
    "current_level_name": "Standard",
    "required_level": 4,
    "required_level_name": "Maxi"
}
 

Request      

GET v1/statistics/{dataset}

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

dataset   string     

Key from the dataset list, e.g. summary, episodes, geo.countries. Example: summary

Query Parameters

from   string  optional    

Start of the range (YYYY-MM-DD). Required for most datasets. Example: 2026-09-01

to   string  optional    

End of the range (YYYY-MM-DD), inclusive. Example: 2026-09-30

channel   string  optional    

Limit to one podcast (UUID). Example: 9f8e7d6c-5b4a-4321-8765-0a1b2c3d4e5f

episode   string  optional    

Limit to one episode (UUID); implies its podcast.

grouping   string  optional    

Time bucket for series: hourly, daily, weekly, monthly, quarterly, yearly. Example: daily

limit   integer  optional    

Row limit where the dataset returns a list (1-1000). Example: 50

format   string  optional    

export.rows only: json (default) or csv. Example: `json

Rate limits per account: 40 requests/minute and 800/hour for regular datasets, 10/minute and 120/hour for the heavy ones (insights.*, explorer.*, export.rows, episodes.performance, episodes.comparison, audience.agents, geo.points), each counted in its own budget. Exceeding one answers 429 with a Retry-After header.`

Body Parameters

from   string  optional    

Must be a valid date in the format Y-m-d. Example: 2026-10-22

to   string  optional    

Must be a valid date in the format Y-m-d. :Attribute muss ein Datum nach from oder gleich from sein. Example: 2052-11-14

channel   string  optional    

:Attribute muss ein UUID sein. Must match an existing stored value. Example: a4855dc5-0acb-33c3-b921-f4291f719ca0

episode   string  optional    

:Attribute muss ein UUID sein. Example: c90237e9-ced5-3af6-88ea-84aeaa148878

grouping   string  optional    

Example: daily

Must be one of:
  • hourly
  • daily
  • weekly
  • monthly
  • quarterly
  • yearly
limit   integer  optional    

:Attribute muss mindestens 1 sein. :Attribute darf maximal 1000 sein. Example: 15

order_by   string  optional    

Example: month_1

Must be one of:
  • first_seen
  • total_downloads
  • unique_listeners
  • day_1
  • week_1
  • month_1
direction   string  optional    

Example: desc

Must be one of:
  • asc
  • desc
episodes   string[]  optional    

:Attribute muss ein UUID sein.

days   integer  optional    

:Attribute muss mindestens 1 sein. :Attribute darf maximal 365 sein. Example: 1

weeks   integer  optional    

:Attribute muss mindestens 1 sein. :Attribute darf maximal 52 sein. Example: 5

top   integer  optional    

:Attribute muss mindestens 1 sein. :Attribute darf maximal 20 sein. Example: 4

min_episodes   integer  optional    

:Attribute muss mindestens 1 sein. :Attribute darf maximal 100 sein. Example: 17

trend_days   integer  optional    

:Attribute muss mindestens 1 sein. :Attribute darf maximal 365 sein. Example: 5

threshold   number  optional    

:Attribute muss mindestens 0.1 sein. :Attribute darf maximal 10 sein. Example: 3

country   string  optional    

:Attribute muss 2 Zeichen lang sein. Example: hw

service   string  optional    

:Attribute darf maximal 64 Zeichen haben. Example: a

filters   string[][]  optional    

:Attribute darf maximal 255 Zeichen haben.

format   string  optional    

Example: json

Must be one of:
  • json
  • csv

User

Get user

requires authentication

Fetches details about authenticated user.

Example request:
curl --request GET \
    --get "https://podcaster.rest/v1/user" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://podcaster.rest/v1/user"
);

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


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/user';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/user'
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200):


{
    "data": {
        "type": "user",
        "id": 24024,
        "attributes": {
            "id": 24024,
            "name": "Renate Rudolph",
            "first_name": "Renate",
            "last_name": "Rudolph",
            "username": "testing-kleinsigrid1881",
            "email": "ibender@example.org",
            "name_title": null,
            "telephone": "+49 (0761) 71733",
            "telefax": "+49228441 5490",
            "url": "http://niemann.com/molestias-fugit-deleniti-distinctio-eum-doloremque-id",
            "organisation": "Jordan e.V.",
            "department": null,
            "street": "Jungring",
            "housenumber": "339",
            "city": "Leutkirch im Allgäu",
            "country": "TG",
            "post_code": "80089",
            "representative": null,
            "mediarepresentative": null,
            "register_court": null,
            "register_number": null,
            "board": null,
            "chairman": null,
            "controlling_authority": null,
            "additional_specifications": null,
            "avatar": null
        },
        "links": {
            "self": "https://podcaster.rest/api/user"
        }
    }
}
 

Request      

GET v1/user

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Update current user profile

requires authentication

Updates the authenticated user's contact/billing details. Accessible with scope: user.

PUT semantics: any field present in {@see UserRequest}'s rules that is NOT supplied is reset to an empty string. To leave a value unchanged, re-send its current value. last_name and country are required; the rest are nullable.

Example request:
curl --request PUT \
    "https://podcaster.rest/v1/user" \
    --header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
    --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.\"
}"
const url = new URL(
    "https://podcaster.rest/v1/user"
);

const headers = {
    "Authorization": "Bearer {YOUR_ACCESS_TOKEN}",
    "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."
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://podcaster.rest/v1/user';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_ACCESS_TOKEN}',
            '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.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://podcaster.rest/v1/user'
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."
}
headers = {
  'Authorization': 'Bearer {YOUR_ACCESS_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Request      

PUT v1/user

Headers

Authorization        

Example: Bearer {YOUR_ACCESS_TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name_title   string  optional    

Titel. :Attribute muss mindestens 2 Zeichen lang sein. Example: Prof

first_name   string  optional    

Vorname. :Attribute muss mindestens 2 Zeichen lang sein. Example: Fabio

last_name   string     

Nachname. :Attribute muss mindestens 2 Zeichen lang sein. Example: Bacigalupo

telephone   string  optional    

Telefonnummer. :Attribute darf maximal 16 Zeichen haben. Example: 030-549072653

telefax   string  optional    

Faxnummer. :Attribute darf maximal 16 Zeichen haben. Example: 030-549072660

url   string  optional    

Website-URL. Must be a valid URL. :Attribute 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. :Attribute 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. :Attribute muss mindestens 2 Zeichen lang sein. Example: 10115

representative   string  optional    

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

mediarepresentative   string  optional    

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

register_court   string  optional    

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

register_number   string  optional    

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

board   string  optional    

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

chairman   string  optional    

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

controlling_authority   string  optional    

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

additional_specifications   string  optional    

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