Skip to main content

Python client for the Graphora API

Project description

Graphora Python Client

License: MIT Python PyPI Downloads PRs Welcome

Official Python client and CLI for the Graphora API

A Python client for interacting with the Graphora API. This library provides a simple and intuitive interface for working with Graphora's graph-based data processing capabilities. Graphora is a Text to Knowledge Graphs platform that helps you transform unstructured text into powerful knowledge graphs.

Features

  • CLI Tool: Extract knowledge graphs from the command line
  • Complete API Coverage: Access all Graphora API endpoints
  • Type Safety: Fully typed with Pydantic models
  • Dual Mode: Run locally (embedded) or via remote API
  • Async Support: Efficient handling of long-running operations
  • Minimal Dependencies: Lightweight with few external dependencies

Installation

# Basic client library
pip install graphora

# With CLI support
pip install graphora[cli]

Quick Start

CLI (Fastest - 3 commands)

# 1. Install
pip install graphora[cli]

# 2. Configure (downloads graphora-api automatically)
graphora config init --api-key "your-gemini-api-key"

# 3. Extract!
graphora extract document.pdf -o graph.json

That's it! The CLI automatically downloads and manages graphora-api for you.

Python Client

import os
from graphora import GraphoraClient

# Initialize client with a Clerk-issued bearer token. The base URL defaults to
# GRAPHORA_API_URL (or https://api.graphora.io if unset), so you can omit it
# for most cases.
client = GraphoraClient(
    auth_token=os.environ["GRAPHORA_AUTH_TOKEN"],
)

# Upload an ontology
with open("ontology.yaml", "r") as f:
    ontology_yaml = f.read()

ontology = client.register_ontology(ontology_yaml)

# Upload documents and wait for processing
transform = client.transform(
    ontology_id=ontology.id,
    files=["document1.pdf", "document2.txt"],
)
final_status = client.wait_for_transform(transform.id)
print("Transform status:", final_status.overall_status)

# Inspect the resulting graph
graph = client.get_transformed_graph(transform_id=transform.id)
print(
    f"Nodes: {graph.total_nodes or len(graph.nodes)} | "
    f"Edges: {graph.total_edges or len(graph.edges)}"
)

# Start merging the processed data
merge = client.start_merge(
    session_id=ontology.id,
    transform_id=transform.id,
)

CLI Usage

The Graphora CLI provides a convenient way to extract knowledge graphs from documents.

Configuration

Config is stored in ~/.graphora/config.yaml:

# Interactive setup
graphora config init

# Set individual values
graphora config set llm.api_key "your-gemini-api-key"
graphora config set defaults.mode embedded  # or 'remote'

# View configuration
graphora config show

# Check status
graphora status

Extraction

# Extract with auto-inferred schema
graphora extract document.pdf -o graph.json

# Extract multiple files
graphora extract doc1.pdf doc2.pdf docs/ -o combined.json

# Use custom schema
graphora extract document.pdf --schema ontology.yaml -o graph.json

# Output as Cypher statements
graphora extract document.pdf -f cypher -o import.cypher

# Verbose output
graphora extract document.pdf -o graph.json -v

Schema Management

# Infer schema from documents
graphora schema infer document.pdf -o ontology.yaml

# Validate a schema file
graphora schema validate ontology.yaml

Modes

The CLI supports two modes:

Mode Description Requirements
embedded Runs extraction locally (default) Gemini API key only
remote Uses hosted Graphora API API URL + auth token

Embedded mode (recommended) runs the full extraction pipeline locally:

# Auto-downloads graphora-api, just need your API key
graphora config init --api-key "your-gemini-key"

Remote mode uses the hosted Graphora API:

graphora config init --mode remote \
  --api-url "https://api.graphora.io" \
  --auth-token "your-token"

Updating

# Update graphora-api to latest version
graphora update

# Install specific version
graphora update --version v1.2.0

Advanced: Custom API Path

For local development, you can point to your own graphora-api clone:

graphora config set embedded.api_path /path/to/my/graphora-api

Environment Variables

The following environment variables can be used to configure the client:

  • GRAPHORA_AUTH_TOKEN: Clerk-issued bearer token (preferred)
  • GRAPHORA_API_KEY: Legacy API key support (deprecated; replaced by bearer tokens)
  • GRAPHORA_USER_ID: Optional user ID for client-side bookkeeping
  • GRAPHORA_API_URL: Custom API URL (optional). Defaults to https://api.graphora.io if unset.

Core API Methods

Ontology Management

  • register_ontology(ontology_yaml) - Register and validate an ontology
  • get_ontology(ontology_id) - Retrieve an ontology by ID

Document Processing

  • transform(ontology_id, files, metadata=None) - Upload documents for processing
  • get_transform_status(transform_id) - Check transformation status
  • wait_for_transform(transform_id) - Wait for transformation to complete
  • cleanup_transform(transform_id) - Clean up transformation data

Graph Operations

  • get_transformed_graph(transform_id) - Retrieve graph data
  • update_transform_graph(transform_id, changes) - Save graph modifications

Merge Operations

  • start_merge(session_id, transform_id) - Start merging processed data
  • get_merge_status(merge_id) - Check merge status
  • get_conflicts(merge_id) - Get conflicts requiring resolution
  • resolve_conflict(merge_id, conflict_id, ...) - Resolve specific conflicts
  • get_merge_statistics(merge_id) - Get merge statistics
  • get_merged_graph(merge_id, transform_id) - Retrieve merged graph

Documentation

For detailed documentation, see the docs directory or visit our official documentation website.

Examples

Check out the examples directory for sample code demonstrating various use cases:

  • manage_ontology.py - Ontology creation and management
  • upload_and_transform.py - Document upload and transformation
  • modify_graph.py - Graph data manipulation
  • merge_graph_data.py - Merging and conflict resolution

Contributing

We welcome contributions! Please see our Contributing Guide for details.

Before Contributing

  1. Read the Code of Conduct
  2. Sign the Contributor License Agreement
  3. Check out good first issues

Documentation

Related Repositories

License

This project is licensed under the MIT License.

See LICENSE for full terms.

Note: While this client library is MIT licensed, the Graphora backend services are AGPL v3 licensed. For commercial use of the backend, contact sales@graphora.io

Community

Security

Please report security vulnerabilities to support@graphora.io

See SECURITY.md for details.


Made with ❤️ by Arivan Labs

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

graphora-0.4.5.tar.gz (38.3 kB view details)

Uploaded Source

Built Distribution

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

graphora-0.4.5-py3-none-any.whl (41.0 kB view details)

Uploaded Python 3

File details

Details for the file graphora-0.4.5.tar.gz.

File metadata

  • Download URL: graphora-0.4.5.tar.gz
  • Upload date:
  • Size: 38.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for graphora-0.4.5.tar.gz
Algorithm Hash digest
SHA256 2eae3c9c50cd484ba4cc2db6c7c8c0670edcc084404396d0b113f24d8947b767
MD5 3e5155f35cbf1eda6e561c96d218d42f
BLAKE2b-256 6e825bf17455917987cc96d8458358cbb9ddb151b549745580aa0b98d8d1d06b

See more details on using hashes here.

File details

Details for the file graphora-0.4.5-py3-none-any.whl.

File metadata

  • Download URL: graphora-0.4.5-py3-none-any.whl
  • Upload date:
  • Size: 41.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for graphora-0.4.5-py3-none-any.whl
Algorithm Hash digest
SHA256 eb41f3ab8dcc408bd1695762d93084693c2d429425f4065effc12bc23598106b
MD5 8f2a42d1e7ef971348e72a82b712eae7
BLAKE2b-256 e723a121f1b81b9fbe59cfc78346f09c9d52a02b5e8bb2304385a7250bde0c9d

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