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/phpDzrf8a" 
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/phpDzrf8a', '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/phpDzrf8a', '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/phpDzrf8a

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": "fugit debitis",
            "links": {
                "self": "https://www.podcaster.de/api/feeds/fugit%20debitis",
                "rss": "https://mr31cp.podcaster.de/fugit debitis.rss",
                "web": "",
                "logo": ""
            },
            "attributes": {
                "rss": {
                    "title": "Aut corrupti corporis eveniet adipisci eligendi.",
                    "description": "Aspernatur ab id maiores dolorem unde porro sed eum. Voluptates perspiciatis reprehenderit non tempora. Mollitia repudiandae nihil quae culpa odit eveniet. Ipsum et pariatur alias molestiae commodi rerum unde. Maiores omnis non illum nisi. Officiis tempore et illo placeat est a quas. Porro eligendi animi est omnis aliquam. Quis totam ab accusantium non ut repellat. Quaerat omnis non id nesciunt qui quos eos. Omnis molestiae animi pariatur tempora cupiditate. Eos cupiditate mollitia ea iure deserunt dicta fugiat blanditiis. Quaerat eaque eaque in dolor harum illo. Illo ullam assumenda aperiam voluptas sed eius a. In saepe asperiores repudiandae cum. Aperiam minus ab sed ut omnis aliquid. Deleniti doloribus illum dignissimos reprehenderit quisquam dolor. Ut et ut aliquam sequi rerum. Fugiat ab aspernatur dolor. Ipsum numquam assumenda autem alias deleniti et. Rem consequatur odio rerum culpa ab neque. Aperiam eaque temporibus laudantium id delectus in. Odit mollitia voluptatem dolor quas consectetur tenetur. Temporibus provident quae iusto ut. Cum odio est enim expedita odio occaecati aliquam. Voluptatem ut aliquid est delectus. Delectus culpa unde voluptatem sit ea. Perferendis est deserunt quod sit ut non. Amet rem doloremque nulla quibusdam eveniet temporibus dicta quas. Non cupiditate optio deserunt aperiam odio. Non voluptas voluptatum aut et enim enim. Molestias dolores excepturi aut fugiat ullam animi. Eveniet sunt officiis quidem dolorum neque sequi sint. Quaerat ducimus minus exercitationem reiciendis nisi. Culpa aut reiciendis provident itaque. Ut perspiciatis veniam porro vitae similique nihil architecto aut. Placeat magni omnis voluptatibus non. At facilis aut quo ullam qui ratione tenetur ipsum. Consequuntur unde voluptatem culpa qui. Magni minima et est animi. Repudiandae sit voluptatem praesentium et sed adipisci ut. Nulla ut non repellendus tenetur vel est. Odit eligendi enim quidem. Suscipit odio ut dolor nihil nam qui eum. Nobis quod ut ut consequatur provident deleniti ea. Aut et ut saepe qui laudantium quis explicabo. Quia eaque laboriosam consectetur harum reprehenderit deleniti placeat aut. Ut illum dolorem dolores. Laudantium magnam dignissimos voluptas sed quia. Eveniet placeat odit aliquam animi error qui est vitae. Quae dolorem voluptatem in commodi quis repudiandae. Voluptas voluptatem dolor eos perspiciatis. Consequuntur voluptates sint molestiae tempora necessitatibus voluptatibus. Cupiditate consequatur earum ab et maxime. Sint distinctio veniam suscipit ut. Est est mollitia magnam nemo. Eos debitis cum dolore dolore deserunt voluptatem optio. Perspiciatis nihil suscipit rerum sequi assumenda alias aut. Corporis est animi odit voluptate iure. Culpa est provident eum sit sapiente eveniet quidem. Dolorum aut dolore asperiores voluptatibus molestias. Rerum consequatur optio ad. Assumenda sit eligendi nemo necessitatibus molestiae et. Voluptas eum voluptates iusto delectus sapiente. Enim velit illum debitis et dolor natus voluptatem suscipit. Omnis asperiores quia quos dolores aut odio impedit. Dolores nam quisquam perspiciatis ullam est rerum. Neque laudantium velit quia est ullam mollitia amet. Numquam eius eos velit ut qui iure et. Omnis nobis quae ut eum vitae. Dignissimos magni et doloremque excepturi odit. Cupiditate sunt blanditiis delectus non iure deleniti. Omnis a cupiditate dolor commodi nesciunt aliquam repudiandae temporibus. Sit nihil sed et odio. Dolorem aperiam cupiditate ipsa assumenda dolor sit tempora. Nobis facilis quia ipsam tempore dolorum molestiae delectus. Aut ea fugit aperiam molestias sunt distinctio. Minus delectus omnis similique. Commodi minus commodi ut eum nesciunt. Fuga quasi alias est et. Et facilis sit nostrum nihil voluptas. Laborum suscipit ut aliquid corporis vel. Aut perferendis dolorum quas molestiae. Quisquam nemo harum expedita consequatur impedit. Voluptatibus cumque iusto excepturi molestias.",
                    "copyright": "Reprehenderit qui hic aliquid. Aut aut minima qui voluptatibus aspernatur aperiam. Facere saepe beatae praesentium dolorum ullam sit voluptates. Libero ducimus qui ab modi sint et."
                },
                "logo": ""
            },
            "shows_count": 1,
            "relationships": [
                "entry"
            ]
        },
        {
            "type": "feed",
            "id": "aperiam animi",
            "links": {
                "self": "https://www.podcaster.de/api/feeds/aperiam%20animi",
                "rss": "https://9kyxvv.podcaster.de/aperiam animi.rss",
                "web": "",
                "logo": ""
            },
            "attributes": {
                "rss": {
                    "title": "Dolor aliquam modi praesentium a.",
                    "description": "Qui porro fugit ipsam consectetur quos. Sit laboriosam sapiente dolor impedit. Velit architecto praesentium sed voluptates molestiae. Voluptas architecto laborum exercitationem exercitationem minus aperiam modi. Aut voluptates itaque quod dolores ullam molestias. Harum corporis eos quidem ut. Optio odit et accusantium sed deserunt. Architecto ut voluptas voluptatem dignissimos. Magnam aut et rerum et laudantium. Voluptas laborum perferendis adipisci voluptatum ab quia. Rerum aut nesciunt provident ipsam. Ullam quis et est sed doloribus expedita cupiditate voluptas. Voluptatem reprehenderit est assumenda quibusdam sint. Aperiam et expedita aspernatur tempore aspernatur saepe et dignissimos. Magni corporis aliquid quidem suscipit optio quia nostrum ipsum. Facere delectus perspiciatis odio quisquam quisquam expedita rerum. Perspiciatis unde eum ut consectetur. Aut voluptatem perspiciatis non ut eaque dignissimos vel quae. Excepturi ex tempora minus accusamus sed culpa corporis. Harum molestias sed sed at ut praesentium maiores numquam. Aut inventore delectus est. Ut neque voluptas et exercitationem soluta in. Impedit maiores et qui. Aperiam quas officia qui beatae. Consequatur quo est in possimus rem id et. Cupiditate consequatur hic non esse. Praesentium eligendi ipsam dolore dolores. Alias molestias modi molestiae quis. Omnis et enim quia delectus veritatis et commodi. Est et mollitia at quaerat quo. Cum veritatis neque repudiandae omnis eos. Natus dolore temporibus itaque non similique. Rem voluptatem unde et accusantium vero nihil fuga. Neque blanditiis ea reprehenderit. Voluptas atque culpa cupiditate ducimus dolore voluptas assumenda. Est iure quis quod autem laudantium consequatur illum. Neque aut tempora delectus porro assumenda reiciendis harum. Assumenda eos quis veritatis voluptatem sit. Veritatis aperiam earum velit atque. Aliquam doloribus aut doloremque sequi odio. Adipisci quidem nihil blanditiis dicta. Consequatur quas nesciunt quisquam minus doloremque. Fugiat dolore atque voluptatum sunt praesentium. At voluptatem est in. Laudantium odio vel nobis quae. Nesciunt aut officia qui. Magni odio ea qui aut quo quam optio. Corporis minima quibusdam aperiam repellendus. Dolor sequi distinctio vel fugit maxime quisquam rerum quia. Unde corrupti necessitatibus dolores aut sapiente sint dolorum non. Est ex aut et deleniti aut et non. Labore est maiores similique dolor minima. Tempore amet praesentium nemo eos at culpa ut. Temporibus eum ab asperiores eos. Ipsam voluptatem ut voluptas et ut alias. Eos sunt maiores nemo a ipsa omnis omnis. Architecto esse distinctio consequatur dolorem dolorem incidunt nulla. Rem aut ad facere error earum ut incidunt. Quae laborum fuga nobis facilis dignissimos pariatur. Nostrum omnis sapiente consectetur nemo saepe sed. Aspernatur facere reprehenderit sunt natus ad. Corporis cupiditate aperiam eius voluptatem perspiciatis aspernatur. Sint velit aut molestias est voluptate. Nemo officia non qui est. Consequatur ipsam possimus soluta maiores qui voluptatum. Voluptatem animi non velit ipsum nihil. Facilis dolor modi est illo non repudiandae sunt. Veniam qui rerum quibusdam deserunt repudiandae eligendi. At ut sint eum eos nulla cupiditate reprehenderit. Sit occaecati id dolorem qui culpa omnis laudantium. Ut totam similique eos architecto et. Vel dolore dolore quibusdam possimus. Ut quia necessitatibus commodi fugit. Et sit rerum magnam autem facilis. Quia sint doloremque nisi qui aspernatur velit eos. Velit laboriosam accusantium non laudantium occaecati. Voluptas itaque vel iure ullam. Aut neque dolorem quia earum nobis magnam incidunt. Fugiat sunt error cumque nihil repellat. Id omnis ullam aperiam quia nam illum vero. Repellat facere ut vero tenetur veritatis consectetur cupiditate. Quo facilis est voluptas possimus. Qui ducimus dolores et. Earum est fuga deserunt est. Cumque sit eaque excepturi tempora nobis illo. Quas quisquam aut rem quis qui sed.",
                    "copyright": "Dicta labore maxime ut quod beatae temporibus aut. Similique non velit provident maiores sit pariatur necessitatibus. Non non maxime qui ut dolorem asperiores. Exercitationem at quam blanditiis ullam."
                },
                "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": "doloribus et",
        "attributes": {
            "rss": {
                "title": "Ad similique exercitationem dolore excepturi eius non.",
                "description": "Vitae qui omnis dignissimos doloribus quam est aut. Ratione modi sint officiis et tempore voluptates. Fuga maiores ut aspernatur non qui veritatis. Maxime dolor totam quasi sunt asperiores magnam. Quia error voluptates minima voluptatem. Nihil aut a reprehenderit quis. Pariatur nemo quas fugit modi occaecati voluptatem. Est vero consequuntur voluptatum voluptatibus dolor porro sed. Aut ducimus maiores eum voluptatem sed. Eveniet reiciendis et cupiditate autem cum. Quasi sunt sed facilis hic eos est. Mollitia aut necessitatibus error labore ullam. Consectetur esse labore vel doloribus sapiente dolorum voluptatem. Aut amet dolor laudantium vero id. Ipsum magni occaecati sunt doloremque illo. Praesentium et totam et nisi. Odio et quas sunt vel dolorem pariatur. Eaque deleniti assumenda autem. Veritatis commodi nihil sunt dignissimos quibusdam necessitatibus. Mollitia consequuntur ut minima sequi praesentium quae enim perspiciatis. Dolorem quibusdam quis repellendus aperiam perferendis voluptatem consectetur. Itaque debitis consequatur numquam consequatur rerum. Excepturi debitis qui itaque delectus quasi nihil repudiandae. Ipsum ab sit voluptatem sit quas dolor laboriosam. Nisi incidunt eaque adipisci doloribus itaque at veritatis. Provident cumque tenetur ut sed omnis dolorum. Beatae deleniti eveniet velit adipisci dignissimos earum perspiciatis fugiat. Ut ut itaque quos autem. Explicabo molestias deleniti velit dolorem eum doloremque sequi. Et delectus reprehenderit laudantium rem. Ut deserunt voluptatem molestias voluptas. Voluptates officiis eum dolores est voluptas voluptatum. Dolorem est asperiores ut in. Expedita expedita adipisci sed pariatur in voluptas non. Sit eos ut vitae. Voluptas consectetur quis eaque rem ducimus. Itaque eum est necessitatibus facilis et voluptate qui beatae. Unde dolor dicta vitae. Nesciunt ipsam officia et suscipit ut sunt. Quas quo placeat maiores ut qui quia. Vel tempore mollitia commodi voluptatum dicta voluptatem harum. Distinctio rerum aut architecto officiis totam earum. Consectetur porro earum magnam impedit sit ullam ipsum. Incidunt quos dolor eum vero nam placeat. Quod voluptates quis quo tenetur autem earum blanditiis dicta. Placeat beatae hic impedit. Quia maiores est numquam officia. Aperiam voluptas est eaque minus. Maxime ullam enim alias dolorem non doloribus quia illum. Praesentium illum pariatur quibusdam temporibus accusantium sit. Impedit suscipit maiores itaque eveniet nihil doloribus. Eius fugiat voluptatem eum omnis iste voluptas. Vitae et soluta debitis et. Impedit rerum est sed provident ea. Dolorem maiores dolorem voluptas beatae ea et aut. Dolore eveniet voluptatibus itaque alias sapiente in. Reiciendis rerum libero et et natus enim commodi. Et voluptatem commodi cumque rerum consectetur quas quia. Veniam nihil nihil ipsa aut et autem. Quo voluptatem quam at aut aut. Aut in dolorum ducimus. Omnis dolorum dolore omnis voluptates tempore illum magnam dolorem. Et deserunt et ut asperiores est necessitatibus. Est repellendus at assumenda qui alias ipsa quia architecto. Nihil impedit error quo quasi. Dolores deserunt quia quo assumenda et. Recusandae qui totam ipsa rerum delectus odio. Eum quibusdam dignissimos quas. Facilis voluptates saepe vel quo quia. Consequatur quibusdam quam esse consequatur nulla consectetur ut. Iure ratione assumenda culpa dolores quibusdam. Et est aut at architecto hic. Sint quis numquam hic maiores. Sint nisi dolores voluptatem. Voluptate culpa dolorum voluptatem nobis. Et et deserunt non architecto ipsa labore consequatur consequatur. Facilis nihil animi magni doloribus sit soluta deserunt accusantium. Nobis consequatur consequatur perferendis ut sint. Quasi quo recusandae tempora fuga. Aut voluptatem aliquam fugiat animi harum animi porro. Qui quaerat qui exercitationem itaque est. Excepturi consequatur ea qui unde consectetur. Voluptate qui aspernatur incidunt rem sit ipsa voluptate. Praesentium asperiores consequuntur sit qui sunt.",
                "copyright": "Ut veritatis sed sunt. Deleniti corrupti eum soluta autem et. Vel minima dolorum sunt perferendis est ex ex. Fuga eligendi ut corrupti sunt ut perferendis."
            },
            "itunes": {
                "subtitle": "Repudiandae labore at et."
            },
            "googleplay": {
                "author": "Gunda Wegener",
                "description": "Nesciunt et saepe sapiente porro nam. Et eaque sint harum sint velit aperiam. Sapiente voluptatem eaque ut laudantium laboriosam."
            },
            "logo": ""
        },
        "links": {
            "self": "https://www.podcaster.de/api/feeds/doloribus%20et",
            "rss": "https://biabs6.podcaster.de/doloribus et.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]=36&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]": "36",
    "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]' => '36',
            '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]': '36',
  '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: 36

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=eum"\
    --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 "media=@/tmp/phpGeLUc9" \
    --form "cover=@/tmp/phpHqYmVK" 
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', 'eum');
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('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' => 'eum'
            ],
            [
                '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' => 'media',
                'contents' => fopen('/tmp/phpGeLUc9', 'r')
            ],
            [
                'name' => 'cover',
                'contents' => fopen('/tmp/phpHqYmVK', '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, 'eum'),
  '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'),
  'media': open('/tmp/phpGeLUc9', 'rb'),
  'cover': open('/tmp/phpHqYmVK', 'rb')}
payload = {
    "guid": "eum",
    "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
}
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: eum

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/phpGeLUc9

cover   file  optional  

Must be a file. Example: /tmp/phpHqYmVK

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\": \"zktckirmytqiwgzgnebtxe\",
    \"copyright\": \"hce\",
    \"is_public\": 1,
    \"description\": \"Sunt a et deserunt asperiores soluta.\",
    \"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
}"
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": "zktckirmytqiwgzgnebtxe",
    "copyright": "hce",
    "is_public": 1,
    "description": "Sunt a et deserunt asperiores soluta.",
    "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
};

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' => 'zktckirmytqiwgzgnebtxe',
            'copyright' => 'hce',
            'is_public' => 1,
            'description' => 'Sunt a et deserunt asperiores soluta.',
            '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,
        ],
    ]
);
$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": "zktckirmytqiwgzgnebtxe",
    "copyright": "hce",
    "is_public": 1,
    "description": "Sunt a et deserunt asperiores soluta.",
    "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
}
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: zktckirmytqiwgzgnebtxe

copyright   string  optional  

value darf maximal 255 Zeichen haben. Example: hce

is_public   integer   

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

description   string   

value darf maximal 4000 Zeichen haben. Example: Sunt a et deserunt asperiores soluta.

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

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": "Wally Fricke",
            "first_name": "Wally",
            "last_name": "Fricke",
            "username": "pietschmargrit",
            "email": "gottfried88@example.net",
            "name_title": null,
            "telephone": "03834 4202105",
            "telefax": "0611 268 1664",
            "url": "http://www.jahn.com/pariatur-necessitatibus-ratione-ratione-vel-non-provident-perspiciatis",
            "organisation": "Schade",
            "department": null,
            "street": "Schäfergasse",
            "housenumber": "Hoppestraße 42c",
            "city": "Bornheim",
            "country": "NC",
            "post_code": "72824",
            "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'