Back to AI Overview

REST API Reference

A complete guide to programmatically managing your Repodcast feeds.

Authentication

All API requests must include your API key in the Authorization header. You can generate a key in your Settings page.

Authorization: Bearer repodify_live_YOUR_KEY

You can also download our OpenAPI swagger.json specification to import into Postman or Insomnia.

Standard Errors

If an API request fails, it will return an appropriate HTTP status code and a JSON body containing an error string explaining what went wrong.

{
  "error": "Missing or invalid Authorization header"
}
  • 400 Bad Request: Missing required fields (like name or audioUrl)
  • 401 / 403 Unauthorized: Invalid or missing API key
  • 404 Not Found: The feed or episode does not exist, or you don't own it
  • 500 Internal Error: Server-side processing failure

Feeds

GET/api/v1/feeds

Returns a list of all Repodcast feeds associated with your account.

Success Response (200 OK)

{
  "feeds": [
    {
      "id": "abc123xyz",
      "name": "My Tech Podcast",
      "slug": "my-tech-podcast",
      "feedUrl": "https://repodify.app/api/feed/my-tech-podcast"
    }
  ]
}
GET/api/v1/feeds/[slug]

Returns the metadata for a specific feed along with an ordered array of all its episodes.

Success Response (200 OK)

{
  "feed": {
    "id": "abc123xyz",
    "name": "My Tech Podcast",
    "slug": "my-tech-podcast",
    "episodes": [
      {
        "id": "ep_123",
        "title": "Episode 1: The Beginning",
        "audioUrl": "https://example.com/audio.mp3",
        "sortOrder": 0
      }
    ]
  }
}

Error Response (404 Not Found)

{
  "error": "Feed not found or access denied"
}
POST/api/v1/feeds

Creates a new Repodcast feed.

Request Body

{
  "name": "My Tech Podcast",
  "description": "Optional description for the feed."
}

Success Response (201 Created)

{
  "message": "Feed created successfully",
  "feed": { 
    "id": "abc123xyz",
    "slug": "my-tech-podcast-xyz123" 
  }
}

Error Response (400 Bad Request)

{
  "error": "Missing required field: name"
}
PATCH/api/v1/feeds/[slug]

Updates the metadata (name, description, imageUrl) of a feed.

Request Body

{
  "name": "Daily Tech News",
  "imageUrl": "https://example.com/cover-art.jpg"
}

Success Response (200 OK)

{
  "message": "Feed updated successfully",
  "updates": {
    "name": "Daily Tech News",
    "imageUrl": "https://example.com/cover-art.jpg"
  }
}
POST/api/v1/feeds/[slug]/submit

Submits the feed to the global PodcastIndex directory.

Success Response (200 OK)

{
  "message": "Feed submitted to PodcastIndex successfully",
  "feedUrl": "https://repodify.app/api/feed/my-tech-podcast"
}

Error Response (500 Server Error)

{
  "error": "Failed to submit feed to PodcastIndex"
}
DELETE/api/v1/feeds/[slug]

Permanently deletes a Repodcast and all of its associated episodes.

Success Response (200 OK)

{
  "message": "Feed and all episodes deleted successfully"
}

Episodes

POST/api/v1/feeds/[slug]/episodes

Adds a new audio episode to a specific feed.

Request Body

{
  "title": "Episode 1: The Beginning",
  "audioUrl": "https://example.com/audio.mp3",
  "description": "Optional episode notes"
}

Success Response (201 Created)

{
  "message": "Episode added successfully",
  "episodeId": "ep_123"
}

Error Response (400 Bad Request)

{
  "error": "Missing required fields: title, audioUrl"
}
PATCH/api/v1/feeds/[slug]/episodes/[id]

Updates the title or description of a specific episode.

Request Body

{
  "title": "Episode 1: Updated Title"
}

Success Response (200 OK)

{
  "message": "Episode updated successfully",
  "updates": {
    "title": "Episode 1: Updated Title"
  }
}
PUT/api/v1/feeds/[slug]/episodes/reorder

Bulk reorders the episodes in a feed.

Request Body

{
  "orderedIds": ["ep_123", "ep_456", "ep_789"]
}

Success Response (200 OK)

{
  "message": "Episodes reordered successfully"
}

Error Response (400 Bad Request)

{
  "error": "Validation failed: Feed contains 3 episodes, but 2 IDs were provided."
}
DELETE/api/v1/feeds/[slug]/episodes/[id]

Deletes a specific episode from a feed.

Success Response (200 OK)

{
  "message": "Episode deleted successfully"
}

Error Response (404 Not Found)

{
  "error": "Episode not found"
}