canonical: https://jentic.com/apis/accela.com/accela

# Accela API

The Accela API is a focused 30-endpoint cut of the Accela Civic Platform surface, covering the most common operations for managing records, inspections, addresses, contacts, parcels, documents, and professionals. It targets civic engagement applications - permitting portals, contractor tools, and inspection apps - where developers need core CRUD on records and inspections without the full breadth of the platform API. Authentication is OAuth 2.0 against auth.accela.com and requests are scoped to an agency via the X-Accela-Agency header.

## For AI agents

Manage Accela civic records, inspections, addresses, parcels, and documents through a streamlined 30-endpoint surface so agents can automate permit lookups and inspection scheduling.

## Scope

Does not handle card payment capture, GIS rendering, or constituent identity verification - use for core Accela record, inspection, address, and contact operations only.

## Capabilities

- Search and retrieve agency records (permits, licenses, applications) with id and filter queries
- Create new records and update existing record fields via PUT /v4/records/{id}
- Schedule inspections on a record and update results once they are complete
- Look up addresses and parcels to populate or filter records
- Manage contacts attached to a record, including applicants and owners
- Retrieve and attach documents associated with a specific record

## Use cases

### Citizen-Facing Permit Status Lookup

A municipal portal lets citizens check the status of permits and licenses on their property using GET /v4/records and GET /v4/addresses. The portal forwards the citizen's address to Accela, retrieves matching records, and displays current status, fee balance, and next inspection date. This reduces inbound phone calls to the permit office and gives applicants real-time visibility.

Example prompt: Search GET /v4/records using an address filter and return the most recent permit's status, balance, and next scheduled inspection

### Contractor Permit Submission and Tracking

A contractor management tool calls POST /v4/records to submit new permit applications on behalf of licensed contractors, then polls GET /v4/records/{id} for status changes. The tool also uses /v4/inspections to request inspections as work progresses. Contractors get a single dashboard across multiple agencies that all run Accela.

Example prompt: Call POST /v4/records to create a new electrical permit, then schedule a rough-in inspection via POST /v4/inspections

### Inspection Field App with Result Capture

Field inspectors use a mobile app that loads the day's inspections, captures result codes and notes, and updates them via PUT on the inspection record. The app also attaches photos to the record using the documents endpoints. Compared to paper-based workflows, agencies see same-day case updates and a complete digital audit trail.

Example prompt: Update inspection id 12345 with result code 'Passed', add notes, and attach a verification photo to the parent record

### Agent-Driven Permit Operations via Jentic

An AI assistant inside an agency's helpdesk uses the Accela API through Jentic to handle constituent calls - looking up record status, finding the next inspection slot, or creating a service request record. The agent searches Jentic for the right operation, the OAuth flow is brokered, and credentials never enter the agent's context window.

Example prompt: Through Jentic, search 'find all open permits at an address', load GET /v4/records, and return open records ordered by date

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /v4/records | Search records with filters |
| POST | /v4/records | Create a new record |
| GET | /v4/records/{id} | Retrieve a specific record |
| PUT | /v4/records/{id} | Update a record |
| GET | /v4/addresses | Search addresses |
| GET | /v4/addresses/{id} | Retrieve a specific address |
| POST | /oauth2/token | Obtain an OAuth access token |

## Key resources

- **Records** — Core records covering permits, licenses, planning applications, and service requests
- **Inspections** — Schedule, update, and retrieve inspections tied to records
- **Addresses** — Search and retrieve address data used to start or filter records
- **Contacts** — Applicants, owners, and licensed professionals attached to records
- **Parcels** — Parcel lookup by APN or location for permit context
- **Documents** — Attachments tied to records, including site plans and photos

## Why Jentic

- **Setup:** Wiring the Accela API by hand means brokering its OAuth flow, minting agency-scoped tokens, and threading the X-Accela-Agency header through every record and address call. Through Jentic you install once, import the Accela API from the API Directory, store the OAuth client credentials once, and your agent calls it.
- **Permission scoping:** Accela puts the record id in the URL path (/v4/records/{id}), so a rule can pin your agent to one record: it can read and update that record and nothing else. You choose the operations it may call, so creating new records is not included unless you add it.
- **Credential handling:** Your Accela OAuth client credentials and agency scopes are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a new permit record', and Jentic returns the matching Accela operation with its input schema, including the X-Accela-Agency header field, so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Accela Civic Platform API** — The full 86-endpoint Accela platform API including workflows, payments, and agency settings.
- **Data.gov API** — Federal open data catalog for cross-jurisdiction reference data alongside agency-specific Accela records.
- **Stripe API** — Process card payments for civic fees and post the result back into Accela record fees.

## FAQ

### What authentication does the Accela API use?

OAuth 2.0 with authorization at GET /oauth2/authorize and token exchange at POST /oauth2/token. Each call also requires an X-Accela-Agency header to scope to the relevant agency. Through Jentic, OAuth client credentials are stored encrypted and tokens are injected at execution time.

### Can I create new permit records with the Accela API?

Yes. POST /v4/records creates a new record of a configured record type, and PUT /v4/records/{id} updates fields on an existing record. The set of allowed record types is determined per agency, so look up the available types in the agency's Accela environment first.

### What are the rate limits for the Accela API?

The OpenAPI spec does not document explicit rate limits. Accela enforces per-agency limits configured in the production and sandbox environments and documented in the agency's developer portal. Implement exponential backoff on HTTP 429 responses.

### How is this Accela API different from the Accela Civic Platform API?

This Accela API is a 30-endpoint subset focused on the most common record, inspection, address, contact, and parcel operations. The Accela Civic Platform API is the full 86-endpoint surface that adds workflow, payment record detail, agency settings, and broader search. Pick this one when a smaller agent tool surface is preferable.

### How do I create a permit through Jentic?

Run pip install jentic and search 'create a new permit record for an applicant'. Jentic returns POST /v4/records, you load the schema, supply the agency and applicant fields, and execute. The OAuth handshake and X-Accela-Agency header are handled by the Jentic execution layer.

### Does the Accela API support webhook notifications?

The current OpenAPI surface focuses on synchronous record and inspection operations and does not expose webhook subscription endpoints. To detect record changes, poll GET /v4/records with a last-updated filter, or use Accela's separate event subscription channels in their portal.

### Can I limit what my agent is allowed to do with the Accela API?

Yes. Because you run Jentic One yourself, your own rules decide which Accela operations and credentials the agent may use. The Accela API puts the record id in the URL path (/v4/records/{id}), so you can pin the agent to a single record and let it read and update only that record. You choose the operations it may call, so creating new records with POST /v4/records is not available unless you explicitly add it.
