# Check source on a shared thread

The slug-scoped twin of [Check source of a highlighted span](/api-reference/threads/check-source) for a recipient who reaches the thread through a share link.

Traces the highlighted span against the thread's **own** sources only — never organization knowledge stores attached to the chat (those are counted in `redacted_count`) and never Space stores. Preview only: `save: true` is rejected with `422`.

The origin contract is the same as the owner route: `sources` is never empty (`type` is `knowledge`, `document`, `conversation`, or `generated`). `redacted_count` reports hidden stores independently.

## Authentication

Requires **user** authentication (Bearer token). The slug must resolve for the caller. An unknown or unauthorized link returns `404`, never `403`.

## Path Parameters

**`slug`** string required

The share-link slug.

**`message_id`** string required

The assistant message (`msg_` prefix) the span was highlighted in.

## Body Parameters

Same as [Check source of a highlighted span](/api-reference/threads/check-source). `save` must be `false` or omitted.

## Returns

Same `CheckSourceResponse` shape as the owner route. `saved` is always `false`.

## Code Examples

### cURL


```bash
curl -X POST https://api.aitronos.com/v1/shared-threads/sl_8f3c/messages/msg_1a2b/check-source \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text": "onboarding starts on day one"}'
```

### Python SDK


```python
from aitronos import Aitronos  # pip install aitronos-sdk

client = Aitronos(api_key="your-api-key")
result = client.shared_threads.check_source(
    slug="sl_8f3c",
    message_id="msg_1a2b",
    text="onboarding starts on day one",
)
print(result.sources[0].type)
```

### Python (requests)


```python
import requests

resp = requests.post(
    "https://api.aitronos.com/v1/shared-threads/sl_8f3c/messages/msg_1a2b/check-source",
    headers={"Authorization": "Bearer YOUR_TOKEN"},
    json={"text": "onboarding starts on day one"},
)
print(resp.json())
```

### JavaScript


```javascript
const resp = await fetch(
  "https://api.aitronos.com/v1/shared-threads/sl_8f3c/messages/msg_1a2b/check-source",
  {
    method: "POST",
    headers: {
      Authorization: "Bearer YOUR_TOKEN",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ text: "onboarding starts on day one" }),
  },
);
console.log(await resp.json());
```

## Error Responses


```json
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Saving an attribution is not available on a shared view — re-run without save, or open the thread as its owner.",
    "type": "client_error",
    "status": 422,
    "details": {"slug_scoped": true},
    "trace_id": "trc_example",
    "timestamp": "2026-08-14T12:00:00Z"
  }
}
```

## Related Resources

- [Check source of a highlighted span](/api-reference/threads/check-source)
- [Shared Thread Sources](/api-reference/shared-threads/shared-thread-sources)
- [Get Shared Thread](/api-reference/shared-threads/get-shared-thread)