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

# Get Source Detail

> Retrieve detailed information about a source including full body text, extracted links, and linked entities

# Get Source Detail

Returns detailed information about a specific source (public or private), including the full body text, extracted links from the body, linked agent runs, and linked entities.

## Request

```
GET /api/v1/graph/source/{sourceId}?sourceType=public
```

### Path Parameters

| Parameter  | Type     | Description |
| ---------- | -------- | ----------- |
| `sourceId` | `string` | Source ID   |

### Query Parameters

| Parameter    | Type     | Required | Description                        |
| ------------ | -------- | -------- | ---------------------------------- |
| `sourceType` | `string` | Yes      | Source type: `public` or `private` |

### Headers

| Header          | Required | Description                           |
| --------------- | -------- | ------------------------------------- |
| `Authorization` | Yes      | API key in `Bearer snorbe_...` format |

<Note>
  The workspace is automatically resolved from your API key. No `workspaceId` parameter required.
</Note>

## Response

```json theme={null}
{
  "id": "clsrc001",
  "url": "https://example.com/research-paper",
  "title": "Advances in Solid-State Battery Technology",
  "description": "A comprehensive review of recent developments...",
  "body": "Solid-state batteries have emerged as a promising alternative...",
  "bodyLinks": [
    {
      "title": "Related Study",
      "url": "https://example.com/related-study",
      "type": "external"
    }
  ],
  "sourceType": "public",
  "createdAt": "2026-03-10T08:00:00.000Z",
  "agentRuns": [
    {
      "id": "clrun001",
      "status": "completed",
      "createdAt": "2026-04-01T09:00:00.000Z",
      "linkedEntityIds": ["clxxx001", "clxxx002"],
      "turnId": "clturn001"
    }
  ],
  "linkedEntities": [
    {
      "id": "clxxx001",
      "label": "Solid-State Battery",
      "category": "technology",
      "kind": "entity"
    }
  ]
}
```

Returns `null` if the source is not found in the workspace.

### Response Fields

| Field                         | Type             | Description                                        |
| ----------------------------- | ---------------- | -------------------------------------------------- |
| `id`                          | `string`         | Source ID                                          |
| `url`                         | `string`         | Source URL                                         |
| `title`                       | `string`         | Source title                                       |
| `description`                 | `string`         | Source description                                 |
| `body`                        | `string`         | Full body text of the source                       |
| `bodyLinks`                   | `object[]`       | Links extracted from the source body               |
| `bodyLinks[].title`           | `string`         | Link title                                         |
| `bodyLinks[].url`             | `string`         | Link URL                                           |
| `bodyLinks[].type`            | `string`         | Link type (e.g., `external`)                       |
| `sourceType`                  | `string`         | Source type (`public` or `private`)                |
| `createdAt`                   | `string`         | Creation timestamp (ISO 8601)                      |
| `agentRuns`                   | `object[]`       | Agent runs that used this source                   |
| `agentRuns[].id`              | `string`         | Agent run ID                                       |
| `agentRuns[].status`          | `string`         | Run status (`completed`, `running`, `error`, etc.) |
| `agentRuns[].createdAt`       | `string`         | Run creation timestamp (ISO 8601)                  |
| `agentRuns[].linkedEntityIds` | `string[]`       | Entity IDs linked to this agent run                |
| `agentRuns[].turnId`          | `string \| null` | Turn ID associated with this agent run             |
| `linkedEntities`              | `object[]`       | Entities extracted from or linked to this source   |
| `linkedEntities[].id`         | `string`         | Entity ID                                          |
| `linkedEntities[].label`      | `string`         | Entity name                                        |
| `linkedEntities[].category`   | `string`         | Entity category                                    |
| `linkedEntities[].kind`       | `string`         | Entity kind                                        |

## Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://app.snorbe.deskrex.ai/api/v1/graph/source/clsrc001?sourceType=public" \
    -H "Authorization: Bearer snorbe_your_api_key_here"
  ```

  ```python Python theme={null}
  import requests

  resp = requests.get(
      "https://app.snorbe.deskrex.ai/api/v1/graph/source/clsrc001",
      params={"sourceType": "public"},
      headers={"Authorization": "Bearer snorbe_your_api_key_here"},
  )
  data = resp.json()
  if data:
      print(f"Source: {data['title']}")
      print(f"URL: {data['url']}")
      print(f"Body length: {len(data['body'])} chars")
      print(f"Links: {len(data['bodyLinks'])}")
      print(f"Agent Runs: {len(data['agentRuns'])}")
      print(f"Entities: {len(data['linkedEntities'])}")
  else:
      print("Source not found")
  ```

  ```typescript TypeScript theme={null}
  const params = new URLSearchParams({ sourceType: "public" });
  const resp = await fetch(
    `https://app.snorbe.deskrex.ai/api/v1/graph/source/clsrc001?${params}`,
    { headers: { Authorization: "Bearer snorbe_your_api_key_here" } },
  );
  const data = await resp.json();
  if (data) {
    console.log(`Source: ${data.title}`);
    console.log(`URL: ${data.url}`);
    console.log(`Body length: ${data.body.length} chars`);
    console.log(`Links: ${data.bodyLinks.length}`);
    console.log(`Agent Runs: ${data.agentRuns.length}`);
    console.log(`Entities: ${data.linkedEntities.length}`);
  }
  ```
</CodeGroup>

## Error Responses

| HTTP Status | Description                                                     |
| ----------- | --------------------------------------------------------------- |
| 401         | Invalid, expired, or missing API key                            |
| 403         | Access denied (source belongs to a different workspace or user) |
| 404         | Source not found (returns `null` body)                          |
