Skip to main content

Seclai Python SDK

Project description

Seclai Python SDK

This is the official Seclai Python SDK.

Install

pip3 install seclai

Quickstart

Authentication

Provide your API key either:

  • explicitly: Seclai(api_key="..."), or
  • via environment variable: SECLAI_API_KEY

Sync client

from seclai import Seclai

client = Seclai(api_key="...")

# Low-level request (escape hatch)
sources = client.request("GET", "/api/sources/")
print(sources)

Async client

import asyncio

from seclai import AsyncSeclai


async def main() -> None:
	async with AsyncSeclai(api_key="...") as client:
		sources = await client.request("GET", "/api/sources/")
		print(sources)


asyncio.run(main())

Common examples

Run an agent

from seclai import Seclai
from seclai._generated.models.agent_run_request import AgentRunRequest

client = Seclai(api_key="...")

run = client.run_agent(
	"11111111-1111-4111-8111-111111111111",
	body=AgentRunRequest(
		input_="Hello from the Seclai Python SDK!",
		metadata={
            "app": "My App"
        },
	),
)

print(run)

List sources

from seclai import Seclai

client = Seclai(api_key="...")

sources = client.list_sources(page=1, limit=20)
print(sources)

Upload a file to a source

You can upload either a filesystem path or bytes.

from seclai import Seclai

client = Seclai(api_key="...")

# Upload from path
resp = client.upload_file_to_source(
	"22222222-2222-4222-8222-222222222222",
	file="./document.pdf",
	title="Example document",
)
print(resp)
from seclai import Seclai

client = Seclai(api_key="...")

# Upload from bytes
resp = client.upload_file_to_source(
	"22222222-2222-4222-8222-222222222222",
	file=b"hello world",
	file_name="hello.txt",
	mime_type="text/plain",
)
print(resp)

Error handling

Typed convenience methods raise exceptions for non-success responses.

from seclai import Seclai, SeclaiAPIStatusError

client = Seclai(api_key="...")

try:
	sources = client.list_sources()
except SeclaiAPIStatusError as e:
	print("Request failed:")
	print("status:", e.status_code)
	print("method:", e.method)
	print("url:", e.url)
	print("body:", e.response_text)
	raise

Configuration

Timeouts and headers

from seclai import Seclai

client = Seclai(
	api_key="...",
	timeout=30.0,
	default_headers={"x-my-app": "my-service"},
)

Development

Base URL

Set SECLAI_API_URL to point at a different API host (e.g., staging):

export SECLAI_API_URL="https://example.invalid"

Testing

make test

To pass args through to pytest:

make test ARGS='-k auth'

Formatting

make format

Linting

make lint

API documentation

Generate HTML docs into build/docs/:

make docs

OpenAPI spec & regenerating the client

Copy the OpenAPI JSON file into openapi/seclai.openapi.json, then run:

make generate

Reporting issues

If you hit a bug or have a feature request, please open an issue and include:

  • what you were trying to do
  • a minimal repro snippet (if possible)
  • the exception / traceback
  • your environment (Python version, OS)

Contributing

Contributions are welcome.

  • Keep changes focused and add/adjust tests where appropriate.
  • Run make lint and make test before opening a PR.

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

seclai-0.0.1.tar.gz (107.5 kB view details)

Uploaded Source

Built Distribution

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

seclai-0.0.1-py3-none-any.whl (302.5 kB view details)

Uploaded Python 3

File details

Details for the file seclai-0.0.1.tar.gz.

File metadata

  • Download URL: seclai-0.0.1.tar.gz
  • Upload date:
  • Size: 107.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for seclai-0.0.1.tar.gz
Algorithm Hash digest
SHA256 a8f0a77ee11d46b5989025ff22f405cadc40232d61edda3fa2a5786e66db9e72
MD5 85e1131d5eafd782695ef786dc596a59
BLAKE2b-256 1981ccb06c9c3ae04a36e2484ac9a58f1b51bfa9b0ea8ce608a286963a8cc1a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for seclai-0.0.1.tar.gz:

Publisher: main-build.yaml on seclai/seclai-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file seclai-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: seclai-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 302.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for seclai-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 216b4a01a6efc7ed45a33d3e62f9d461344fff00c9e4cbd988ce43b1bcaea558
MD5 4b41ff4cceb3ebfb5f1d40590fe2ffd7
BLAKE2b-256 8ba5cd06a223a32c0acbb20f5ed269be7874aa2ed5ce467e8508aa5e2bca1137

See more details on using hashes here.

Provenance

The following attestation bundles were made for seclai-0.0.1-py3-none-any.whl:

Publisher: main-build.yaml on seclai/seclai-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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