Base URL: /v1
Returns a cursor-paginated list of published products with seller info.
Authentication: None (public)
| Parameter | Type | Required | Default | Description |
|---|
category | string | No | — | Filter products by category ID. |
cursor | string | No | — | Cursor token for pagination. Obtained from next_cursor. |
limit | number | No | 20 | Number of results per page. Min 1, max 50. |
sort | string | No | newest | Sort order. One of: newest, price_asc, price_desc. |
"name": "UI Component Kit",
"description": "A premium set of reusable UI components.",
"category_id": "cat_design",
"created_at": "2026-03-15T10:30:00Z",
"user_id": "usr_seller01",
"avatar_url": "https://cdn.example.com/avatars/designpro.jpg"
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wMy0xNVQxMDozMDowMFoifQ=="
| Field | Type | Description |
|---|
products | array | Array of product objects. |
products[].id | string | Unique product identifier. |
products[].name | string | Product name. |
products[].description | string | Product description. |
products[].price | number | Product price. |
products[].category_id | string | Category the product belongs to. |
products[].status | string | Always "published" in this endpoint. |
products[].created_at | string | ISO 8601 creation timestamp. |
products[].user_id | string | ID of the seller. |
products[].seller | object | Embedded seller profile. |
next_cursor | string | null | Cursor for the next page. null if no more results. |
Returns a single product with full details, seller profile, and reviews.
Authentication: None (public)
| Parameter | Type | Required | Description |
|---|
id | string | Yes | The product ID. |
"name": "UI Component Kit",
"description": "A premium set of reusable UI components.",
"category_id": "cat_design",
"created_at": "2026-03-15T10:30:00Z",
"user_id": "usr_seller01",
"avatar_url": "https://cdn.example.com/avatars/designpro.jpg"
"user_id": "usr_buyer42",
"comment": "Excellent quality components!",
"created_at": "2026-03-20T14:00:00Z"
| Status | Description |
|---|
404 | Product not found. |
Returns a user’s store profile and their listed products. If the user has no store, store is null.
Authentication: None (public)
| Parameter | Type | Required | Description |
|---|
userId | string | Yes | The user ID. |
"user_id": "usr_seller01",
"name": "DesignPro Shop",
"description": "Premium design assets and tools.",
"logo_url": "https://cdn.example.com/stores/designpro-logo.png",
"created_at": "2026-01-10T08:00:00Z",
"updated_at": "2026-03-01T12:00:00Z"
"name": "UI Component Kit",
"description": "A premium set of reusable UI components.",
"category_id": "cat_design",
"created_at": "2026-03-15T10:30:00Z",
"user_id": "usr_seller01"
| Field | Type | Description |
|---|
store | object | null | The user’s store, or null if none exists. |
products | array | Array of products belonging to the store. |
Creates or updates the authenticated user’s store. Upserts on user_id — if a store already exists, it is updated.
Authentication: Required
| Field | Type | Required | Description |
|---|
name | string | No | Store display name. |
description | string | No | Store description. |
logo_url | string | No | URL to the store logo image. |
"name": "DesignPro Shop",
"description": "Premium design assets and tools.",
"logo_url": "https://cdn.example.com/stores/designpro-logo.png"
"user_id": "usr_seller01",
"name": "DesignPro Shop",
"description": "Premium design assets and tools.",
"logo_url": "https://cdn.example.com/stores/designpro-logo.png",
"created_at": "2026-01-10T08:00:00Z",
"updated_at": "2026-03-30T09:15:00Z"
| Status | Description |
|---|
401 | Unauthorized. Token missing or invalid. |
Returns trending posts, popular verified users, and available categories for discovery.
Authentication: None (public)
| Parameter | Type | Required | Default | Description |
|---|
limit | number | No | 20 | Max items per section. Max 50. |
"title": "Getting Started with Edge Computing",
"content": "A deep dive into...",
"created_at": "2026-03-29T18:00:00Z",
"username": "techwriter",
"avatar_url": "https://cdn.example.com/avatars/techwriter.jpg"
"username": "fullstackdev",
"avatar_url": "https://cdn.example.com/avatars/fullstackdev.jpg",
| Field | Type | Description |
|---|
trending_posts | array | Posts currently trending, with embedded author. |
popular_users | array | Popular verified users. |
categories | array | All available categories. |
Returns suggested users to follow. Excludes users the caller already follows and the caller themselves.
Authentication: Required
| Parameter | Type | Required | Default | Description |
|---|
limit | number | No | 10 | Number of suggestions. Max 30. |
"username": "creativecoder",
"avatar_url": "https://cdn.example.com/avatars/creativecoder.jpg",
"caption": "Full-stack developer and open source contributor",
| Field | Type | Description |
|---|
suggestions | array | Array of suggested user profiles. |
suggestions[].id | string | User ID. |
suggestions[].username | string | Username. |
suggestions[].first_name | string | First name. |
suggestions[].last_name | string | Last name. |
suggestions[].avatar_url | string | Avatar image URL. |
suggestions[].caption | string | User bio or caption. |
suggestions[].verified | boolean | Whether the user is verified. |
| Status | Description |
|---|
401 | Unauthorized. Token missing or invalid. |
Fetches Open Graph metadata for a URL. Results are cached in link_snapshots. The server enforces a 5-second timeout when fetching the target URL.
Authentication: Required
| Parameter | Type | Required | Default | Description |
|---|
url | string | Yes | — | The URL to generate a preview for. |
"url": "https://example.com/article/edge-computing",
"title": "Getting Started with Edge Computing",
"description": "Learn the fundamentals of deploying applications at the edge.",
"image": "https://example.com/og-image.png"
| Field | Type | Description |
|---|
preview.url | string | The canonical URL. |
preview.title | string | Page title from OG tags. |
preview.description | string | Page description from OG tags. |
preview.image | string | OG image URL. |
| Status | Description |
|---|
400 | Missing required url query parameter. |
401 | Unauthorized. Token missing or invalid. |
Full-text search across users, posts, and products. Uses case-insensitive ILIKE matching.
Authentication: None (public)
| Parameter | Type | Required | Default | Description |
|---|
q | string | Yes | — | Search query string. |
type | string | No | all | Filter results by type. One of: users, posts, products, all. |
limit | number | No | 20 | Max results per type. Max 50. |
| Type | Fields Searched |
|---|
users | username, first_name, last_name |
posts | title, content |
products | name |
"avatar_url": "https://cdn.example.com/avatars/designpro.jpg"
"title": "Design Systems at Scale",
"content": "How we built a design system...",
"created_at": "2026-03-10T09:00:00Z"
"name": "Design Token Library",
"category_id": "cat_design",
| Field | Type | Description |
|---|
users | array | Matching user profiles. Empty array if type excludes users. |
posts | array | Matching published posts. Empty array if type excludes posts. |
products | array | Matching products. Empty array if type excludes products. |
| Status | Description |
|---|
400 | Missing required q query parameter. |