Honolife API Documentation

A personal API built with Hono for Cloudflare Workers, providing information about me, my skills, projects, and integrations.

Base URL

https://api.skiddle.id

Authentication

Currently, this API is publicly accessible and does not require authentication.

Rate Limiting

Please be mindful of rate limits imposed by third-party services (e.g., Spotify API).

Endpoints

Profile

GET /profile

Returns basic profile information including name, roles, current location, and current job.

{
  "name": "Laurensius Jeffrey Chandra",
  "nickname": ["Jeff", "Skiddle"],
  "role": [
    "Software Engineer",
    "Open Source Contributor",
    "Investor",
    "Stock Trader"
  ],
  "city": "Bangkok",
  "country": "Thailand",
  "timezone": "Asia/Bangkok",
  "currentStatus": "Available",
  "languages": ["English", "Indonesian", "Thai"],
  "activities": ["Coding", "Trading", "Reading"]
}

GET /profile/location

Returns current location information.

GET /profile/languages

Returns known languages and proficiency levels.

GET /profile/activities

Returns current activities and interests.

GET /profile/links

Returns social and professional profile links.

GET /profile/experience

Returns complete work history, sorted from newest to oldest.

GET /profile/education

Returns education history.

GET /profile/interests

Returns personal interests and hobbies.

GET /profile/jobs

Returns current job positions.

Skills

GET /skills

Returns all skills organized by category.

GET /skills/:category

Returns skills in a specific category.

Projects

GET /projects

Returns all projects with featured flag.

GET /projects/featured

Returns only featured projects.

GET /projects/status/:status

Returns projects filtered by status (completed, in-progress, planned).

Blog

GET /blog

Returns the 5 latest blog posts.

GET /blog/all

Returns all blog posts with pagination.

Query Parameters:

  • page: Page number (default: 1)
  • pageSize: Posts per page (default: 10)

GET /blog/search

Search blog posts by query.

Query Parameters:

  • q: Search query (required)
  • page: Page number (default: 1)
  • pageSize: Posts per page (default: 10)

Spotify Integration

GET /spotify/now-playing

Returns currently playing track with detailed information.

GET /spotify/now

Returns currently playing track in shields.io endpoint format.

Example response:

{
  "schemaVersion": 1,
  "label": "playing",
  "message": "Song Name - Artist Name",
  "color": "1DB954",
  "labelColor": "000000",
  "style": "flat-square",
  "namedLogo": "spotify",
  "logoColor": "white"
}

When nothing is playing:

{
  "schemaVersion": 1,
  "label": "playing",
  "message": "nothing rn",
  "color": "5865F2",
  "labelColor": "000000",
  "style": "flat-square",
  "namedLogo": "spotify",
  "logoColor": "white"
}

Query Parameters:

  • style: Badge style (flat, flat-square, plastic, for-the-badge, social). Default: flat-square
  • logo: Icon slug from simple-icons. Default: spotify
  • logoColor: Logo color (hex without #). Default: white
  • logoWidth: Width of the logo in pixels
  • label: Left-hand-side text. Default: playing
  • labelColor: Left side background color (hex without #). Default: 000000
  • cacheSeconds: Cache duration in seconds. Default: 0

Example usage with shields.io:

![Now Playing](https://img.shields.io/endpoint?url=https://api.skiddle.id/spotify/now)

Example with custom parameters:

![Now Playing](https://img.shields.io/endpoint?url=https://api.skiddle.id/spotify/now?style=for-the-badge&logo=spotify&logoColor=1DB954&label=listening%20to&labelColor=black)

GET /spotify/history

Returns recently played tracks.

GET /spotify/top/tracks

Returns your top tracks.

GET /spotify/top/artists

Returns your top artists.

Error Handling

All endpoints follow the same error response format:

{
  "error": "Error message"
}

Common HTTP status codes:

  • 200: Success
  • 400: Bad Request
  • 404: Not Found
  • 500: Internal Server Error