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

Online API documentation (latest):

https://seclai.github.io/seclai-python/1.0.1/

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: seclai-1.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-1.0.1.tar.gz
Algorithm Hash digest
SHA256 724f4779fb92dc8e06985aaff6f9aad14e421137273f3d82206d84bfd493b89c
MD5 5f741bf274e9fd37993284508f42ceaa
BLAKE2b-256 14f49f8878c3e2b863c44c0b85b2779c6ec5d5aa62d60b34864853eef0bf7d5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for seclai-1.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-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: seclai-1.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-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 03eed853cf57bb7dcfa2910fb99e5213dcc9c92845d25fde09d58ea902341cf7
MD5 f0fa3c226ea7b66622a7db92d273af9d
BLAKE2b-256 30baa91e6063e17475516ec3f34b099423731ca9d75eb890ed8eb2fbe0707424

See more details on using hashes here.

Provenance

The following attestation bundles were made for seclai-1.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