MENU navbar-image

Introduction

Through the podcaster API you can access your media files, podcast feeds, episodes and statistics.

This documentation aims to provide all the information you need to work with our API.

Authenticating requests

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

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

You can retrieve your token by visiting your personal key management site. There you can create either a personal code (use as Bearer code which you can (also) use for the live examples on this page) or an OAuth client id. Please do not try to build your own (hosting/podcast) service or an user frontend directly on top of our infrastructure. Always cache your requests.

Endpoints

POST api/webhooks-processing

requires authentication

Example request:
curl --request POST \
    "https://www.podcaster.de/api/webhooks-processing" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.podcaster.de/api/webhooks-processing"
);

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

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/webhooks-processing';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/webhooks-processing'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 169
access-control-allow-origin: *
 

{
    "message": "Class \"Spatie\\WebhookClient\\ProcessWebhookJob\" not found"
}
 

Request      

POST api/webhooks-processing

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Media

List files

requires authentication

Gets a list of the user´s uploaded (media) files. Accessible with scopes: media,media-read-only

Example request:
curl --request GET \
    --get "https://www.podcaster.de/api/media?sort_by=name&sort_dir=desc&filter=%22kreativ%22&strict=1&page[number]=1&page[size]=10" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.podcaster.de/api/media"
);

const params = {
    "sort_by": "name",
    "sort_dir": "desc",
    "filter": ""kreativ"",
    "strict": "1",
    "page[number]": "1",
    "page[size]": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/media';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'sort_by' => 'name',
            'sort_dir' => 'desc',
            'filter' => '"kreativ"',
            'strict' => '1',
            'page[number]' => '1',
            'page[size]' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/media'
params = {
  'sort_by': 'name',
  'sort_dir': 'desc',
  'filter': '"kreativ"',
  'strict': '1',
  'page[number]': '1',
  'page[size]': '10',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200):


{
    "count": 7,
    "items": [
        {
            "id": "1600240053",
            "name": "1400x1400.png",
            "byte": 14644,
            "created": "16.09.2020 09:07:33",
            "size": "14.3 KB",
            "last": "09:07:33 16.09.2020",
            "cat": "_default_",
            "url": "https://beispiel.podcaster.de/download/1400x1400.png",
            "extension": "png",
            "mimetype": "image/png",
            "type": "image",
            "created_date": "16.09.2020",
            "created_time": "09:09"
        },
        {
            "id": "1593720040",
            "name": "3000x3000.png",
            "byte": 93132,
            "created": "02.07.2020 22:00:40",
            "size": "90.95 KB",
            "last": "22:00:40 02.07.2020",
            "cat": "logos",
            "url": "https://beispiel.podcaster.de/download/3000x3000.png",
            "extension": "png",
            "mimetype": "image/png",
            "type": "image",
            "created_date": "02.07.2020",
            "created_time": "22:10"
        }
    ]
}
 

Request      

GET api/media

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

sort_by   string  optional  

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

sort_dir   string  optional  

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

filter   string  optional  

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

strict   integer  optional  

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

page   object  optional  
page.number   integer  optional  

Used for pagination. The page number. Example: 1

page.size   integer  optional  

Used for pagination. The page size. Example: 10

Upload file

requires authentication

Stores a file in the media manager.

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

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

const body = new FormData();
body.append('media', document.querySelector('input[name="media"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/media';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'media',
                'contents' => fopen('/tmp/phpyljqmv', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/media'
files = {
  'media': open('/tmp/phpyljqmv', 'rb')}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/json'
}

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

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 179
access-control-allow-origin: *
 

{
    "message": "Invalid key supplied"
}
 

Request      

POST api/media

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

Body Parameters

media   file   

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

Get file

requires authentication

Gets details for a media file.

Example request:
curl --request GET \
    --get "https://www.podcaster.de/api/media/123456789" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.podcaster.de/api/media/123456789"
);

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

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

url = 'https://www.podcaster.de/api/media/123456789'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200):


{
    "id": 1600240053,
    "name": "1400x1400.png",
    "byte": 14644,
    "size": "14.3 KB",
    "time": "16.09.2020 09:07:33",
    "last": "16.09.2020 09:07:33",
    "cat": null,
    "mimetype": "image/png",
    "type": "image",
    "info": "PNG image data, 1400 x 1400, 8-bit/color RGBA, non-interlaced",
    "mime": "image/png"
}
 

Request      

GET api/media/{media_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

media_id   integer   

ID of the media file. Example: 123456789

Delete file

requires authentication

Remove a file from the media manager.

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

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

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

url = 'https://www.podcaster.de/api/media/123456789'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 178
access-control-allow-origin: *
 

{
    "message": "Invalid key supplied"
}
 

Request      

DELETE api/media/{media_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

media_id   integer   

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

Copy file

requires authentication

Creates a copy of an existing media file with a unique name

Example request:
curl --request POST \
    "https://www.podcaster.de/api/media/123456798/copy" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"label\": \"datei_version2.mp3\",
    \"category\": \"Audios\"
}"
const url = new URL(
    "https://www.podcaster.de/api/media/123456798/copy"
);

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

let body = {
    "label": "datei_version2.mp3",
    "category": "Audios"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/media/123456798/copy';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'label' => 'datei_version2.mp3',
            'category' => 'Audios',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/media/123456798/copy'
payload = {
    "label": "datei_version2.mp3",
    "category": "Audios"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 177
access-control-allow-origin: *
 

{
    "message": "Invalid key supplied"
}
 

Request      

POST api/media/{media_id}/copy

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

media_id   integer   

ID of a media file. Example: 123456798

Body Parameters

label   string   

Name of new file. Example: datei_version2.mp3

category   string   

Group name for new file. Example: Audios

Podcasts

List podcasts

requires authentication

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

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

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feeds';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'page[number]' => '1',
            'page[size]' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/feeds'
params = {
  'page[number]': '1',
  'page[size]': '10',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200):


{
    "data": [
        {
            "type": "feed",
            "id": "sed dolorum vel",
            "links": {
                "self": "https://www.podcaster.de/api/feeds/sed%20dolorum%20vel",
                "rss": "https://wmj7dy.podcaster.de/sed dolorum vel.rss",
                "web": "",
                "logo": ""
            },
            "attributes": {
                "rss": {
                    "title": "Minima aut et ut beatae ut nesciunt.",
                    "description": "Non enim exercitationem quisquam aut. Ipsam velit eum unde et. Numquam consequatur placeat debitis nostrum quisquam ipsa. Eius illo voluptatibus aperiam eveniet consequatur sint. Incidunt ab ex et vel. A dolores minus et expedita maiores unde rerum. Illum qui consectetur qui a. Quis velit nihil nobis sit nisi cumque voluptas. Iusto incidunt rem quidem aperiam. Autem est rerum dignissimos beatae modi. Tempore adipisci et molestias consequatur laudantium voluptatem et qui. Quod quasi quas animi non. Placeat cumque non dolorum cumque. Ut nobis corporis temporibus voluptatem. Nam placeat ut ducimus. Temporibus aspernatur quo nulla quod. Sit temporibus in recusandae tempore quia ut. Qui officiis est qui. Velit nesciunt facere repellat nostrum. Nam voluptatem optio nihil ut atque fugit rerum. Odit molestias est saepe sed sed dolorem nemo minus. Voluptas et sunt explicabo molestiae sit. Est qui optio perferendis. Aut eum quasi totam amet aut libero. Dolorum et sit vero necessitatibus. Sapiente quod omnis earum consectetur possimus aut. Optio tempora recusandae rerum magnam. Optio nulla aut et ab tempore ea et. Eum dolores similique occaecati at qui placeat fuga. Dignissimos qui aliquam expedita alias dolores voluptates fugiat. Voluptas est et repellat rerum quod et magni. Ut dignissimos impedit voluptatibus quis consequatur. Animi accusantium sint ipsum amet necessitatibus molestias facere qui. Nihil dignissimos ab atque. Magni et molestiae esse voluptas. Repudiandae et aut aut reiciendis cupiditate. Rem dolorum id alias. Corrupti rem odit ipsum sed perspiciatis culpa fuga. Vitae est necessitatibus vero repellendus nihil aut. Ut ut deserunt a molestias nostrum est. Aut quisquam in harum possimus et. Esse cum aut dolor at recusandae ea aut. Doloribus ipsa inventore necessitatibus dicta voluptatem ducimus in. Illum amet repudiandae fugit odio aut non culpa alias. Nesciunt aliquid enim soluta dolores doloribus. Alias voluptate ea voluptatem rerum. Ut ratione facere hic quaerat adipisci aperiam dolore velit. Beatae vitae dolor aperiam tempore vero. Exercitationem omnis velit id nulla quos quia hic. A et labore est ut vel similique omnis autem. Repellendus quisquam in eius beatae. Adipisci perspiciatis culpa voluptatem odio consequatur fuga aliquam soluta. Ut et et quis et sapiente temporibus. Maxime qui voluptas nesciunt cupiditate id. Quidem corporis quibusdam est ea laboriosam facere voluptatibus. Mollitia autem maxime magni enim commodi rerum. Excepturi ducimus inventore necessitatibus dolorem. Non quis quam sunt. Autem qui est itaque impedit. Tempora exercitationem dolor ullam repellendus. Ut qui omnis voluptatem reprehenderit architecto velit. Culpa labore accusamus sint sunt sunt in sequi. Impedit odit sit atque cupiditate enim. Aperiam libero esse molestiae accusantium repellendus. Et ullam rerum voluptas dolor dolor aut autem. Cupiditate qui ut nulla est delectus omnis. Dolores tenetur dolor sed quasi rem dignissimos necessitatibus quia. Incidunt accusantium et id rerum ut ducimus rerum. Iusto perferendis ipsa numquam deserunt quam ut neque. Natus assumenda neque nihil laboriosam cum quisquam qui. Impedit nulla odio dolorem quasi beatae. Fugiat qui natus quos veritatis. Atque necessitatibus aut ab est odit nesciunt et. Voluptatem fugit delectus quia exercitationem. Aperiam beatae neque ullam qui ab. Quia velit quia rem tenetur dolor alias nobis. Deserunt voluptatem non eos exercitationem consequatur necessitatibus nesciunt id. Necessitatibus fugiat rem quo eum natus consequatur et. Quo a qui minima incidunt vel a veniam. Voluptatem in tenetur non. Et in doloribus dicta quis magnam aut et officia. In recusandae libero repellat itaque consectetur. Sunt sed in qui placeat ut est nobis. Explicabo animi itaque eum ut dolorem.",
                    "copyright": "Sed ab minus aliquam et aut. Temporibus vel suscipit molestiae veniam."
                },
                "logo": ""
            },
            "shows_count": 1,
            "relationships": [
                "entry"
            ]
        },
        {
            "type": "feed",
            "id": "molestiae quis",
            "links": {
                "self": "https://www.podcaster.de/api/feeds/molestiae%20quis",
                "rss": "https://15eyvjh.podcaster.de/molestiae quis.rss",
                "web": "",
                "logo": ""
            },
            "attributes": {
                "rss": {
                    "title": "Voluptatem ducimus hic voluptates et sit.",
                    "description": "Exercitationem quis nulla est velit veniam occaecati non. Ipsam perferendis facilis reiciendis quos autem voluptatem aspernatur deleniti. Temporibus eaque sequi ipsa harum dolorem molestias. Quos enim illum mollitia neque distinctio quia. Ut dignissimos ut ea velit velit vel. Voluptas exercitationem voluptatem modi quaerat ut. Earum illum voluptatum voluptas animi dolores consequatur ducimus et. Fuga deserunt velit est sint. Perspiciatis aut dolores et placeat sint earum. In itaque cumque sapiente cupiditate iste. Consequatur et ullam iure dolor sed. Tenetur id repellendus illum autem. Occaecati enim possimus animi sequi non. Harum itaque perferendis sit architecto occaecati maiores. Magnam soluta est dolor qui aut natus eius. Doloribus reiciendis neque eius mollitia qui ad at. Alias fugiat laborum dignissimos veritatis perspiciatis non. Necessitatibus rerum saepe dolorum. Quos consequatur praesentium rerum id iusto eius ea sed. Eius excepturi sint nulla est occaecati nihil rerum. Possimus consequatur eius reprehenderit dolores debitis. Et architecto officiis libero. Nesciunt vero iure soluta impedit. Et repellendus distinctio consequatur ab. Deserunt laboriosam atque consequuntur laudantium molestias nobis. Est reprehenderit quisquam labore et dolor natus qui nesciunt. At accusamus inventore non non maiores. Rem vitae assumenda in non sunt delectus dolores. Fuga saepe fugit expedita odio quam. Repudiandae magnam commodi fuga aspernatur. Vero molestiae possimus esse sit. Est maiores quia dicta voluptatem autem optio. Voluptatem nihil reprehenderit rerum porro. Qui excepturi enim placeat optio ex quibusdam. Voluptatum et et voluptates est ea. Est maxime odio animi et. Laudantium possimus asperiores dicta nihil. Et maiores laboriosam quo doloremque ipsum. Soluta quis tenetur incidunt vitae. Aut excepturi possimus mollitia cupiditate doloribus quasi. Et et impedit quis eum nihil optio voluptas. Quibusdam rerum debitis qui et. Odit velit ab voluptatum culpa. Voluptatem velit id cupiditate dignissimos. Qui omnis fuga quas neque recusandae occaecati hic. Ex aliquid corporis aspernatur est eum autem. Sint officiis voluptatem eaque consequatur vero dicta architecto. Velit itaque consectetur vel voluptatem consequatur ipsa inventore et. Aperiam ullam perferendis ut qui. Rerum quo similique et eos in minima repellendus. Voluptatem quia beatae accusantium qui sit eos. Vero ab qui atque. Eos fugiat fugiat officiis. Omnis occaecati error libero animi ut accusantium ducimus. Et id qui quia officiis voluptatem autem. Porro aut accusamus sequi fugit ut impedit neque. Sint at facilis libero blanditiis. Doloremque qui minima recusandae rem placeat. Cum laudantium nisi non et porro reiciendis tenetur. Aut temporibus ad possimus expedita et et. Qui alias magni quia soluta et rerum magni. Explicabo dicta dolorem suscipit perferendis. Dolores molestiae nemo consequatur quo. Vitae omnis iure maxime reiciendis qui quam nihil at. Adipisci alias deleniti magni facilis quidem sit. Nostrum voluptatem in deleniti illo velit ex. Qui libero consequatur laborum corporis accusamus culpa sed. Pariatur et aperiam earum voluptates. Et molestiae voluptatem dolores ut. Sint vero aliquid amet rerum expedita. Aut aut numquam illo tempora pariatur non sint. At et aut exercitationem reprehenderit labore. Corporis libero voluptatem laboriosam quis quisquam aut. Voluptatem quia similique iure itaque ex mollitia assumenda. Tenetur sed aliquid voluptas est qui doloremque. Placeat et dignissimos consectetur deserunt. Sit rem ut id. Fugit velit quia voluptate cupiditate nihil vero magnam. Optio ut consequatur aut est. Cum occaecati nostrum dolorem eum. Qui provident consequatur atque enim dolore necessitatibus officia numquam. Error est quae adipisci reiciendis nemo ullam dolorum. Pariatur itaque est animi vero accusantium quam aut molestias. Rerum ea unde aut. Cupiditate praesentium culpa mollitia maxime laboriosam.",
                    "copyright": "Consequatur consectetur ab ea. Repellat fugiat optio est odit sunt. Quaerat eligendi quidem odit. Et voluptatem non fugiat esse dolores nobis. Et sit molestiae nobis animi. Placeat vel non quae non. Aliquam voluptatum minus aperiam consectetur."
                },
                "logo": ""
            },
            "shows_count": 1,
            "relationships": [
                "entry"
            ]
        }
    ]
}
 

Request      

GET api/feeds

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

page[number]   integer  optional  

Used for pagination. The page number. Example: 1

page[size]   integer  optional  

Used for pagination. The page size. Example: 10

Get podcast

requires authentication

Returns information about a podcast (feed). Accessible with scopes: feeds,feeds-read-only

Example request:
curl --request GET \
    --get "https://www.podcaster.de/api/feeds/beispiel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.podcaster.de/api/feeds/beispiel"
);

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

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

url = 'https://www.podcaster.de/api/feeds/beispiel'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200):


{
    "data": {
        "type": "feed",
        "id": "aut dicta",
        "attributes": {
            "rss": {
                "title": "Vitae laborum delectus qui quidem quia laudantium.",
                "description": "Quisquam veritatis sapiente error repellat reprehenderit similique eligendi incidunt. Et fugit distinctio quia ipsam. Numquam est incidunt tenetur odit autem non et. Aut quis fuga qui qui saepe ab. Fuga nihil dolorum aut. Odio fuga et voluptas voluptas necessitatibus nihil. In qui quo est et adipisci quia. Nam velit dolor ab et aliquam tenetur. Est eius sapiente hic suscipit quidem. Omnis eum quasi officia doloribus. Fugit quam veniam quod quae voluptas quis. Esse occaecati laudantium laudantium veritatis ut odio quaerat. Est ut molestias ex temporibus numquam quia sunt. Vitae quod debitis vel sunt ducimus ipsam. Sequi explicabo quis reprehenderit alias. Voluptate ea molestiae dolores sunt eos. Quae consequatur ea ut assumenda nostrum tenetur. Ab non sequi atque quis illum est. Voluptas natus quo perspiciatis. Temporibus illum voluptas voluptate natus perspiciatis commodi non. Dolores explicabo et ut magni. Sint non aut ex rem. Dolor maiores id exercitationem ea. Earum vitae animi et rerum harum et. Itaque dolorum quis labore ex enim modi nulla. Laboriosam enim consequatur quis voluptas officia. Omnis numquam officiis explicabo ea debitis dicta. Odio in aspernatur omnis quidem aut libero similique esse. Excepturi asperiores dolores quae earum et sequi. Voluptatem culpa voluptas minus repudiandae dolorum facilis et. Dolorum quia dolor neque accusantium qui non. Temporibus enim explicabo ad excepturi commodi autem. Modi unde velit molestias voluptatem. Porro earum occaecati voluptates quae minima rem est. Modi nihil necessitatibus maxime fuga odit cumque repudiandae. Ut a quia odio. Sed fuga voluptatibus et saepe excepturi. In vel soluta at tempore nesciunt itaque. Officia cupiditate molestiae nam. Omnis dolorem rerum voluptate omnis ab quia voluptatem. Et nobis libero cumque expedita et. Tenetur rem nihil minima. Asperiores quis tempora nisi sit ratione quasi est incidunt. Dolore velit doloribus dolor exercitationem. Dolorum placeat itaque similique iure natus et. Distinctio non omnis aliquam ut corporis aperiam et. Quam ut corrupti excepturi quisquam reprehenderit. Eos fuga reprehenderit iste ratione unde veritatis quo. Corrupti accusantium ipsa nam nesciunt porro. Illum non quam quia commodi ducimus et et. Et qui nemo quo cumque omnis. Odio et nemo aut minima placeat. Cupiditate nam a hic natus ratione nihil voluptatem. Dolores placeat amet quis et officiis mollitia earum. Est nisi itaque sed harum aut quaerat aut. Pariatur corporis ratione magni quis animi aut nostrum. Non dolores ex doloremque et. Voluptatem perferendis rerum exercitationem sed. Fugit earum ducimus laboriosam. Quaerat vel autem quibusdam exercitationem id. Maiores sunt impedit autem libero eius. Qui deleniti minus est minus. Neque ea minima eligendi distinctio odit. Tempora deleniti aut mollitia culpa nisi aut aperiam. Doloribus repellat aperiam qui deleniti sed repudiandae et. Veritatis doloremque aut repellendus fugiat aut blanditiis. Qui necessitatibus magni suscipit et sed alias. Eum id itaque quia earum quia. Iure doloribus non perspiciatis et vitae. Omnis dignissimos et sed ut autem nobis. Sed aut exercitationem quia omnis labore. Quos ut perferendis ullam quisquam omnis ut fugiat. Aliquid quaerat sequi at vel ducimus explicabo. Sit occaecati qui similique reiciendis consequatur. Rerum maiores molestias nihil est veniam rerum tenetur. Tempore nihil eaque est natus porro maxime dolorem. Rerum nihil voluptas cumque esse deserunt assumenda quia autem. Nihil in voluptatem voluptatem consequatur. Qui est sed modi. Aut quos inventore pariatur delectus accusantium quia. Suscipit vitae et quisquam sit ab dolore quia. Modi totam ut impedit illum error. Et autem error laborum provident vero. Tempora maxime quae modi in delectus. Eligendi voluptates ea et fugiat.",
                "copyright": "Nihil id earum rem et praesentium. Expedita iste itaque quia quidem cupiditate quos. Et tempora libero quia quam autem optio rerum."
            },
            "itunes": {
                "subtitle": "Commodi ut qui quis omnis."
            },
            "googleplay": {
                "author": "Ottmar Breuer-Vollmer",
                "description": "Ut itaque autem ullam in omnis veritatis aperiam. Reprehenderit voluptas nisi earum odit eum quae soluta unde. Perspiciatis et officia perspiciatis ipsam."
            },
            "logo": ""
        },
        "links": {
            "self": "https://www.podcaster.de/api/feeds/aut%20dicta",
            "rss": "https://opw667.podcaster.de/aut dicta.rss",
            "web": "",
            "logo": ""
        },
        "shows_count": 1,
        "relationships": [
            "entry"
        ]
    }
}
 

Request      

GET api/feeds/{feed_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

ID of the podcast (feed). Example: beispiel

Delete podcast

requires authentication

Caution Removes a podcast. Accessible with scope: feeds

Example request:
curl --request DELETE \
    "https://www.podcaster.de/api/feeds/beispiel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.podcaster.de/api/feeds/beispiel"
);

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

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feeds/beispiel';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/feeds/beispiel'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 176
access-control-allow-origin: *
 

{
    "message": "Invalid key supplied"
}
 

Request      

DELETE api/feeds/{feed_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

ID of the podcast (feed). Example: beispiel

Shows

List episodes

requires authentication

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

Example request:
curl --request GET \
    --get "https://www.podcaster.de/api/feed/beispiel/shows?page[number]=62&page[size]=12&sortBy=lastUpdate&sortDesc=desc&page%5Bnumber%5D=1&page%5Bsize%5D=10" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"filter\": \"Kurzfilm\"
}"
const url = new URL(
    "https://www.podcaster.de/api/feed/beispiel/shows"
);

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

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

let body = {
    "filter": "Kurzfilm"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/beispiel/shows';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'page[number]' => '62',
            'page[size]' => '12',
            'sortBy' => 'lastUpdate',
            'sortDesc' => 'desc',
            'page[number]' => '1',
            'page[size]' => '10',
        ],
        'json' => [
            'filter' => 'Kurzfilm',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/feed/beispiel/shows'
payload = {
    "filter": "Kurzfilm"
}
params = {
  'page[number]': '62',
  'page[size]': '12',
  'sortBy': 'lastUpdate',
  'sortDesc': 'desc',
  'page[number]': '1',
  'page[size]': '10',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200):


{
    "data": [
        {
            "type": "show",
            "id": "pod-5ea2082c6bc37297937508",
            "feed_id": "Der_Podcast",
            "links": {
                "self": "https://api.podcaster.sattoaster/api/shows/pod-5ea2082c6bc37297937508?feedId=Der_Podcast",
                "web": "https://beispiel.podcaster.de/der_podcast/beispiel-013/",
                "logo": "",
                "media": ""
            },
            "attributes": {
                "title": "Beispiel #013",
                "description": "Dies ist eine Beispiel-Episode für den Podcast-Hostingservice podcaster.de",
                "author": "beispiel@kundendomain.me (Fabio Bacigalupo)",
                "link": "https://beispiel.podcaster.de/der_podcast/beispiel-013/",
                "copyright": "podcaster.de",
                "logo": "",
                "guid": "pod-5ea2082c6bc37297937508",
                "publish_date": "1587677228",
                "publish_date_formatted": "23.04.2020, 23:27 Uhr",
                "is_published": "0",
                "file": "",
                "enclosure_url": "",
                "itunes": {
                    "title": "Nur als Entwurf",
                    "subtitle": "",
                    "logo": "1587677200",
                    "summary": "",
                    "episodeType": "full",
                    "author": "Fabio Bacigalupo",
                    "duration": "00:05:08",
                    "season": "",
                    "episode": ""
                },
                "type": "unknown",
                "duration_formatted": "5m 8s"
            },
            "relationships": [
                "entry"
            ]
        },
        {
            "type": "show",
            "id": "pod-5cc21955598f7405476263",
            "feed_id": "Der_Podcast",
            "links": {
                "self": "https://api.podcaster.sattoaster/api/shows/pod-5cc21955598f7405476263?feedId=Der_Podcast",
                "web": "https://beispiel.podcaster.de/der_podcast/beispiel-folge-xyz-011/",
                "logo": "",
                "media": ""
            },
            "attributes": {
                "title": "#012 Beispiel-Folge",
                "description": "<div>Dies ist eine Beispiel-Episode für den Podcast-Hostingservice podcaster.de <br></div><div></div>\n\nIn der Folge wird erklärt, was ein Podcast ist.",
                "author": "beispiel@kundendomain.me (Fabio Bacigalupo)",
                "link": "https://beispiel.podcaster.de/der_podcast/beispiel-folge-xyz-011/",
                "copyright": "podcaster.de",
                "logo": "",
                "guid": "pod-5cc21955598f7405476263",
                "publish_date": "1557908895",
                "publish_date_formatted": "15.05.2019, 10:28 Uhr",
                "is_published": 1,
                "file": "",
                "enclosure_url": "",
                "itunes": {
                    "title": "Beispiel-Folge xyz",
                    "subtitle": "xyz sagt alles",
                    "logo": "1555322159",
                    "summary": "",
                    "episodeType": "full",
                    "author": "Fabio Bacigalupo",
                    "duration": "00:05:08",
                    "season": "1",
                    "episode": "10"
                },
                "type": "unknown",
                "duration_formatted": "5m 8s"
            },
            "relationships": [
                "entry"
            ]
        }
    ]
}
 

Request      

GET api/feed/{feed_id}/shows

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

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

Query Parameters

page   object  optional  
page.number   number  optional  

value muss mindestens 1 sein. Example: 62

page.size   number  optional  

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

filter   string  optional  
sortBy   string  optional  

You can either sort by lastUpdate or is_public Example: lastUpdate

sortDesc   string  optional  

Sort order. Example: desc

page[number]   integer  optional  

Used for pagination. The page number. Example: 1

page[size]   integer  optional  

Used for pagination. The page size. Example: 10

Body Parameters

filter   string  optional  

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

Get episode

requires authentication

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

Example request:
curl --request GET \
    --get "https://www.podcaster.de/api/feed/LuchaTrashTalk/show/pod-1234567890?feed_id=beispiel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.podcaster.de/api/feed/LuchaTrashTalk/show/pod-1234567890"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/LuchaTrashTalk/show/pod-1234567890';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'feed_id' => 'beispiel',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/feed/LuchaTrashTalk/show/pod-1234567890'
params = {
  'feed_id': 'beispiel',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200):


{
    "data": {
        "type": "show",
        "id": "pod-5ea2082c6bc37297937508",
        "feed_id": "Der_Podcast",
        "attributes": {
            "title": "Beispiel #013",
            "subtitle": "",
            "link": "https://beispiel.podcaster.de/der_podcast/beispiel-013/",
            "description": "Dies ist eine Beispiel-Episode für den Podcast-Hostingservice podcaster.de",
            "author": "beispiel@kundendomain.me (Fabio Bacigalupo)",
            "email": "",
            "copyright": "podcaster.de",
            "itunes": {
                "title": "Nur als Entwurf",
                "subtitle": "",
                "logo": "1587677200",
                "summary": "",
                "episodeType": "full",
                "author": "Fabio Bacigalupo",
                "duration": "00:05:08",
                "season": "",
                "episode": ""
            }
        }
    }
}
 

Request      

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

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

The ID of the feed. Example: LuchaTrashTalk

guid   string   

GUID einer Episode. Example: pod-1234567890

Query Parameters

feed_id   string   

ID des Podcasts Example: beispiel

Create episode

requires authentication

Adds a new episode. Accessible with scope: shows

Example request:
curl --request POST \
    "https://www.podcaster.de/api/feed/beispiel/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "guid=provident"\
    --form "title=#21 - Spannende Erkenntnisse über Podcasting"\
    --form "author=Maxima Musterfrau"\
    --form "copyright=Podcast-Team MM"\
    --form "is_public=1"\
    --form "description="\
    --form "itunes[title]=Spannende Erkenntnisse über Podcasting"\
    --form "itunes[subtitle]=Dinge, die Du noch nicht wusstest"\
    --form "itunes[summary]=Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt."\
    --form "itunes[episode]=21"\
    --form "itunes[episodeType]=full"\
    --form "itunes[season]=4"\
    --form "itunes[logo]=2435456"\
    --form "itunes[explicit]=1"\
    --form "itunes[author]=Bastian Albert, Fabio Bacigalupo"\
    --form "publishing_date=2023-05-01"\
    --form "publishing_time=12:10:59"\
    --form "link=https://mein-blog-zum.podcast/s-e-u-p"\
    --form "show_media=12345"\
    --form "podcastindex[transcript]=1332607"\
    --form "media=@/tmp/phpfzbfep" \
    --form "cover=@/tmp/phpqkDDyT" 
const url = new URL(
    "https://www.podcaster.de/api/feed/beispiel/show"
);

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

const body = new FormData();
body.append('guid', 'provident');
body.append('title', '#21 - Spannende Erkenntnisse über Podcasting');
body.append('author', 'Maxima Musterfrau');
body.append('copyright', 'Podcast-Team MM');
body.append('is_public', '1');
body.append('description', '');
body.append('itunes[title]', 'Spannende Erkenntnisse über Podcasting');
body.append('itunes[subtitle]', 'Dinge, die Du noch nicht wusstest');
body.append('itunes[summary]', 'Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.');
body.append('itunes[episode]', '21');
body.append('itunes[episodeType]', 'full');
body.append('itunes[season]', '4');
body.append('itunes[logo]', '2435456');
body.append('itunes[explicit]', '1');
body.append('itunes[author]', 'Bastian Albert, Fabio Bacigalupo');
body.append('publishing_date', '2023-05-01');
body.append('publishing_time', '12:10:59');
body.append('link', 'https://mein-blog-zum.podcast/s-e-u-p');
body.append('show_media', '12345');
body.append('podcastindex[transcript]', '1332607');
body.append('media', document.querySelector('input[name="media"]').files[0]);
body.append('cover', document.querySelector('input[name="cover"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/beispiel/show';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'guid',
                'contents' => 'provident'
            ],
            [
                'name' => 'title',
                'contents' => '#21 - Spannende Erkenntnisse über Podcasting'
            ],
            [
                'name' => 'author',
                'contents' => 'Maxima Musterfrau'
            ],
            [
                'name' => 'copyright',
                'contents' => 'Podcast-Team MM'
            ],
            [
                'name' => 'is_public',
                'contents' => '1'
            ],
            [
                'name' => 'description',
                'contents' => ''
            ],
            [
                'name' => 'itunes[title]',
                'contents' => 'Spannende Erkenntnisse über Podcasting'
            ],
            [
                'name' => 'itunes[subtitle]',
                'contents' => 'Dinge, die Du noch nicht wusstest'
            ],
            [
                'name' => 'itunes[summary]',
                'contents' => 'Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.'
            ],
            [
                'name' => 'itunes[episode]',
                'contents' => '21'
            ],
            [
                'name' => 'itunes[episodeType]',
                'contents' => 'full'
            ],
            [
                'name' => 'itunes[season]',
                'contents' => '4'
            ],
            [
                'name' => 'itunes[logo]',
                'contents' => '2435456'
            ],
            [
                'name' => 'itunes[explicit]',
                'contents' => '1'
            ],
            [
                'name' => 'itunes[author]',
                'contents' => 'Bastian Albert, Fabio Bacigalupo'
            ],
            [
                'name' => 'publishing_date',
                'contents' => '2023-05-01'
            ],
            [
                'name' => 'publishing_time',
                'contents' => '12:10:59'
            ],
            [
                'name' => 'link',
                'contents' => 'https://mein-blog-zum.podcast/s-e-u-p'
            ],
            [
                'name' => 'show_media',
                'contents' => '12345'
            ],
            [
                'name' => 'podcastindex[transcript]',
                'contents' => '1332607'
            ],
            [
                'name' => 'media',
                'contents' => fopen('/tmp/phpfzbfep', 'r')
            ],
            [
                'name' => 'cover',
                'contents' => fopen('/tmp/phpqkDDyT', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/feed/beispiel/show'
files = {
  'guid': (None, 'provident'),
  'title': (None, '#21 - Spannende Erkenntnisse über Podcasting'),
  'author': (None, 'Maxima Musterfrau'),
  'copyright': (None, 'Podcast-Team MM'),
  'is_public': (None, '1'),
  'description': (None, ''),
  'itunes[title]': (None, 'Spannende Erkenntnisse über Podcasting'),
  'itunes[subtitle]': (None, 'Dinge, die Du noch nicht wusstest'),
  'itunes[summary]': (None, 'Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.'),
  'itunes[episode]': (None, '21'),
  'itunes[episodeType]': (None, 'full'),
  'itunes[season]': (None, '4'),
  'itunes[logo]': (None, '2435456'),
  'itunes[explicit]': (None, '1'),
  'itunes[author]': (None, 'Bastian Albert, Fabio Bacigalupo'),
  'publishing_date': (None, '2023-05-01'),
  'publishing_time': (None, '12:10:59'),
  'link': (None, 'https://mein-blog-zum.podcast/s-e-u-p'),
  'show_media': (None, '12345'),
  'podcastindex[transcript]': (None, '1332607'),
  'media': open('/tmp/phpfzbfep', 'rb'),
  'cover': open('/tmp/phpqkDDyT', 'rb')}
payload = {
    "guid": "provident",
    "title": "#21 - Spannende Erkenntnisse über Podcasting",
    "author": "Maxima Musterfrau",
    "copyright": "Podcast-Team MM",
    "is_public": 1,
    "description": "",
    "itunes": {
        "title": "Spannende Erkenntnisse über Podcasting",
        "subtitle": "Dinge, die Du noch nicht wusstest",
        "summary": "Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.",
        "episode": 21,
        "episodeType": "full",
        "season": "4",
        "logo": 2435456,
        "explicit": true,
        "author": "Bastian Albert, Fabio Bacigalupo"
    },
    "publishing_date": "2023-05-01",
    "publishing_time": "12:10:59",
    "link": "https:\/\/mein-blog-zum.podcast\/s-e-u-p",
    "show_media": 12345,
    "podcastindex": {
        "transcript": 1332607
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/json'
}

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

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 175
access-control-allow-origin: *
 

{
    "message": "Invalid key supplied"
}
 

Request      

POST api/feed/{feed_id}/show

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

feed_id   string   

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

Body Parameters

guid   string  optional  

Example: provident

title   string   

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

author   string   

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

copyright   string  optional  

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

is_public   integer   

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

description   string   

Beschreibung der Episde. value darf maximal 4000 Zeichen haben.

itunes   object  optional  
title   string  optional  

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

subtitle   string  optional  

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

summary   string  optional  

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

episode   integer  optional  

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

episodeType   string  optional  

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

season   string  optional  

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

logo   integer  optional  

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

explicit   boolean  optional  

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

author   string  optional  

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

publishing_date   string  optional  

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

publishing_time   string  optional  

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

link   string  optional  

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

show_media   integer  optional  

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

media   file  optional  

Must be a file. Example: /tmp/phpfzbfep

cover   file  optional  

Must be a file. Example: /tmp/phpqkDDyT

podcastindex   object  optional  
transcript   number  optional  

Example: 1332607

Update episode

requires authentication

Updates details of an episode. Accessible with scope: shows

Example request:
curl --request PUT \
    "https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"#21 - Spannende Erkenntnisse über Podcasting\",
    \"author\": \"ftvqoznnptsrkxbtzev\",
    \"copyright\": \"hcxu\",
    \"is_public\": 1,
    \"description\": \"Enim excepturi nihil ad quisquam corrupti delectus.\",
    \"itunes\": {
        \"title\": \"Spannende Erkenntnisse über Podcasting\",
        \"subtitle\": \"Dinge, die Du noch nicht wusstest\",
        \"summary\": \"Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.\",
        \"episode\": 21,
        \"episodeType\": \"full\",
        \"season\": \"4\",
        \"logo\": 2435456,
        \"explicit\": true,
        \"author\": \"Bastian Albert, Fabio Bacigalupo\"
    },
    \"publishing_date\": \"2023-05-01\",
    \"publishing_time\": \"12:10:59\",
    \"link\": \"https:\\/\\/mein-blog-zum.podcast\\/s-e-u-p\",
    \"show_media\": 12345,
    \"podcastindex\": {
        \"transcript\": 0.743513
    }
}"
const url = new URL(
    "https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890"
);

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

let body = {
    "title": "#21 - Spannende Erkenntnisse über Podcasting",
    "author": "ftvqoznnptsrkxbtzev",
    "copyright": "hcxu",
    "is_public": 1,
    "description": "Enim excepturi nihil ad quisquam corrupti delectus.",
    "itunes": {
        "title": "Spannende Erkenntnisse über Podcasting",
        "subtitle": "Dinge, die Du noch nicht wusstest",
        "summary": "Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.",
        "episode": 21,
        "episodeType": "full",
        "season": "4",
        "logo": 2435456,
        "explicit": true,
        "author": "Bastian Albert, Fabio Bacigalupo"
    },
    "publishing_date": "2023-05-01",
    "publishing_time": "12:10:59",
    "link": "https:\/\/mein-blog-zum.podcast\/s-e-u-p",
    "show_media": 12345,
    "podcastindex": {
        "transcript": 0.743513
    }
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'title' => '#21 - Spannende Erkenntnisse über Podcasting',
            'author' => 'ftvqoznnptsrkxbtzev',
            'copyright' => 'hcxu',
            'is_public' => 1,
            'description' => 'Enim excepturi nihil ad quisquam corrupti delectus.',
            'itunes' => [
                'title' => 'Spannende Erkenntnisse über Podcasting',
                'subtitle' => 'Dinge, die Du noch nicht wusstest',
                'summary' => 'Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.',
                'episode' => 21,
                'episodeType' => 'full',
                'season' => '4',
                'logo' => 2435456,
                'explicit' => true,
                'author' => 'Bastian Albert, Fabio Bacigalupo',
            ],
            'publishing_date' => '2023-05-01',
            'publishing_time' => '12:10:59',
            'link' => 'https://mein-blog-zum.podcast/s-e-u-p',
            'show_media' => 12345,
            'podcastindex' => [
                'transcript' => 0.743513,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890'
payload = {
    "title": "#21 - Spannende Erkenntnisse über Podcasting",
    "author": "ftvqoznnptsrkxbtzev",
    "copyright": "hcxu",
    "is_public": 1,
    "description": "Enim excepturi nihil ad quisquam corrupti delectus.",
    "itunes": {
        "title": "Spannende Erkenntnisse über Podcasting",
        "subtitle": "Dinge, die Du noch nicht wusstest",
        "summary": "Wir haben den Podcast-Markt analysiert und Überraschendes festgestellt.",
        "episode": 21,
        "episodeType": "full",
        "season": "4",
        "logo": 2435456,
        "explicit": true,
        "author": "Bastian Albert, Fabio Bacigalupo"
    },
    "publishing_date": "2023-05-01",
    "publishing_time": "12:10:59",
    "link": "https:\/\/mein-blog-zum.podcast\/s-e-u-p",
    "show_media": 12345,
    "podcastindex": {
        "transcript": 0.743513
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 174
access-control-allow-origin: *
 

{
    "message": "Invalid key supplied"
}
 

Request      

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

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

ID des Podcasts Example: beispiel

guid   string   

GUID einer Episode. Example: pod-1234567890

Body Parameters

title   string   

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

author   string   

value darf maximal 255 Zeichen haben. Example: ftvqoznnptsrkxbtzev

copyright   string  optional  

value darf maximal 255 Zeichen haben. Example: hcxu

is_public   integer   

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

description   string   

value darf maximal 4000 Zeichen haben. Example: Enim excepturi nihil ad quisquam corrupti delectus.

itunes   object  optional  
title   string  optional  

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

subtitle   string  optional  

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

summary   string  optional  

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

episode   integer  optional  

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

episodeType   string  optional  

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

season   string  optional  

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

logo   integer  optional  

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

explicit   boolean  optional  

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

author   string  optional  

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

publishing_date   string  optional  

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

publishing_time   string  optional  

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

link   string  optional  

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

show_media   integer  optional  

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

podcastindex   object  optional  
transcript   number  optional  

Example: 0.743513

Delete episode

requires authentication

Removes a show from a podcast (and the feed). Accessible with scope: shows

Example request:
curl --request DELETE \
    "https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890"
);

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

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 173
access-control-allow-origin: *
 

{
    "message": "Invalid key supplied"
}
 

Request      

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

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

ID des Podcasts Example: beispiel

guid   string   

GUID einer Episode. Example: pod-1234567890

Copy episode

requires authentication

Creates a copy of a show. You can create a duplicate within the same podcast or copy the show to another podcast. The copy is always saved with status draft. Accessible with scope: shows

Example request:
curl --request POST \
    "https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/copy?feed_id_to=test" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/copy"
);

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

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

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/copy';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'feed_id_to' => 'test',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/copy'
params = {
  'feed_id_to': 'test',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 172
access-control-allow-origin: *
 

{
    "message": "Invalid key supplied"
}
 

Request      

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

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

ID des Podcasts Example: beispiel

guid   string   

GUID einer Episode. Example: pod-1234567890

Query Parameters

feed_id_to   string  optional  

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

Move episode

requires authentication

Moves a show from one podcast to another.

Accessible with scope: shows

Example request:
curl --request POST \
    "https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/move/test" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/move/test"
);

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

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/move/test';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/feed/beispiel/show/pod-1234567890/move/test'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 171
access-control-allow-origin: *
 

{
    "message": "Invalid key supplied"
}
 

Request      

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

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

feed_id   string   

ID des Podcasts Example: beispiel

guid   string   

GUID einer Episode. Example: pod-1234567890

feed_id_to   string   

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

User

Get user

requires authentication

Fetches details about authenticated user.

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

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

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

url = 'https://www.podcaster.de/api/user'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (200):


{
    "data": {
        "type": "user",
        "id": null,
        "attributes": {
            "id": null,
            "name": "Josef Rausch",
            "first_name": "Josef",
            "last_name": "Rausch",
            "username": "andypfeifer",
            "email": "uschi82@example.com",
            "name_title": null,
            "telephone": "02392 136 4295",
            "telefax": "+49 5024 3197357",
            "url": "http://hubner.com/at-consectetur-aspernatur-dolores-magnam.html",
            "organisation": "Klein Dietz GmbH",
            "department": null,
            "street": "Robert-Römer-Gasse",
            "housenumber": "Carlos-Bach-Gasse 460",
            "city": "Schortens",
            "country": "NZ",
            "post_code": "74962",
            "representative": null,
            "mediarepresentative": null,
            "register_court": null,
            "register_number": null,
            "board": null,
            "chairman": null,
            "controlling_authority": null,
            "additional_specifications": null
        },
        "links": {
            "self": "https://www.podcaster.de/api/user"
        }
    }
}
 

Request      

GET api/user

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Update user

requires authentication

Updates details of a podcast. Accessible with scope: feeds

Example request:
curl --request PUT \
    "https://www.podcaster.de/api/user/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name_title\": \"Prof\",
    \"first_name\": \"Fabio\",
    \"last_name\": \"Bacigalupo\",
    \"telephone\": \"030-549072653\",
    \"telefax\": \"030-549072660\",
    \"url\": \"https:\\/\\/www.podcaster.de\",
    \"organisation\": \"Podcast Plattform\",
    \"department\": \"IT\",
    \"street\": \"Brunnenstraße\",
    \"housenumber\": \"147\",
    \"city\": \"Berlin\",
    \"country\": \"DE\",
    \"post_code\": \"10115\",
    \"representative\": \"Fabio Bacigalupo\",
    \"mediarepresentative\": \"Steffen Wrede\",
    \"register_court\": \"Berlin\",
    \"register_number\": \"1234567890\",
    \"board\": \"Yvonne Ständin\",
    \"chairman\": \"Frauke Vorsätzer\",
    \"controlling_authority\": \"Bafa\",
    \"additional_specifications\": \"Hier kann ein beliebiger Freitext ergänzt werden.\",
    \"organisiation\": \"\'Podcast Plattform\'\"
}"
const url = new URL(
    "https://www.podcaster.de/api/user/1"
);

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

let body = {
    "name_title": "Prof",
    "first_name": "Fabio",
    "last_name": "Bacigalupo",
    "telephone": "030-549072653",
    "telefax": "030-549072660",
    "url": "https:\/\/www.podcaster.de",
    "organisation": "Podcast Plattform",
    "department": "IT",
    "street": "Brunnenstraße",
    "housenumber": "147",
    "city": "Berlin",
    "country": "DE",
    "post_code": "10115",
    "representative": "Fabio Bacigalupo",
    "mediarepresentative": "Steffen Wrede",
    "register_court": "Berlin",
    "register_number": "1234567890",
    "board": "Yvonne Ständin",
    "chairman": "Frauke Vorsätzer",
    "controlling_authority": "Bafa",
    "additional_specifications": "Hier kann ein beliebiger Freitext ergänzt werden.",
    "organisiation": "'Podcast Plattform'"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.podcaster.de/api/user/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name_title' => 'Prof',
            'first_name' => 'Fabio',
            'last_name' => 'Bacigalupo',
            'telephone' => '030-549072653',
            'telefax' => '030-549072660',
            'url' => 'https://www.podcaster.de',
            'organisation' => 'Podcast Plattform',
            'department' => 'IT',
            'street' => 'Brunnenstraße',
            'housenumber' => '147',
            'city' => 'Berlin',
            'country' => 'DE',
            'post_code' => '10115',
            'representative' => 'Fabio Bacigalupo',
            'mediarepresentative' => 'Steffen Wrede',
            'register_court' => 'Berlin',
            'register_number' => '1234567890',
            'board' => 'Yvonne Ständin',
            'chairman' => 'Frauke Vorsätzer',
            'controlling_authority' => 'Bafa',
            'additional_specifications' => 'Hier kann ein beliebiger Freitext ergänzt werden.',
            'organisiation' => '\'Podcast Plattform\'',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://www.podcaster.de/api/user/1'
payload = {
    "name_title": "Prof",
    "first_name": "Fabio",
    "last_name": "Bacigalupo",
    "telephone": "030-549072653",
    "telefax": "030-549072660",
    "url": "https:\/\/www.podcaster.de",
    "organisation": "Podcast Plattform",
    "department": "IT",
    "street": "Brunnenstraße",
    "housenumber": "147",
    "city": "Berlin",
    "country": "DE",
    "post_code": "10115",
    "representative": "Fabio Bacigalupo",
    "mediarepresentative": "Steffen Wrede",
    "register_court": "Berlin",
    "register_number": "1234567890",
    "board": "Yvonne Ständin",
    "chairman": "Frauke Vorsätzer",
    "controlling_authority": "Bafa",
    "additional_specifications": "Hier kann ein beliebiger Freitext ergänzt werden.",
    "organisiation": "'Podcast Plattform'"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

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

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 170
access-control-allow-origin: *
 

{
    "message": "Invalid key supplied"
}
 

Request      

PUT api/user/{id}

PATCH api/user/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the user. Example: 1

Body Parameters

name_title   string  optional  

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

first_name   string  optional  

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

last_name   string   

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

telephone   string  optional  

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

telefax   string  optional  

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

url   string  optional  

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

organisation   string  optional  

Organisation. Example: Podcast Plattform

department   string  optional  

Abteilung. Example: IT

street   string  optional  

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

housenumber   string  optional  

Hausnummer. Example: 147

city   string  optional  

Ort. Example: Berlin

country   string   

Ländercode. Example: DE

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

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

representative   string  optional  

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

mediarepresentative   string  optional  

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

register_court   string  optional  

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

register_number   string  optional  

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

board   string  optional  

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

chairman   string  optional  

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

controlling_authority   string  optional  

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

additional_specifications   string  optional  

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

organisiation   string  optional  

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