Skip to main content

Unofficial Python SDK for the Addepar API

Project description

AddePy

Unofficial Python SDK for the Addepar API.

Installation

pip install addepy

Setup

Create a .env file in your project with your Addepar credentials:

ADDEPAR_FIRM_NAME=yourfirm
ADDEPAR_FIRM_ID=12345
ADDEPAR_API_KEY=your_base64_encoded_api_key

ADDEPAR_FIRM_NAME is your URL subdomain: https://{ADDEPAR_FIRM_NAME}.addepar.com

Usage

from addepy import AddePy

addepy = AddePy()  # Reads from .env automatically, or pass in config variables yourself

# List entities - Tier 1 Method
entity_types = addepy.ownership.entities.list_entity_types()

# Execute a portfolio query (submit, poll, download) - Tier 2 Method
results = addepy.portfolio.jobs.execute_portfolio_query(query_dict)

# Run an import (submit, poll, download) - Tier 2 Method
results = addepy.admin.import_tool.execute_import(df, "TRANSACTIONS")

The Import Tool via API is in Beta (as of 12/10/2025), so you may need to request access for your firm. However, this is a great tool... the Import Tool allows data management of almost resources in Addepar...

Design Philosophy

Namespaces & Resources

The SDK mirrors the Addepar API documentation structure with three namespaces:

addepy.portfolio    → Market data & holdings
addepy.ownership    → Entity management
addepy.admin        → System & user management

Each namespace contains resources that map to API endpoints:

addepy.portfolio.jobs           # /v1/jobs
addepy.ownership.entities       # /v1/entities
addepy.admin.import_tool        # /v1/imports

Tier 1 vs Tier 2 Methods

Tier 1 - CRUD Operations

Direct wrappers around individual API endpoints.

Pattern Purpose
create_* Create a resource
get_* Retrieve a resource
list_* List resources (with pagination)
update_* Update a resource
delete_* Delete a resource
job_id = addepy.portfolio.jobs.create_job(query_dict)
status = addepy.portfolio.jobs.get_job_status(job_id)
results = addepy.portfolio.jobs.get_job_results(job_id)

Tier 2 - Orchestration

Combine multiple Tier 1 operations into a single call.

Pattern Purpose
execute_* Submit → Poll → Return results
# Does create_job + poll for completion + get_job_results
results = addepy.portfolio.jobs.execute_portfolio_query(query_dict)

Use Tier 1 when you need fine-grained control. Use Tier 2 for convenience.

Error Handling

from addepy import AddePyError, AuthenticationError, RateLimitError, ValidationError

try:
    results = addepy.ownership.entities.create_entity(...)
except ValidationError as e:
    print(f"Invalid input: {e}")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after} seconds")
except AddePyError as e:
    print(f"API error: {e}")

Logging

import logging

logging.getLogger("addepy").setLevel(logging.DEBUG)
logging.getLogger("addepy").addHandler(logging.StreamHandler())

Repository Structure

Mirrors the Addepar API documentation:

addepy/
├── client.py              # Main entry point
├── exceptions.py          # Custom exceptions
├── constants.py           # SDK constants
└── resources/
    ├── base.py            # Base resource class
    ├── portfolio/         # PORTFOLIO endpoints
    │   └── jobs.py
    ├── ownership/         # OWNERSHIP endpoints
    │   └── entities.py
    └── admin/             # ADMIN endpoints
        └── import_tool.py

Addepar API Documentation

Official docs: developers.addepar.com

API Sections:

  • Portfolio - Jobs, Transactions, Historical Prices, Benchmarks, etc.
  • Ownership - Entities, Groups, Positions, External IDs
  • Admin - Import Tool, Users, Files, Reports, etc.

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

addepy-0.1.0.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

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

addepy-0.1.0-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: addepy-0.1.0.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for addepy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 85e8d76d579c1f5195029951b1710abfb98795f9b1c36f838142061656d5f5d1
MD5 8722d52d2bd179863e7bd7d3ca8b141a
BLAKE2b-256 342fbd08a97d2969c55e70ddd5ebd7f78e5d952ddfee458bcee6d51ad5526e06

See more details on using hashes here.

File details

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

File metadata

  • Download URL: addepy-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for addepy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1192739495411b2e9708bf9747c1b3bdf37fa49a9ae85f7cf4b933d2a0b411e8
MD5 f75314c64199d50e25cca2df61795c10
BLAKE2b-256 2986e347d0ac831b8bceb65c8718263596789000b5a52cf9c0364a6d1c730006

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