Python SDK and CLI for the Revornix API.
📕 API Documentation: revornix/api
The full Revornix application is available here:
- RoadMap: RoadMap
- Official Website: revornix.com
- Community: Discord | WeChat | QQ
Install from PyPI:
pip install revornixInstall from source for local development:
pip install -e .Both the Python SDK and CLI require:
base_url: your Revornix API base URLapi_key: your Revornix API key
For CLI usage, these environment variables are supported:
export REVORNIX_BASE_URL="YOUR_API_PREFIX"
export REVORNIX_API_KEY="YOUR_API_KEY"After installation, the revornix command is available.
Show help:
revornix --helpYou can pass credentials with flags:
revornix --base-url "YOUR_API_PREFIX" --api-key "YOUR_API_KEY" --helpOr use environment variables:
export REVORNIX_BASE_URL="YOUR_API_PREFIX"
export REVORNIX_API_KEY="YOUR_API_KEY"
revornix --helpUpload a file:
revornix files upload \
--local-file-path ./tests/fixtures/test.txt \
--remote-file-path uploads/test.txtCreate a quick note document:
revornix documents create-quick-note \
--content "hello world" \
--section 1 \
--section 2 \
--label 10 \
--auto-summary \
--auto-publish \
--access-key open-sesameCreate a website document:
revornix documents create-website \
--url https://www.google.com \
--section 1 \
--label 10Create a file document:
revornix documents create-file \
--file-name demo.pdf \
--section 1 \
--label 10Create an audio document:
revornix documents create-audio \
--file-name demo.mp3 \
--section 1 \
--label 10 \
--auto-transcribeUpload a local file and create a file document in one step:
revornix documents upload-create-file \
--local-file-path ./tests/fixtures/test.txt \
--remote-file-path uploads/test.txt \
--section 1 \
--label 10Create a document label:
revornix labels create-document-label --name researchCreate a section label:
revornix labels create-section-label --name tutorialList all document labels:
revornix labels list-document-labelsList all sections:
revornix sections listGet document detail:
revornix documents detail --document-id 123Search my documents:
revornix documents search-mine --keyword notes --label 10 --desc trueRun document vector search:
revornix documents search-vector --query "retrieval augmented generation"Ask document AI and manage reading state:
revornix documents ask --document-id 123 --question "Summarize the key decisions"
revornix documents read --document-id 123 --status true
revornix documents star --document-id 123 --status trueWork with notes, task generation, and graphs:
revornix documents create-note --document-id 123 --content "Follow up next week"
revornix documents generate-graph --document-id 123
revornix documents generate-podcast --document-id 123
revornix graphs document --document-id 123
revornix graphs section --section-id 12Create a section:
revornix sections create \
--title "AI Notes" \
--description "Knowledge base for AI" \
--process-task-trigger-type 1 \
--label 10 \
--auto-publishGet section detail:
revornix sections detail --section-id 12Publish a section:
revornix sections publish --section-id 12 --status trueUpload a local file:
revornix files upload \
--local-file-path ./demo.txt \
--remote-file-path uploads/demo.txt \
--content-type text/plainCreate a file document:
revornix documents create-file \
--file-name demo.pdf \
--title "Demo File" \
--description "Imported from uploaded file" \
--section 1 \
--label 10 \
--auto-summaryCreate a website document:
revornix documents create-website \
--url https://example.com \
--title "Example Website" \
--section 1 \
--label 10 \
--auto-summaryCreate a quick note document:
revornix documents create-quick-note \
--content "Meeting notes" \
--title "Meeting Notes" \
--section 1 \
--label 10Create an audio document:
revornix documents create-audio \
--file-name call.mp3 \
--title "Customer Call" \
--section 1 \
--label 10 \
--auto-transcribe \
--auto-summaryUpload a file and create a file document in one command:
revornix documents upload-create-file \
--local-file-path ./demo.pdf \
--remote-file-path uploads/demo.pdf \
--title "Demo File" \
--section 1 \
--label 10Upload an audio file and create an audio document in one command:
revornix documents upload-create-audio \
--local-file-path ./call.mp3 \
--remote-file-path uploads/call.mp3 \
--title "Customer Call" \
--section 1 \
--label 10 \
--auto-transcribeGet document detail:
revornix documents detail --document-id 123Update document metadata:
revornix documents update \
--document-id 123 \
--title "Updated Title" \
--section 1 \
--label 10Delete documents:
revornix documents delete --document-id 123 --document-id 124Search my documents:
revornix documents search-mine \
--keyword notes \
--label 10 \
--start 0 \
--limit 20 \
--desc trueRun document vector search:
revornix documents search-vector --query "retrieval augmented generation"List document labels:
revornix labels list-document-labelsCreate a document label:
revornix labels create-document-label --name articleCreate a section label:
revornix labels create-section-label --name collectionList section labels:
revornix labels list-section-labelsDelete document labels:
revornix labels delete-document-labels --label-id 10 --label-id 11Delete section labels:
revornix labels delete-section-labels --label-id 20 --label-id 21List sections:
revornix sections listCreate a section:
revornix sections create \
--title "Weekly Digest" \
--description "Weekly curated content" \
--process-task-trigger-type 1 \
--process-task-trigger-scheduler "0 0 * * 1" \
--label 10Get section detail:
revornix sections detail --section-id 12List section documents:
revornix sections documents --section-id 12 --start 0 --limit 20 --desc trueSearch my sections:
revornix sections search-mine --keyword digest --label 10 --desc trueUpdate a section:
revornix sections update \
--section-id 12 \
--title "Weekly Digest" \
--auto-podcast true \
--auto-illustration falseDelete a section:
revornix sections delete --section-id 12Get publish status:
revornix sections get-publish --section-id 12Publish or unpublish:
revornix sections publish --section-id 12 --status true
revornix sections publish --section-id 12 --status falseSet or clear a publish access key:
revornix documents set-publish-access-key --document-id 123 --access-key open-sesame
revornix sections set-publish-access-key --section-id 12 --access-key section-key
revornix sections set-publish-access-key --section-id 12Republish:
revornix sections republish --section-id 12- Use repeated
--sectionoptions to pass multiple sections. - Use repeated
--labeloptions to pass multiple labels. --sectionand--labelexpect numeric IDs.- CLI responses are printed as JSON.
documents upload-create-fileanddocuments upload-create-audioupload the local file first, then create the corresponding document.documents search-vectorrequires the target documents to already have embeddings generated on the server side. Example:
revornix documents create-quick-note \
--content "hello" \
--section 1 \
--section 2 \
--label 10 \
--label 11from revornix import Session
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)from revornix.schema import DocumentSchema, SectionSchemafrom revornix import Session
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)
res = session.upload_file(
local_file_path="./tests/fixtures/test.txt",
remote_file_path="uploads/test.txt",
)from revornix import Session
from revornix.schema import DocumentSchema
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)
data = DocumentSchema.LabelAddRequest(name="test")
res = session.create_document_label(data=data)from revornix import Session
from revornix.schema import SectionSchema
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)
data = SectionSchema.LabelAddRequest(name="test")
res = session.create_section_label(data=data)from revornix import Session
from revornix.schema import SectionSchema
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)
data = SectionSchema.SectionCreateRequest(
title="test",
description="test",
cover="test.png",
labels=[],
auto_publish=False,
auto_podcast=False,
auto_illustration=False,
process_task_trigger_type=1,
process_task_trigger_scheduler=None,
)
res = session.create_section(data=data)from revornix import Session
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)
res = session.get_mine_all_document_labels()from revornix import Session
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)
res = session.get_mine_all_sections()from revornix import Session
from revornix.schema import DocumentSchema
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)
data = DocumentSchema.QuickNoteDocumentParameters(
title="Quick Note",
description="Created from SDK",
cover=None,
sections=[1, 2],
labels=[10],
content="test",
auto_summary=False,
auto_podcast=False,
auto_tag=False,
)
res = session.create_quick_note_document(data=data)from revornix import Session
from revornix.schema import DocumentSchema
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)
data = DocumentSchema.WebsiteDocumentParameters(
title="Website Import",
description="Created from URL",
cover=None,
sections=[1],
labels=[10],
url="https://www.google.com",
auto_summary=False,
auto_podcast=False,
auto_tag=False,
)
res = session.create_website_document(data=data)from revornix import Session
from revornix.schema import DocumentSchema
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)
data = DocumentSchema.FileDocumentParameters(
title="File Import",
description="Created from uploaded file",
cover=None,
sections=[1],
labels=[10],
file_name="demo.pdf",
auto_summary=False,
auto_podcast=False,
auto_tag=False,
)
res = session.create_file_document(data=data)from revornix import Session
from revornix.schema import DocumentSchema
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)
data = DocumentSchema.AudioDocumentParameters(
title="Audio Import",
description="Created from uploaded audio",
cover=None,
sections=[1],
labels=[10],
file_name="demo.mp3",
auto_summary=False,
auto_podcast=False,
auto_transcribe=True,
auto_tag=False,
)
res = session.create_audio_document(data=data)from revornix import Session
from revornix.schema import DocumentSchema
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)
data = DocumentSchema.VectorSearchRequest(query="retrieval augmented generation")
res = session.search_document_vector(data=data)from revornix import Session
from revornix.schema import DocumentSchema
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)
data = DocumentSchema.DocumentDeleteRequest(document_ids=[123, 124])
res = session.delete_document(data=data)from revornix import Session
from revornix.schema import SectionSchema
session = Session(
base_url="YOUR_API_PREFIX",
api_key="YOUR_API_KEY",
)
data = SectionSchema.SectionDeleteRequest(section_id=12)
res = session.delete_section(data=data)The current Session methods are:
upload_filecreate_file_documentcreate_website_documentcreate_quick_note_documentcreate_audio_documentget_mine_all_document_labelscreate_document_labeldelete_document_labelget_document_detailask_documentcreate_document_ai_summarycreate_document_embeddingtranscribe_audio_documentgenerate_document_graphgenerate_document_podcastget_document_month_summarycreate_document_notesearch_document_notesdelete_document_notesupdate_documenttransform_document_markdowndelete_documentpublish_documentget_document_publishupdate_document_publish_access_keysearch_mine_documentssearch_unread_documentssearch_recent_documentssearch_star_documentssearch_document_vectorset_document_read_statusset_document_star_statuscreate_section_labelget_mine_all_section_labelsdelete_section_labelcreate_sectionupdate_sectiondelete_sectionget_section_detailget_section_documentsask_sectionget_mine_all_sectionssearch_mine_sectionssearch_subscribed_sectionssearch_public_sectionssearch_user_sectionsgenerate_section_podcastgenerate_section_ppttrigger_section_processretry_section_documentpublish_sectionget_section_publishupdate_section_publish_access_keyrepublish_sectionsearch_graphsearch_document_graphsearch_section_graph
Project layout:
src/revornix/session.py: coreSessionclient for the Revornix APIsrc/revornix/cli/: Typer CLI entrypoint, command groups, and CLI workflowssrc/revornix/schema/: Pydantic request and response modelssrc/revornix/endpoints/: API endpoint constantstests/unit/: unit tests that do not hit the real networktests/integration/: opt-in real API integration teststests/fixtures/: local files used by tests and CLI examples
Run tests:
pytestRun CLI tests only:
pytest tests/unit/test_cli.pyRun all unit tests:
pytest tests/unitIntegration tests are opt-in and require both credentials and an explicit switch:
export REVORNIX_RUN_INTEGRATION_TESTS=true
pytest tests/integration