Intapp REST Client (Beta)

BETA - Intapp REST Client

This version of the SDK is in BETA only. If you would like to be included in the beta, please contact Brian Michael brian.michael@intapp.com

Expected GA Release 2610.

The Intapp REST Client is a lightweight, HTTPX-based REST client library with multi-authentication support, retry logic, and structured logging. It serves as the foundation for Intapp API integrations.

🔌

Foundation Library: This client is used internally by the DealCloud Python SDK and can be used standalone for any REST API integration.

Key Features

📚

For complete RestClient signatures, parameters, and methods, see the API Reference.

FeatureDescription
HTTPX BackendModern async HTTP client with connection pooling
Sync & AsyncSupport both synchronous scripts and async applications
Multi-AuthOAuth2, API Key, Basic, JWT, Entra ID, Okta
Smart RetryBuilt-in 429/5xx handling with exponential backoff
Structured LoggingRequest/response logging with sensitive data masking
Per-Status RetriesConfigure different retry counts per HTTP status code
Enterprise Authhttpx-auth integration for Azure AD, AWS SigV4, and more
OpenTelemetryDistributed tracing via httpx instrumentation
Streaming Downloaddownload_file() / adownload_file() for memory-efficient file downloads
Parallel Requestsparallel_get(), parallel_post(), parallel_put() for bulk operations

Why Use This?

  • Standalone API Client: Use for any REST API, not just DealCloud
  • Production Ready: Retry logic and error handling
  • Type Safe: Full typing support with Pydantic models
  • Lightweight: Minimal dependencies, fast startup

Installation

pip install intapp-rest-client
pip install intapp-rest-client[jwt]              # JWT authentication
pip install intapp-rest-client[enterprise-auth]  # Azure AD, Okta, AWS

Quick Examples

Using OAuth2 Client Credentials

from intapp_rest_client import RestClient, OAuth2Config, RetryConfig
 
client = RestClient(
    base_url="https://api.example.com/",
    oauth2_config=OAuth2Config(
        token_url="https://api.example.com/oauth/token",
        client_id="your_client_id",
        client_secret="your_secret",
        scope="data"
    ),
    retry_config=RetryConfig(
        max_retries=5,
        backoff_factor=2.0,
        retryable_statuses=(429, 500, 502, 503, 504)
    )
)
 
# GET request
data = client.get("/api/v4/resources")
 
# POST with JSON body
result = client.post("/api/v4/resources", json={"name": "New Resource"})
 
client.close()

Context Manager

with RestClient(base_url="https://api.example.com/", api_key="your-key") as client:
    data = client.get("/api/v4/resources")

Async Usage

import asyncio
from intapp_rest_client import RestClient, OAuth2Config
 
async def main():
    async with RestClient(
        base_url="https://api.example.com/",
        oauth2_config=OAuth2Config(...)
    ) as client:
        # Async requests
        data = await client.aget("/api/v4/resources")
        result = await client.apost("/api/v4/resources", json={"name": "New"})
 
asyncio.run(main())

HTTP Methods

MethodSyncAsyncDescription
GETget()aget()Retrieve resources
POSTpost()apost()Create resources
PUTput()aput()Replace resources
PATCHpatch()apatch()Update resources
DELETEdelete()adelete()Remove resources
HEADhead()ahead()Headers only (e.g. Content-Length, ETag)
OPTIONSoptions()aoptions()CORS / API discovery

Raw Response and Streaming

MethodSyncAsyncUse Case
get_raw()aget_raw()Binary downloads (small files)
post_raw()apost_raw()File uploads
request_raw()arequest_raw()Any method
download_file()adownload_file()Streaming file download (memory-efficient)

Pagination Methods

Memory-efficient streaming pagination for large datasets:

MethodPagination InUse Case
get_paginated()Query paramsStandard REST pagination
post_paginated()Request bodyQuery-based pagination
post_paginated_params()Query paramsPOST with URL pagination
# Stream large dataset without loading into memory
for batch in client.get_paginated(
    "/api/v4/data/rows/Company",
    page_size=1000,
    data_key="rows"
):
    process_batch(batch)

Topics

Support

For issues and feature requests, contact your Intapp representative or visit the API Documentation (opens in a new tab).