Feeds API Documentation

Complete guide to integrating with the Feeds platform. Create feeds, manage posts, and build powerful content applications.

Overview

Feeds is a developer-friendly feed hosting platform that allows you to create and manage content feeds programmatically. Most API requests require authentication using an API key, except for public endpoints like /api/info and /api/health.

  • Base URL: https://feeds-pink.vercel.app/api
  • Authentication: Bearer token (API key) - required for most endpoints
  • Content-Type: application/json (or multipart/form-data for file uploads)
  • Rate Limiting: Standard rate limits apply

Authentication

All API endpoints require authentication using your API key. Get your API key from your profile page after signing in.

Header Format:

Authorization: Bearer YOUR_API_KEY

Example:

curl -X GET https://feeds-pink.vercel.app/api/feeds \
  -H "Authorization: Bearer YOUR_API_KEY"

API Endpoints

GET /api/feeds

Retrieve all feeds for the authenticated user

Request:

GET https://feeds-pink.vercel.app/api/feeds
Authorization: Bearer YOUR_API_KEY

Response (200 OK):

[
  {
    "id": "feed_id",
    "title": "My Feed",
    "description": "Feed description",
    "slug": "my-feed",
    "userId": "user_id",
    "createdAt": "2024-01-01T00:00:00.000Z",
    "updatedAt": "2024-01-01T00:00:00.000Z",
    "posts": [...]
  }
]

POST /api/feeds

Create a new feed

Request:

POST https://feeds-pink.vercel.app/api/feeds
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "title": "My New Feed",
  "description": "Optional description"
}

Response (201 Created):

{
  "id": "feed_id",
  "title": "My New Feed",
  "description": "Optional description",
  "slug": "my-new-feed",
  "userId": "user_id",
  "createdAt": "2024-01-01T00:00:00.000Z",
  "updatedAt": "2024-01-01T00:00:00.000Z"
}

DELETE /api/feeds/delete/[feedId]

Delete a feed and all its posts

Request:

DELETE https://feeds-pink.vercel.app/api/feeds/delete/feed_id
Authorization: Bearer YOUR_API_KEY

Response (200 OK):

{
  "success": true
}

PATCH /api/feeds/styles/[feedId]

Update feed styling (colors, fonts)

Request:

PATCH https://feeds-pink.vercel.app/api/feeds/styles/feed_id
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "fontFamily": "Arial",
  "fontColor": "#000000",
  "secondaryTextColor": "#666666",
  "cardBgColor": "#ffffff",
  "cardBorderColor": "#e0e0e0",
  "feedBgColor": "#f5f5f5",
  "buttonColor": "#007bff",
  "buttonSecondaryColor": "#6c757d"
}

Note: All color fields must be in hex format (e.g., #000000). All fields are optional.

POST /api/posts

Create a new post in a feed

Request:

POST https://feeds-pink.vercel.app/api/posts
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "feedId": "feed_id",
  "type": "text",
  "content": "Post content"
}

Post Types: text, image, video, url

For image posts: { "feedId": "feed_id", "type": "image", "imageUrl": "https://..." }

For video posts: { "feedId": "feed_id", "type": "video", "videoUrl": "https://..." }

For URL posts: { "feedId": "feed_id", "type": "url", "url": "https://..." }

PATCH /api/posts/[postId]

Update an existing post

Request:

PATCH https://feeds-pink.vercel.app/api/posts/post_id
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "content": "Updated content",
  "type": "text"
}

All fields are optional. Only include fields you want to update.

DELETE /api/posts/[postId]

Delete a post

Request:

DELETE https://feeds-pink.vercel.app/api/posts/post_id
Authorization: Bearer YOUR_API_KEY

Response (200 OK):

{
  "success": true
}

POST /api/upload

Upload an image or video file (max 50MB)

Request:

POST https://feeds-pink.vercel.app/api/upload
Authorization: Bearer YOUR_API_KEY
Content-Type: multipart/form-data

file: [binary file data]

Response (200 OK):

{
  "url": "https://...public-url..."
}

Note: Use the returned URL in imageUrl or videoUrl when creating posts.

POST /api/api-key

Regenerate your API key (requires session auth, not API key)

Request:

POST https://feeds-pink.vercel.app/api/api-key
[Session cookie required]

Response (200 OK):

{
  "key": "new_api_key_here"
}

Note: This endpoint requires session authentication (browser cookie), not API key authentication.

GET /api/username?username=...

Check if a username is available

Request:

GET https://feeds-pink.vercel.app/api/username?username=johndoe

Response (200 OK):

{
  "available": true
}

Note: Username must be 3-20 characters, alphanumeric with underscores and hyphens.

PATCH /api/username

Update your username (requires session auth, not API key)

Request:

PATCH https://feeds-pink.vercel.app/api/username
Content-Type: application/json
[Session cookie required]

{
  "username": "newusername"
}

Response (200 OK):

{
  "username": "newusername"
}

Note: This endpoint requires session authentication (browser cookie), not API key authentication.

GET /api/info

Get API information (public, no authentication required)

Request:

GET https://feeds-pink.vercel.app/api/info

Response (200 OK):

{
  "name": "Feeds",
  "description": "Developer-friendly feed hosting platform",
  "version": "1.0.0",
  "api": {
    "baseUrl": "https://feeds-pink.vercel.app/api",
    "documentation": "https://feeds-pink.vercel.app/docs",
    "authentication": "Bearer token (API key)"
  },
  "features": [...],
  "feedFormats": {...},
  "links": {...}
}

GET /api/health

Health check endpoint (public, no authentication required)

Request:

GET https://feeds-pink.vercel.app/api/health

Response (200 OK):

{
  "status": "ok",
  "timestamp": "2024-01-01T00:00:00.000Z"
}

Public Feeds (RSS & JSON)

Public feeds are available in RSS and JSON Feed formats. These endpoints don't require authentication.

  • RSS Feed: https://feeds-pink.vercel.app/feeds/[username]/[feedTitle]/rss
  • JSON Feed: https://feeds-pink.vercel.app/feeds/[username]/[feedTitle]/json

Example: https://feeds-pink.vercel.app/feeds/johndoe/my-feed/rss

Error Handling

All errors follow a consistent format:

{
  "error": "Error message"
}

Common Status Codes:

  • 400 - Bad Request (invalid input)
  • 401 - Unauthorized (invalid or missing API key)
  • 403 - Forbidden (access denied)
  • 404 - Not Found
  • 500 - Internal Server Error

Rate Limits

Standard rate limits apply to prevent abuse. If you exceed the rate limit, you'll receive a 429 Too Many Requests response.

Getting Started

  1. Sign up or log in to your account
  2. Navigate to your profile page
  3. Enable Developer Mode to view your API key
  4. Copy your API key
  5. Start making API requests using the examples above

Get started by creating an account →