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.9+. Dependencies: httpx, 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.2.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.2.0
File Size Uploaded
pydcapi-0.2.0.tar.gz 52.3 kB Details

Built distribution (wheel)

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

Total release size: 149.8 kB

Release files / pydcapi-0.2.0.tar.gz

Download URL pydcapi-0.2.0.tar.gz
Size 52.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b9f976fbb0cc4fdb5485acb16d150a5fffc1570de29f5e29aa5de64c47c9f868
BLAKE2b-256 checksum
How to use checksums
92014774ab4f4576bd8669a52ecad72125a362ae92cd7b0556f6a77e25ba09f9
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.2.0-py3-none-any.whl

Download URL pydcapi-0.2.0-py3-none-any.whl
Size 97.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cb74ca704e7fb97934b7c3cc314d6623a49e15d05b231c1ef849a06991627656
BLAKE2b-256 checksum
How to use checksums
934a61aac474c6c068a8e4bb05d16734f918b268d8606ca303b17c348b6f013c
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

0.3.0

2 release files

This release

0.2.0 This release

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