curl --location --request POST 'https://api.userorbit.com/v1/public/topics.info' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": "topic-uuid-123"
}'
curl --location --request POST 'https://api.userorbit.com/v1/public/topics.info' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": "add-mobile-app-abc123"
}'
const response = await fetch('https://api.userorbit.com/v1/public/topics.info', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
id: topicId // Can be UUID or slug
})
});
const { data: topic, team } = await response.json();
import requests
response = requests.post(
'https://api.userorbit.com/v1/public/topics.info',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'id': topic_id # Can be UUID or slug
}
)
topic = response.json()['data']
{
"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"
}
}
{
"data": null,
"team": {
"id": "team-uuid",
"name": "Acme Corp",
"subdomain": "acme"
}
}
Topics
Get Topic Info
Get detailed information about a specific topic by ID or URL slug.
POST
/
v1
/
public
/
topics.info
curl --location --request POST 'https://api.userorbit.com/v1/public/topics.info' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": "topic-uuid-123"
}'
curl --location --request POST 'https://api.userorbit.com/v1/public/topics.info' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": "add-mobile-app-abc123"
}'
const response = await fetch('https://api.userorbit.com/v1/public/topics.info', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
id: topicId // Can be UUID or slug
})
});
const { data: topic, team } = await response.json();
import requests
response = requests.post(
'https://api.userorbit.com/v1/public/topics.info',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'id': topic_id # Can be UUID or slug
}
)
topic = response.json()['data']
{
"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"
}
}
{
"data": null,
"team": {
"id": "team-uuid",
"name": "Acme Corp",
"subdomain": "acme"
}
}
Authentication
Authorization: Bearer YOUR_API_KEY
Request Body
Response
Topic object with full details (null if not found)
Show Topic Object
Show Topic Object
curl --location --request POST 'https://api.userorbit.com/v1/public/topics.info' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": "topic-uuid-123"
}'
curl --location --request POST 'https://api.userorbit.com/v1/public/topics.info' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": "add-mobile-app-abc123"
}'
const response = await fetch('https://api.userorbit.com/v1/public/topics.info', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
id: topicId // Can be UUID or slug
})
});
const { data: topic, team } = await response.json();
import requests
response = requests.post(
'https://api.userorbit.com/v1/public/topics.info',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'id': topic_id # Can be UUID or slug
}
)
topic = response.json()['data']
{
"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"
}
}
{
"data": null,
"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: nullif 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
nullif 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
Was this page helpful?

