Skip to main content

accuclass-client

An unofficial Python client and command-line tool for the AccuClass attendance system. It uses AccuClass's legacy "Service" API, so you can pull attendance exports and records without .NET, Visual Studio or Engineerica's Windows tools. It uses only Python's standard library, so it has no dependencies.

Not affiliated with Engineerica. AccuClass is a product of Engineerica Systems, Inc. This project isn't affiliated with or endorsed by them. Only use it with an AccuClass account you're authorised to use, and within your institution's agreement with Engineerica.

Install

pip install accuclass-client

Requires Python 3.9 or later. This installs the accuclass command and the accuclass_client Python module.

If Windows says accuclass isn't recognised, Python's Scripts folder isn't on your PATH. That's common with the Microsoft Store version of Python. Use python -m accuclass_client instead, e.g. python -m accuclass_client probe.

Quick start

accuclass probe
accuclass export --type attendance --format CSV --out attendance.csv

probe logs in and shows a sample of your data, which confirms the connection works. You'll be asked for anything that isn't already set:

Setting Command-line flag Environment variable
AccuClass domain (your account name) --domain ACCUCLASS_DOMAIN
Login email --user ACCUCLASS_USER
Password (always prompted, or…) ACCUCLASS_PASSWORD
Site address (default https://www.accuclass.net/) --base-url ACCUCLASS_URL
User-Agent header (default: a desktop browser's) — ACCUCLASS_USER_AGENT

Exports need an account with export rights, usually an administrator.

About the User-Agent: accuclass.net is behind Cloudflare, which blocks Python's built-in User-Agent (Python-urllib/3.x) with HTTP 403 … error code: 1010. The client therefore sends a desktop browser's User-Agent by default, since that's the value proven in live use. Set ACCUCLASS_USER_AGENT to send something else.

Commands

Command What it does
accuclass probe Log in and print a sample semester and class.
accuclass export --type T --format F --out FILE Run one of AccuClass's own exports and save the file exactly as the server produces it. Types: attendance, swipes, students, instructors, enrollment, classes. Formats: CSV, HTML, XLSX.
accuclass list classes|semesters --out FILE Save every class or semester as a CSV.
accuclass raw ACTION key=value … Call any API action and print the JSON reply, e.g. accuclass raw semester.list from=0 count=5.

The commands and helpers are limited to what's been confirmed on a live server. Some actions in Engineerica's original .NET client no longer exist on current servers: attendancelog.listsummary, for example, now returns "not registered in the service". Anything else can still be tried with raw or AccuClass.call().

Add -v to print each request as it's sent (passwords are masked). accuclass --version shows the installed version.

Python

from accuclass_client import AccuClass

with AccuClass() as ac:                                   # logs out automatically
    ac.login("yourdomain", "you@example.edu", "password")
    classes = ac.classes()                                # every class, paged automatically
    data = ac.export("attendance", "CSV")                 # bytes, exactly as the server produced them
    page = ac.call("class.list", **{"from": 0, "count": 50})   # any action, called directly

ac.call(action, **params) reaches any action of the API. Parameters set to None are left out; pass accuclass_client.JSON_NULL to send an explicit null. Failures raise AccuClassError.

How it works

Every call is a single HTTP request:

POST https://www.accuclass.net/Service/?action=<action>&token=<session token>
body: the parameters as a compact JSON object

login returns the session token. Exports run as background jobs: the client polls bgjob.getstatus and then downloads the finished file from JobResults/.

This mirrors Engineerica's own .NET client, EngineericaApi.dll, whose source they published in engineerica/engineerica-dev. The test suite checks that our requests are byte-for-byte identical to those the .NET client sends.

Status

This is an early release (alpha). So far it has been used against one institution's live AccuClass server for logging in, the attendance export, and listing classes and semesters. The automated tests run offline against a mock server. Reports of what works on your server are very welcome. Please open an issue.

Troubleshooting

Message Meaning
HTTP 403 … error code: 1010 The site's Cloudflare protection blocked the request. Ask your AccuClass administrator or Engineerica support whether API access needs to be allowed for your network.
Server redirected (301) to … Your institution uses a different AccuClass address. Pass it with --base-url.
'login' failed: … Wrong domain, email or password, or the account isn't allowed to use the API.
'export' failed: Unable to execute action. The server refused that export type or format. Try --format CSV.
Action '…' is not registered in the service. That action doesn't exist on your server, probably because it was retired after the original .NET client was written.
HTTP 404 / did not return JSON The address is wrong, or this legacy API isn't available for your account. Engineerica's newer REST APIs are documented at developers.engineerica.com.
Proxy problems The client uses your system's proxy settings, the same as your browser.

Development

python -m unittest discover -s tests -v

The tests run offline against a local mock server. See CHANGELOG.md for version history.

Licence

MIT © 2026 Oliver Holdsworth

Metadata

Release files for accuclass-client 0.6.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 accuclass-client 0.6.0
File Size Uploaded Provenance
accuclass_client-0.6.0.tar.gz 19.8 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for accuclass-client 0.6.0
File Interpreter ABI Platform
accuclass_client-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 33.9 kB

Release files / accuclass_client-0.6.0.tar.gz

Download URL accuclass_client-0.6.0.tar.gz
Size 19.8 kB
Tags Source
SHA-256 checksum
How to use checksums
25b2d307e04a6e7fcd353716697e9674bfaa359500e4074e487bdd4fa1bcc947
BLAKE2b-256 checksum
How to use checksums
4cba66d096e49412230f2659db972356bee2016893ced3322d8fc2ec33b54583
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 Oct 6, 2026.

Transparency log

Release files / accuclass_client-0.6.0-py3-none-any.whl

Download URL accuclass_client-0.6.0-py3-none-any.whl
Size 14.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4d1c8a4620da25177b3375aeba538687bfaf5f58f8be5e262eb110f275fbec19
BLAKE2b-256 checksum
How to use checksums
900593923818375b4083f17f256d39735700db4a9c103427a05f15e3521dc74b
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 Oct 6, 2026.

Transparency log

Security for accuclass-client 0.6.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for accuclass_client-0.6.0.tar.gz

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 Oct 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files Full provenance

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