Skip to main content
GET
/
api
/
portfolios
/
{slug}
Get Portfolio Detail
curl --request GET \
  --url https://api.example.com/api/portfolios/{slug}
{
  "success": true,
  "message": "<string>",
  "timestamp": "<string>",
  "data": {
    "slug": "<string>",
    "fullName": "<string>",
    "headline": "<string>",
    "bio": "<string>",
    "contactEmail": "<string>",
    "location": "<string>",
    "avatarUrl": "<string>",
    "resumeUrl": "<string>",
    "tkohCollab": true,
    "socialLinks": [
      {
        "id": 123,
        "platform": "<string>",
        "url": "<string>",
        "sortOrder": 123
      }
    ],
    "skillCategories": [
      {
        "id": 123,
        "name": "<string>",
        "sortOrder": 123,
        "skills": [
          {
            "id": 123,
            "name": "<string>",
            "globalSkillId": 123,
            "level": 123,
            "icon": "<string>"
          }
        ]
      }
    ],
    "projects": [
      {
        "title": "<string>",
        "slug": "<string>",
        "summary": "<string>",
        "coverImage": "<string>",
        "featured": true
      }
    ],
    "experiences": [
      {
        "id": 123,
        "company": "<string>",
        "role": "<string>",
        "location": "<string>",
        "startDate": "<string>",
        "endDate": "<string>",
        "current": true,
        "description": "<string>"
      }
    ],
    "education": [
      {
        "id": 123,
        "institution": "<string>",
        "degree": "<string>",
        "field": "<string>",
        "startDate": "<string>",
        "endDate": "<string>",
        "description": "<string>"
      }
    ],
    "certificates": [
      {
        "id": 123,
        "educationId": 123,
        "name": "<string>",
        "description": "<string>",
        "imageUrl": "<string>",
        "fileId": "<string>"
      }
    ]
  }
}
This endpoint returns the full portfolio details for a specific user by their slug. No authentication is required. This is the main endpoint for displaying a complete portfolio page.

Path Parameters

slug
string
required
The unique URL-friendly identifier for the portfolio (e.g., “john-doe”)

Response

success
boolean
required
Indicates if the request was successful
message
string
required
A descriptive message about the response
timestamp
string
required
ISO 8601 timestamp of when the response was generated
data
object
required
Complete portfolio information
slug
string
required
Unique URL-friendly identifier
fullName
string
required
Full name of the portfolio owner
headline
string
required
Professional headline or tagline
bio
string
Detailed biography or professional summary
contactEmail
string
Public contact email address
location
string
Geographic location (city, country)
avatarUrl
string
URL to profile avatar image
resumeUrl
string
URL to downloadable resume/CV file
tkohCollab
boolean
required
TKOH Studios collaboration flag
Social media links and profiles
id
integer
Unique identifier for the social link
platform
string
Platform name (e.g., “GitHub”, “LinkedIn”, “Twitter”)
url
string
Full URL to the social profile
sortOrder
integer
Display order for sorting
skillCategories
array
Organized skill groups with proficiency levels
id
integer
Category identifier
name
string
Category name (e.g., “Frontend”, “Backend”, “DevOps”)
sortOrder
integer
Display order
skills
array
Skills within this category
id
integer
Skill identifier
name
string
Skill name (e.g., “React”, “Java”, “Docker”)
globalSkillId
integer
Reference to global skill database
level
integer
Proficiency level (typically 1-5)
icon
string
Icon identifier or URL for the skill
projects
array
Summary of portfolio projects
title
string
Project title
slug
string
URL-friendly project identifier
summary
string
Brief project description
coverImage
string
URL to project cover image
Whether this project is featured
experiences
array
Work experience history
id
integer
Experience identifier
company
string
Company name
role
string
Job title or role
location
string
Work location
startDate
string
ISO 8601 date (YYYY-MM-DD)
endDate
string
ISO 8601 date or null if current
current
boolean
Whether this is current employment
description
string
Role description and achievements
education
array
Educational background
id
integer
Education record identifier
institution
string
School or university name
degree
string
Degree or certification name
field
string
Field of study
startDate
string
ISO 8601 date
endDate
string
ISO 8601 date or null if in progress
description
string
Additional details or achievements
certificates
array
Professional certificates and credentials
id
integer
Certificate identifier
educationId
integer
Associated education record ID
name
string
Certificate name
description
string
Certificate details
imageUrl
string
URL to certificate image
fileId
string
File storage reference

Example Request

curl https://api.portfoliohub.com/api/portfolios/john-doe

Example Response

{
  "success": true,
  "message": "Portafolio obtenido exitosamente",
  "timestamp": "2026-03-09T10:30:00Z",
  "data": {
    "slug": "john-doe",
    "fullName": "John Doe",
    "headline": "Full Stack Developer | React & Spring Boot Expert",
    "bio": "Passionate software engineer with 5+ years of experience building scalable web applications. Specialized in modern JavaScript frameworks and enterprise Java development.",
    "contactEmail": "[email protected]",
    "location": "San Francisco, CA",
    "avatarUrl": "https://storage.example.com/avatars/john-doe.jpg",
    "resumeUrl": "https://storage.example.com/resumes/john-doe.pdf",
    "tkohCollab": false,
    "socialLinks": [
      {
        "id": 1,
        "platform": "GitHub",
        "url": "https://github.com/johndoe",
        "sortOrder": 1
      },
      {
        "id": 2,
        "platform": "LinkedIn",
        "url": "https://linkedin.com/in/johndoe",
        "sortOrder": 2
      }
    ],
    "skillCategories": [
      {
        "id": 1,
        "name": "Frontend",
        "sortOrder": 1,
        "skills": [
          {
            "id": 1,
            "name": "React",
            "globalSkillId": 101,
            "level": 5,
            "icon": "react-icon"
          },
          {
            "id": 2,
            "name": "TypeScript",
            "globalSkillId": 102,
            "level": 4,
            "icon": "typescript-icon"
          }
        ]
      }
    ],
    "projects": [
      {
        "title": "E-Commerce Platform",
        "slug": "ecommerce-platform",
        "summary": "A full-featured online shopping platform with payment integration",
        "coverImage": "https://storage.example.com/projects/ecommerce.jpg",
        "featured": true
      }
    ],
    "experiences": [
      {
        "id": 1,
        "company": "Tech Corp",
        "role": "Senior Software Engineer",
        "location": "San Francisco, CA",
        "startDate": "2020-01-15",
        "endDate": null,
        "current": true,
        "description": "Leading development of microservices architecture using Spring Boot and React"
      }
    ],
    "education": [
      {
        "id": 1,
        "institution": "University of California",
        "degree": "Bachelor of Science",
        "field": "Computer Science",
        "startDate": "2015-09-01",
        "endDate": "2019-06-15",
        "description": "GPA: 3.8/4.0. Dean's List all semesters."
      }
    ],
    "certificates": [
      {
        "id": 1,
        "educationId": 1,
        "name": "AWS Certified Developer",
        "description": "Associate level certification",
        "imageUrl": "https://storage.example.com/certs/aws-cert.jpg",
        "fileId": "cert-12345"
      }
    ]
  }
}

Error Responses

Portfolio Not Found

{
  "success": false,
  "message": "Profile not found with slug: invalid-slug",
  "timestamp": "2026-03-09T10:30:00Z",
  "data": null
}

Use Cases

  • Display a complete portfolio page on your frontend application
  • Show comprehensive professional profiles
  • Build portfolio aggregator or showcase platforms
  • Create portfolio comparison tools
  • Generate PDF exports of portfolios

Notes

  • No authentication required
  • Only returns publicly visible portfolios
  • Projects array contains summaries; use the project detail endpoint for complete project information
  • Skills are organized into categories for better presentation
  • The current field in experiences indicates ongoing employment
  • Dates follow ISO 8601 format (YYYY-MM-DD)

Build docs developers (and LLMs) love