> ## Documentation Index
> Fetch the complete documentation index at: https://docs.userorbit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Topic Info

> Get detailed information about a specific topic by ID or URL slug.

## Authentication

```bash theme={null}
Authorization: Bearer YOUR_API_KEY
```

## Request Body

<ParamField body="id" type="string" required>
  Topic ID (UUID) or URL slug (e.g., "add-mobile-app-abc123")
</ParamField>

## Response

<ResponseField name="data" type="object">
  Topic object with full details (null if not found)

  <Expandable title="Topic Object">
    <ResponseField name="id" type="string">Topic ID (UUID)</ResponseField>
    <ResponseField name="urlId" type="string">Short URL identifier</ResponseField>
    <ResponseField name="url" type="string">URL path</ResponseField>
    <ResponseField name="title" type="string">Topic title</ResponseField>
    <ResponseField name="description" type="string">Short description</ResponseField>
    <ResponseField name="text" type="string">Full topic text</ResponseField>
    <ResponseField name="publishedAt" type="string">Publication timestamp</ResponseField>
    <ResponseField name="createdAt" type="string">Creation timestamp</ResponseField>
    <ResponseField name="updatedAt" type="string">Last update timestamp</ResponseField>
    <ResponseField name="visits" type="number">View count</ResponseField>
    <ResponseField name="roadmapId" type="string">Roadmap ID</ResponseField>
    <ResponseField name="stageId" type="string">Stage ID</ResponseField>
    <ResponseField name="stage" type="object">Stage details</ResponseField>
    <ResponseField name="subscriberId" type="string">Creator subscriber ID</ResponseField>
    <ResponseField name="voteCount" type="number">Number of votes</ResponseField>
    <ResponseField name="commentCount" type="number">Number of comments</ResponseField>
    <ResponseField name="meta" type="object">Custom metadata</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="team" type="object">
  Team information
</ResponseField>

<RequestExample>
  ```bash cURL - By UUID theme={null}
  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"
  }'
  ```

  ```bash cURL - By URL Slug theme={null}
  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"
  }'
  ```

  ```javascript Node.js theme={null}
  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();
  ```

  ```python Python theme={null}
  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']
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "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"
    }
  }
  ```

  ```json Not Found Response theme={null}
  {
    "data": null,
    "team": {
      "id": "team-uuid",
      "name": "Acme Corp",
      "subdomain": "acme"
    }
  }
  ```
</ResponseExample>

## 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
