Skip to main content
POST
/
v1
/
public
/
topics.info
curl --location --request POST 'https://api.yourapp.com/v1/public/topics.info' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "id": "topic-uuid-123"
}'
{
  "data": {
    "id": "topic-uuid-123",
    "urlId": "abc123",
    "url": "/add-mobile-app-abc123",
    "title": "Add mobile app",
    "description": "We need a mobile app",
    "text": "It would be great to have native mobile apps for iOS and Android.",
    "publishedAt": "2024-01-15T10:30:00Z",
    "createdAt": "2024-01-15T10:30:00Z",
    "updatedAt": "2024-01-16T14:20:00Z",
    "visits": 342,
    "roadmapId": "roadmap-uuid-123",
    "stageId": "stage-uuid-456",
    "stage": {
      "id": "stage-uuid-456",
      "name": "Under Consideration",
      "order": 1
    },
    "subscriberId": "sub-uuid-789",
    "voteCount": 156,
    "commentCount": 23,
    "meta": {
      "ctaTitle": "Vote for this feature",
      "ctaLink": "https://example.com",
      "projectId": "project-uuid"
    }
  },
  "team": {
    "id": "team-uuid",
    "name": "Acme Corp",
    "subdomain": "acme"
  }
}

Authentication

Authorization: Bearer YOUR_API_KEY

Request Body

id
string
required
Topic ID (UUID) or URL slug (e.g., “add-mobile-app-abc123”)

Response

data
object
Topic object with full details (null if not found)
team
object
Team information
curl --location --request POST 'https://api.yourapp.com/v1/public/topics.info' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "id": "topic-uuid-123"
}'
{
  "data": {
    "id": "topic-uuid-123",
    "urlId": "abc123",
    "url": "/add-mobile-app-abc123",
    "title": "Add mobile app",
    "description": "We need a mobile app",
    "text": "It would be great to have native mobile apps for iOS and Android.",
    "publishedAt": "2024-01-15T10:30:00Z",
    "createdAt": "2024-01-15T10:30:00Z",
    "updatedAt": "2024-01-16T14:20:00Z",
    "visits": 342,
    "roadmapId": "roadmap-uuid-123",
    "stageId": "stage-uuid-456",
    "stage": {
      "id": "stage-uuid-456",
      "name": "Under Consideration",
      "order": 1
    },
    "subscriberId": "sub-uuid-789",
    "voteCount": 156,
    "commentCount": 23,
    "meta": {
      "ctaTitle": "Vote for this feature",
      "ctaLink": "https://example.com",
      "projectId": "project-uuid"
    }
  },
  "team": {
    "id": "team-uuid",
    "name": "Acme Corp",
    "subdomain": "acme"
  }
}

Behavior

  • UUID or Slug: Accepts both UUID and URL slug
  • Visit Tracking: Increments visit counter (throttled to once per 2 minutes)
  • Not Found: Returns data: null if topic doesn’t exist
  • Stage Included: Returns full stage object with topic

URL Slug Format

URL slugs follow the format: {title-slug}-{urlId} Example: add-mobile-app-abc123 The endpoint extracts the urlId (last segment) to find the topic.

Use Cases

  • Topic Detail Page: Display full topic information
  • Vote Display: Show current vote and comment counts
  • Stage Information: Display current stage and status

Notes

  • Returns null if topic not found (not a 404 error)
  • Visit count updates at most once per 2 minutes per view
  • Includes stage object for context
  • Team information always included