Skip to main content
Vrin client methods return plain dicts by default. These dataclasses provide optional typed wrappers with convenience properties. All have a from_dict() classmethod.

Document

Represents a document to be processed and indexed.
from vrin import Document

doc = Document(
    content="ACME Corp reported $50M revenue in Q4 2025.",
    title="ACME Financials",
    tags=["earnings", "2025"],
    source="sdk-upload",
    document_type="text",
)

Fields

FieldTypeDefaultDescription
contentstrrequiredText content of the document
titleOptional[str]"Untitled Document"Document title
tagsOptional[List[str]][]Tags for categorization
sourceOptional[str]"vrin-sdk"Source identifier
user_idOptional[str]"default"Owner user ID
document_typestr"text"Document type

QueryResult

Represents a single search result from the knowledge base.
from vrin import QueryResult

qr = QueryResult.from_dict(result_dict)
print(qr.content)
print(qr.score)
print(qr.title)      # from metadata
print(qr.tags)       # from metadata

Fields

FieldTypeDescription
contentstrRetrieved text content
scorefloatRelevance score
search_typestr"graph", "vector", or "hybrid"
metadataDict[str, Any]Document metadata
chunk_idstrUnique chunk identifier
graph_contextOptional[Dict]Related graph data

Properties

  • title — Document title (from metadata)
  • tags — Document tags (from metadata)
  • source — Source identifier (from metadata)

JobStatus

Represents the status of an async processing job (insertion or upload).
from vrin import JobStatus

status = JobStatus.from_dict(client.get_job_status("job_abc123"))
print(status.status)         # "extracting"
print(status.progress)       # 65
print(status.is_completed)   # False
print(status.is_processing)  # True

Fields

FieldTypeDescription
job_idstrUnique job identifier
statusstrpending, chunking, extracting, storing, completed, failed
messagestrHuman-readable status message
progressintProgress percentage (0-100)
timestampOptional[int]Job creation timestamp
completed_atOptional[int]Completion timestamp
dataOptional[Dict]Result data (when completed)
error_detailsOptional[str]Error message (when failed)

Properties

  • is_completedTrue when status is "completed"
  • is_failedTrue when status is "failed"
  • is_processingTrue when status is any active state
  • completion_timedatetime from completed_at
  • creation_timedatetime from timestamp

InsertResult

Structured response from an insert operation.
from vrin import InsertResult

result = InsertResult.from_dict(raw_result)
print(result.facts_extracted)  # 12
print(result.job_id)

Fields

FieldTypeDefaultDescription
successboolFalseWhether the operation succeeded
job_idOptional[str]NoneAsync job ID
facts_extractedint0Number of facts extracted
messagestr""Status message
chunk_idOptional[str]NoneChunk identifier

UploadResult

Structured response from a file upload.
from vrin import UploadResult

result = UploadResult.from_dict(raw_result)
print(result.upload_id)
print(result.status)

Fields

FieldTypeDefaultDescription
successboolFalseWhether the upload succeeded
upload_idOptional[str]NoneUpload identifier
filenameOptional[str]NoneUploaded filename
statusstr""Processing status
messagestr""Status message

UserLimits

User plan information and usage limits.
from vrin import UserLimits

limits = UserLimits.from_dict(client.get_limits())
print(f"Plan: {limits.plan}")
print(f"Queries left: {limits.queries_remaining}")

Fields

FieldTypeDefaultDescription
planstr"free"Current plan name
queries_remainingint0Queries remaining in billing period
inserts_remainingint0Inserts remaining
allowed_modelsList[str][]Models available on current plan
max_file_size_mbint10Maximum upload file size

Conversation

Summary of a conversation session.
from vrin import Conversation

for raw in client.list_conversations():
    conv = Conversation.from_dict(raw)
    print(f"{conv.session_id}: {conv.title} ({conv.turn_count} turns)")

Fields

FieldTypeDefaultDescription
session_idstrrequiredUnique session identifier
titlestr""Conversation title
created_atOptional[str]NoneCreation timestamp
last_updatedOptional[str]NoneLast update timestamp
turn_countint0Number of query-response turns
previewstr""Preview of the conversation