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.1.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.1-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: omnia_sdk_test-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 2e3392cac5ced460b5a859fe776a6e010977a926ef0ebe56eef7a16a1f24a8fe
MD5 69e9bd9e5fb63ac475a65c0ac2afaae9
BLAKE2b-256 933d739fbcefabd4fb2a591b132627df5c7ec75e15a8785f8fc2c48f5c2d7159

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omnia_sdk_test-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 79b30adc941c0d5cbed5eb97c997fa7a86c3821c953f570229b9b2855c0b0c5c
MD5 842d0cbc9ef3f3864baa44aa7fd7f213
BLAKE2b-256 5b16ead472ca47f2096da28c3e380c5ffd281fa44b06519ee93bda4bf23ebef7

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