Developer notes
The AccuLynx API, Read Line by Line: Keys, Jobs, Webhooks and the Gaps
AccuLynx publishes its API documentation where anyone can read it, which is rarer in roofing software than it ought to be. The catch is that the parts a roofing website needs are scattered across guides, reference pages and a changelog with no dates. This page gathers them, with the limits left in.
October 30, 2026 · 11 min read
The short answer
The AccuLynx API (V2) has public documentation at apidocs.acculynx.com. Access needs the AppConnections add-on, and a Location or Company Administrator creates the key, one per location. Requests send the key as a Bearer token. The API reads contacts, jobs, calendars and financials, creates contacts and jobs, sets a job's initial appointment, and offers webhooks.
On this page
- Public docs, private keys: who gets in and how
- One header, no OAuth, and a key that behaves like a master password
- Can the API do this? Twelve questions, answered from the reference
- From web form to Lead milestone, in AccuLynx's own order
- Webhooks, polling and two rate limits that disagree
- Getting a key and scoping the project, in eight steps
- How we build on it, and the price of a connection
Public docs, private keys: who gets in and how
Start with the good news. The AccuLynx API documentation needs no login, and the current version is V2. The old V1 documentation has been taken down; AccuLynx says V1 endpoints still answer but recommends moving to V2, where a new lead is made with the Create Job endpoint. Its Getting Started page lists three requirements: an active AccuLynx account, an API key, and a technical grasp of how APIs work. That third item is the docs' polite way of saying this is a job for a developer.
AccuLynx offers two routes in. Zapier is meant for people with little integration experience. The Advanced API is for experienced developers and reaches every endpoint. The examples AccuLynx gives are the two that matter most to a roofer: adding leads from another application, and sending a job's contacts to marketing software when the job reaches a milestone.
- The add-on. In AccuLynx's words: "Yes, you must enable the AppConnections add-on to access select third-party app connections as well as AccuLynx API keys." It is switched on from the Add-Ons section of the AccuLynx Market. No price is published, and AccuLynx does not say which plans can add it.
- The person. "Keys can be created by your Location or Company Administrator within AccuLynx Account Settings." A developer cannot make one from outside.
- The location. "Accounts with multiple locations will need to connect each location to our API individually." A three-branch company sets up three connections.
- The help desk. AccuLynx Customer Support "provides troubleshooting and guidance for the AccuLynx web and mobile applications only." API questions go to api@acculynx.com, and the docs recommend "working with qualified developers or technical integration partners."
One header, no OAuth, and a key that behaves like a master password
Authentication is plain. Every request carries Authorization: Bearer <API key>, and there is no OAuth flow to set up. Data calls go to https://api.acculynx.com/api/v2/, webhook management to https://api.acculynx.com/webhooks/v2/. Simple to code. Also simple to misuse, which is why AccuLynx's own developer guide warns that anyone holding a key can expose or change company data, and tells customers to treat keys like passwords.

That rule settles where the code runs. A key typed into a form plugin's settings screen, pasted into a script tag or emailed around the office is a key with too many owners. On the sites we build, it lives in the server's environment, the browser never sees it, and the form talks to our server rather than to AccuLynx directly. The contractor enables the add-on and creates the key in their own account. We never ask for anyone's AccuLynx login, and a vendor who does has told you something useful about the rest of the job.
Can the API do this? Twelve questions, answered from the reference
The V2 reference groups its endpoints as acculynxCommon, calendar, company, contacts, diagnostics, estimates, jobs, leads, users, reports, invoices, financials and supplements, with a separate Webhooks API. The table answers the questions roofers and their developers actually ask, using endpoint names exactly as AccuLynx publishes them, as of October 2026.
| Answer | What the documentation shows | |
|---|---|---|
| Create a lead in one call | No | V2 has no Create Lead endpoint. A lead is a job in the Lead milestone, made with Create Job once a contact exists |
| Find or create a contact | Yes | Search Contacts and Create Contact (POST /api/v2/contacts), plus Create Phone Number and Create Email Address |
| Create a job | Yes | Create Job (POST /api/v2/jobs) starts in the Lead milestone, unassigned; the contact field is required |
| Set lead source, job category, work type and trade types | Yes, by ID | IDs come from the company settings endpoints. AccuLynx's guide: "Do not pass configured values as free text." |
| Add a new lead source | No | Lead sources must already exist; the active list comes from Get Active Lead Sources for a Company |
| Read calendar appointments | Yes, 90 days at a time | Get Calendar Appointments: "The request range should not exceed 90 days." |
| Book an inspection | Partly | Calendars are read-only. The one writable appointment is a job's initial appointment, through PUT /api/v2/jobs/{jobId}/initial-appointment |
| Send a text message | No | No send endpoint. Phone numbers carry hasTextingAvailable, contact reads include SMS opt-out details, and Create Contact Log can record an SMS |
| Store a Google click ID | Yes, by design choice | In a job custom field (text, number, date, selection or boolean) or in the job notes, which cap at 1,000 characters |
| Pull report results | No | Report endpoints return scheduled-run metadata, not rows; dashboards use jobs, financials and lead sources, or DataMart |
| Create an estimate or a user | No | Estimates and users are read-only |
| Hear about changes without asking | Yes | Webhooks for contact, job, initial appointment, milestone, custom field and invoice events |
Two reads deserve a mention because sync jobs live on them. Get Jobs filters by startDate and endDate with dateFilterType set to CreatedDate, MilestoneDate or ModifiedDate, and by milestone and assignment; pageSize defaults to 10 and tops out at 25. The jobs group also reads financials, payments, representatives, milestone history and insurance details, which is what a custom dashboard is built from. Report rows themselves never come through the API.
From web form to Lead milestone, in AccuLynx's own order
AccuLynx wrote a guide called Create a Lead/Job from a Third-Party System, and a careful website follows it to the letter. The sequence is the whole craft of a lead form integration, so it is worth seeing in order:
- 1.Search for the contact, and create one only when nothing matches.
- 2.Get the contact type ID. Leave the type blank and AccuLynx defaults to Customer.
- 3.Look up the IDs for job category, work type, trade type and lead source from AccuLynx's own lists.
- 4.Create the job. It lands in the Lead milestone with no assigned rep, optionally with a location address and a priority of Urgent, High or Normal.
- 5.Add the extras afterward: the initial appointment, insurance details, job messages, documents, photos, a sales rep through Update Company Representative, and custom fields.
The homeowner asks
An inspection request, a storm-damage form or a booking, on the roofer's own website.
The site checks and sends
The server validates it, keeps the API key to itself, and sends the lead to AccuLynx.
AccuLynx gets a lead
Name, address, phone, the roof problem and the source, filed where the office already works.
The office books the inspection
No retyping, no clipboard in the truck, and the source rides along to the signed contract.
The small print matters. Phone numbers must be 10 digits, typed Home, Mobile or Work. Create Contact marks no top-level field as required, so the website has to enforce its own minimum; nothing in the schema stops a contact with no name. Notes longer than 1,000 characters belong in Create Job Message. And the guide tells integrators to store the AccuLynx contact ID, job ID, external lead ID, lead source ID and sync timestamps, which is exactly what makes a retry safe: a server that remembers what it already sent never sends it twice.
Webhooks, polling and two rate limits that disagree
AccuLynx has webhooks, and they are the right way to learn that a lead became a contract. A subscription needs a consumerUrl (a public HTTPS address that accepts POST and cannot be changed later), a techContact email and topicNames. Published topics include Job Created, Job Updated, Job Appointments Initial Created and Updated, Job Milestone Current Changed, Contact Added and a set of custom-field events. The Job Created payload carries the job's milestone, contacts, address, lead source, category and work type. A test-event endpoint sends a sample that is not stored.
The webhook guidelines are short and firm: "The timeout limit for webhooks is 10 seconds." Respond with a 2xx code. "Be prepared to handle duplicate events." And "If the listener responds with errors too many times, the webhook subscription will be disabled." Registration returns a secret "for validation," but the docs do not describe how a signature is checked, so we do not invent a method. Our listeners answer at once, put the event on a queue, and use its eventId to ignore repeats.
Polling still has a place. A nightly pass over Get Jobs, filtered by ModifiedDate, catches anything a webhook missed while a server was restarting. One more absence to plan around: AccuLynx documents no sandbox. Testing happens in a live location, so we agree a naming convention for test records with the office before the first one is created, and nobody calls a homeowner named Test Testerson.
Getting a key and scoping the project, in eight steps
This is the order we follow with a roofing office, and it works as well for a company hiring someone else. Menu paths below come from AccuLynx's own articles and can differ by account.
- 1
Confirm AppConnections with AccuLynx
Ask your AccuLynx contact whether the add-on is on your account and what it costs on your plan. AccuLynx publishes neither the price nor which plans qualify.
- 2
Choose the administrator who will hold the keys
Only a Location or Company Administrator can create one. AccuLynx's Zapier article gives the path as Account Settings, then Add-On Features and Integrations, then API Keys, then Create Key.
- 3
Count your locations
Each location connects separately, so a multi-branch company decides which branches the website feeds and creates a key for each.
- 4
Tidy the lead sources first
Every source the website will use, such as a Google Ads campaign, a storm landing page or a yard sign number, must exist and be active in AccuLynx, since the API cannot add one.
- 5
Write the field map
List each form field and where it goes: contact, job, custom field or job message. Decide where the Google click ID lives. Agree the job category, work type and trade type for each form.
- 6
Decide what flows back
Pick the webhook topics the site or dashboard needs, such as Job Created and milestone changes, and what a nightly polling pass should catch.
- 7
Agree how testing works
With no sandbox, test records go into a live location under a name the office recognizes, and the office knows when testing happens.
- 8
Install the key on the server
The administrator creates the key and passes it through a secure channel straight into the server's settings. It never goes into the browser or a plugin settings page.
How we build on it, and the price of a connection
Our API integrations work follows the same habits on every project, and AccuLynx's documentation rewards each of them. We are a San Antonio studio, not an AccuLynx partner, and nothing here is endorsed by AccuLynx.
Map, then code
Field mapping is agreed in writing before a line is written, including which AccuLynx lead source each page and campaign uses.
Server-side checks
Leads are validated on the server before anything goes to AccuLynx: names, 10-digit phones, service area and spam.
Queued and idempotent
A failed send is retried with backoff, and stored IDs keep a retry from creating a second contact or job.
Logs in sentences
The office can read what was sent, when and what came back, without a developer as interpreter.
The closest proof is outside AccuLynx. HomeService WebApp, a contractor command center we redesigned, puts open estimates, customers and overdue follow-ups in one place, the same shape as an AccuLynx dashboard built from jobs and milestones. LeadBolt, our speed-to-lead product, shows the fast-response side. Both are in our work; neither is an AccuLynx integration.
A connection on your current site is priced in writing after a free review, and joining two systems tends to take one to three weeks. If the site needs replacing, see web design pricing and 0% website financing; a free site audit is the easy first step. For the website's side of each handoff, read online inspection booking, text messaging, lead source tracking, plugins versus a custom build, and how AccuLynx compares with JobNimbus and Roofr. The AccuLynx integration hub maps the rest, and roofing website design covers the site itself.
Questions roofers ask about AccuLynx integration
At apidocs.acculynx.com, with no login required, as of October 2026. It covers the V2 API, the Webhooks API, authentication, rate limits, webhook guidelines and a guide to creating a lead from a third-party system. The V1 documentation has been removed, though AccuLynx says V1 endpoints still work.
Your account needs the AppConnections add-on enabled. Then a Location or Company Administrator creates the key in AccuLynx Account Settings; AccuLynx's Zapier article gives the path as Add-On Features and Integrations, then API Keys, then Create Key. Accounts with several locations create one connection per location. Keep the key on a server, never in a browser.
None is documented. AccuLynx's developer pages mention being able to test what you build but name no sandbox or test environment. In practice, testing runs against a live location, so agree a naming convention for test records with your office first and keep the test window short.
Two sets that do not match. The Rate Limits guide gives an IP-based limit of 30 requests per second, then 10 per second per key after a ban. A changelog entry limits POST, PUT and DELETE calls to 6000 per hour and 12000 per day. A careful integration respects both and backs off on HTTP 429.
No. There is no endpoint for sending a text. The API shows whether a phone number has texting available and includes SMS opt-out details on contact reads, and Create Contact Log can record an SMS. A website sends through its own messaging provider and logs the conversation, as our SMS page explains.
AccuLynx's listener documentation says registering a subscription returns a secret "for validation," but it does not describe a signature header or a verification method. Ask the API team at api@acculynx.com for specifics. Meanwhile, use an unguessable HTTPS URL, answer within 10 seconds, and ignore repeated event IDs.
Keep reading
- Lead formsWebsite Leads Into AccuLynx: Six Roofing Forms and the Order of Operations Behind EachSend inspection, estimate, storm, contact, commercial and financing forms to AccuLynx as leads with source, category and trade set. Field map and prices.
- Reports, records, one screenAccuLynx Reporting Meets the Ad Account: Custom Roofing Dashboards Built From the RecordsWhat AccuLynx reports, ReportsPlus and DataMart cover, why report rows are not in the API, and a sample roofing KPI dashboard joined to ad and call data.
- Zaps, plugins and serversAccuLynx on a WordPress Site: When a Zap Will Do and When the Server Should Take OverWordPress.org lists no plugin from AccuLynx. When a Zapier zap or form connector is enough, and when a server-side build earns its cost in saved leads.
- Inspection bookingAccuLynx Online Booking: The Homeowner Picks the Hour, and the Job Carries ItLet homeowners book a roof inspection on your website: open times read from an AccuLynx calendar, the lead created, the chosen time set on the job.
- Texting, on the recordAccuLynx SMS for Roofing Websites: Fast Text-Backs the Whole Office Can ReadThe AccuLynx API cannot send a text. How a roofing website texts back fast through your own provider, logs each message in AccuLynx and honors opt-outs.
- Roofing CRM comparisonAccuLynx vs JobNimbus vs Roofr, Judged From the Website's Side of the FenceAccuLynx vs JobNimbus vs Roofr on what a roofing website needs: API access, webhooks, Zapier, web forms, booking and texting, from each vendor's own pages.
- Everything in AccuLynx IntegrationSee the section
Get a straight read on what your AccuLynx account can connect
Tell us what you want the website or the office screen to do. We will check it against the API, list the add-on and admin steps, and price the build in writing.
Which of these sounds like you? (pick any)
Rather talk now? Call (210) 346-0848.