Skip to main content

pydcapi: Unofficial Python library for Adobe Document Cloud

PyPI - Version

pydcapi is a typed client for the private API behind Acrobat web (dc-api-v2.adobe.io): folders, assets, uploads, PDF operations, jobs, user info. It is generated from Adobe's own discovery document and JSON schemas, so every operation returns a pydantic model.

It is unofficial. It uses the same session mechanism as the web app, so it can break without notice and it is your responsibility to stay within Adobe's terms.

Install

pip install pydcapi

Python 3.10+. Dependencies: httpx2, pydantic>=2, uritemplate.

Quickstart

import pydcapi
from pydcapi import credentials

client = pydcapi.Client(credentials.JSONFileCredentialsProvider("credentials.json"))

me = client.users.get_user(fields="identity")
print(me.identity.email)

root = client.folders.get_system_folders().roots.document_cloud.root_uri
listing = client.folders.list(folder_uri=str(root), order_by="name", sort_order="ascending")
for member in listing.members:
    print(member.name)

Authentication

There is no public OAuth client for this API. Authentication piggybacks on the browser session of a logged-in Acrobat web user:

Credential Lifetime Where it comes from
ims_sid long-lived session cookie your browser, after logging in to acrobat.adobe.com
aux_sid long-lived session cookie same; optional, ims_sid alone is enough
token 24 hours minted automatically from ims_sid via Adobe IMS
expiry hours schema expiry timestamp, fetched automatically

You only ever need to supply ims_sid. The client obtains and renews the access token on its own, and hands renewed values back to your CredentialsProvider, so a provider that persists (JSONFileCredentialsProvider) keeps itself up to date.

Treat ims_sid like a password: it is a full login to your Adobe account.

Getting ims_sid from the browser

  1. Open https://acrobat.adobe.com/link/home/ in Chrome and sign in.
  2. Open DevTools (Cmd+Opt+I), go to Application > Storage > Cookies.
  3. Select https://acrobat.adobe.com, find the cookie named ims_sid (domain .services.adobe.com). It is a ~770 character opaque string.
  4. Copy its value. Optionally also copy aux_sid (domain .adobe.com).

Put it in a credentials file:

{ "ims_sid": "AUU3RIS...", "aux_sid": "" }

or in the environment as IMS_SID and use EnvCredentialsProvider().

Scripted alternative with agent-browser:

agent-browser --session adobe --profile ~/.config/pydcapi/browser --headed open https://acrobat.adobe.com/link/home/
# sign in in the window that opens, then:
agent-browser --session adobe cookies get --json | jq -r '.data.cookies[] | select(.name=="ims_sid") | .value'

How long does it last?

The cookie itself is issued with a one-year expiry, and every token refresh rotates it (old values stay valid). What ends a session server-side is signing out in the browser, changing the password, revoking sessions in the Adobe account settings, or Adobe's own inactivity limit, which is not documented. If your session stops working the client raises pydcapi.AuthenticationError; log in again and copy a fresh ims_sid.

Credential providers

  • StaticCredentialsProvider(dict) for in-memory use.
  • EnvCredentialsProvider(prefix="") reads IMS_SID, AUX_SID, TOKEN, EXPIRY.
  • JSONFileCredentialsProvider(path) reads and writes a JSON file, including the renewed token. ~ is expanded, the file is created on first write with mode 0600.
  • Anything with get() -> Credentials and set(Credentials) -> None.

Development

uv sync
cp .env.example .env   # then paste your IMS_SID
uv run pytest
uv run ruff check && uv run ruff format --check && uv run mypy

tests/test_client.py holds live integration tests against your account; they are skipped without credentials. The rest runs offline. CI runs the same commands on the oldest and newest supported Python.

src/pydcapi/models and src/pydcapi/resources are generated; do not edit by hand.

Release files for pydcapi 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pydcapi 0.3.0
File Size Uploaded
pydcapi-0.3.0.tar.gz 52.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pydcapi 0.3.0
File Interpreter ABI Platform
pydcapi-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 149.9 kB

Release files / pydcapi-0.3.0.tar.gz

Download URL pydcapi-0.3.0.tar.gz
Size 52.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1b3a5f75b97e63442dcbbda79c83f49780f52985d49b630eab310074ee20387d
BLAKE2b-256 checksum
How to use checksums
bd04d6cab2a383c858207b981d3033ce500e4ab2e4c6215d6c1b6c0d85b79d1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.

Transparency log

Release files / pydcapi-0.3.0-py3-none-any.whl

Download URL pydcapi-0.3.0-py3-none-any.whl
Size 97.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ba331a99698dcf7eeed6a7fa4b54f7feb60f5a6cf8874f2cb6ec46c741ddc2d0
BLAKE2b-256 checksum
How to use checksums
20e6310fa98a27c4413323e5120a9d65ff4d960de0ea5133f73649f1f2f465d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.0

2 release files

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page