Skip to main content

Omnia SDK — Python client for the Omnia API

Project description

omnia-sdk

Python client for the Omnia API.

Installation

pip install omnia-sdk

Quick start

from omnia_sdk import OmniaClient

client = OmniaClient(api_key="your-api-key")

me = client.auth.get_me()
project, chat = client.projects.create_project_with_chat(me.id, "My project")

for event in client.messages.stream_message(me.id, project.id, chat.id, "Hello"):
    print(event)

Configuration

The client can be configured via constructor arguments or environment variables:

Environment variable Constructor arg Default
OMNIA_API_TOKEN api_key
OMNIA_API_URL api_url https://api.omniasec.ai
OMNIA_DEFAULT_MODEL default_model gemini-2.5-pro
OMNIA_DEFAULT_PROVIDER default_provider google

Set OMNIA_ENV=dev to point automatically to http://localhost:8000.

# All options explicit
client = OmniaClient(
    api_key="your-key",
    api_url="https://api.omniasec.ai",
    default_model="gemini-2.5-pro",
    default_provider="google",
)

Client reference

client.auth

me = client.auth.get_me()                                  # -> User
agents = client.auth.get_agents()                          # -> list[dict]
settings = client.auth.get_last_user_settings(user_id)     # -> dict
settings = client.auth.update_user_settings(user_id, {})   # -> dict

client.projects

projects = client.projects.list_projects(user_id)                        # -> list[Project]
project = client.projects.create_project(user_id, "Name")                # -> Project
project = client.projects.get_project(user_id, project_id)               # -> Project
client.projects.delete_project(user_id, project_id)

chats = client.projects.list_chats(user_id, project_id)                  # -> list[Chat]
chat = client.projects.create_chat(user_id, project_id)                  # -> Chat
chat = client.projects.get_or_create_chat(user_id, project_id)           # -> Chat
project, chat = client.projects.create_project_with_chat(user_id, "Name")

client.messages

messages = client.messages.list_messages(user_id, project_id, chat_id)   # -> list[ChatMessage]
client.messages.delete_message(user_id, project_id, chat_id, message_id)

# Streaming (SSE) — yields raw event dicts
for event in client.messages.stream_message(user_id, project_id, chat_id, "query"):
    print(event)

# Non-streaming
response = client.messages.send_message(user_id, project_id, chat_id, "query")

# Launch a workflow from a message
client.messages.launch_workflow(
    agent_name="OmniaMainAgent",
    workflow_endpoint="/workflow/run",
    user_id=user_id,
    project_id=project_id,
    chat_id=chat_id,
    workflow_template_id="template-id",
    written_params={"key": "value"},
)

client.resources

from pathlib import Path

resources = client.resources.list_resources(user_id, project_id)             # -> list[Resource]
resource = client.resources.upload_resource(user_id, project_id, Path("file.pdf"))  # -> Resource
client.resources.delete_resource(user_id, project_id, resource_id)

client.analysis

analyses = client.analysis.list_analyses(user_id)                # -> list[Analysis]
analyses = client.analysis.list_analyses(user_id, shared=True)   # -> list[Analysis]
analysis = client.analysis.get_analysis(analysis_id)             # -> Analysis
children = client.analysis.get_analysis_children(analysis_id)    # -> list[Analysis]
analysis = client.analysis.upload_file(user_id, Path("sample.exe"))  # -> Analysis

client.templates

templates = client.templates.list_templates(user_id)                    # -> list[Template]
template = client.templates.get_template(user_id, template_id)          # -> Template
template = client.templates.create_template(user_id, payload)           # -> Template
template = client.templates.update_template(user_id, template_id, payload)  # -> Template
client.templates.delete_template(user_id, template_id)
template = client.templates.fork_template(user_id, template_id)         # -> Template

client.workflows

result = client.workflows.run_file_analysis(user_id, project_id, resource_hash, chat_id)

client.public

No authentication required for these endpoints.

version = client.public.get_api_version()
analysis = client.public.get_public_analysis(analysis_id)
children = client.public.get_public_analysis_children(analysis_id)
template = client.public.get_public_template(template_id)
results = client.public.search_market("react")
package = client.public.get_market_package("npm", "lodash")
versions = client.public.get_market_package_versions("npm", "lodash")
chat = client.public.get_shared_chat(token)

Error handling

from omnia_sdk import OmniaAPIError, NotConfiguredError

try:
    me = client.auth.get_me()
except NotConfiguredError:
    print("No API key configured")
except OmniaAPIError as e:
    print(f"API error {e.status_code}: {e.detail}")

Version

import omnia_sdk
print(omnia_sdk.__version__)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

omnia_sdk_test-0.1.0.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

omnia_sdk_test-0.1.0-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file omnia_sdk_test-0.1.0.tar.gz.

File metadata

  • Download URL: omnia_sdk_test-0.1.0.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for omnia_sdk_test-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d37bf64237e7e5d8065ec13485628a0a3fd26e87418f0b5910782ca747a3fa08
MD5 b7ef8306815ebe347830217001693f2f
BLAKE2b-256 dd25c144a047d36f5f00d85c5936a8ff6b6ec66fe19a3fb0edfc4c9f303910b5

See more details on using hashes here.

File details

Details for the file omnia_sdk_test-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: omnia_sdk_test-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for omnia_sdk_test-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 37aa7bf205fcbcbc1a0b4be8025cbc9e4993aec4b2fae0abb74e3e081df7cdcb
MD5 559126b757e891935e83665bff9865a9
BLAKE2b-256 a8c5cd74813e1a8594f9a9e88d55642b686238ffb9ed902f1b84d20bf9e76883

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page