Limited AvailabilityAccess to the Compliance API is currently limited to approved partners. Endpoints, request/response shapes, and field names may change before reaching general availability — use against staging for early integration work and coordinate with your CorpNet account manager before relying on Compliance API calls in production-critical paths. Report issues or feedback to your account manager.
This guide walks through your first end-to-end call against the CorpNet Compliance API: authenticate, list your compliance-enrolled companies, and retrieve open compliance alerts for one of them. By the end you'll have a working baseline you can extend for your integration.
Prerequisites
- A Bearer token issued by CorpNet (staging and production tokens are distinct). Contact your CorpNet account manager if you do not yet have one. See API Key for storage best practices.
- Your
partnerId(Account PID) — issued during partner onboarding. - A REST client (curl, Postman, or your own HTTP library).
Step 1 — Verify your token
The Compliance API uses the same Bearer token as the Business Formation and Tax Registration APIs. If you've already integrated with either, the same token works here. Verify against staging first:
curl -s \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
"https://api.staging24.corpnet.com/v1/partners/$PARTNER_ID/companies"A 200 response (even with an empty data array) confirms your token authenticates against the Compliance API.
Step 2 — Register your first company
Add a company to compliance tracking via Create a Company. At minimum, you need a name:
curl -s -X POST \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Acme Holdings LLC","homeState":"DE","type":"LLC"}' \
"https://api.staging24.corpnet.com/v1/partners/$PARTNER_ID/companies"The response returns the new companyId and PCID. Save the companyId — you'll use it in subsequent calls.
Step 3 — List compliance alerts for that company
Compliance alerts are CorpNet-tracked opportunities (Annual Report, Registered Agent renewal, BOI filing, etc.) requiring partner action. Retrieve open alerts for the company you just registered:
curl -s \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
"https://api.staging24.corpnet.com/v1/partners/$PARTNER_ID/alerts?companyId=$COMPANY_ID"If the company has no open alerts yet, you'll receive { "data": [] } — that's the success-with-no-results shape, not an error.
Step 4 — Retrieve a single alert with form data
Once you have an alertId from the previous response, fetch its full detail (including prefilled form data) via Get a Compliance Alert:
curl -s \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
"https://api.staging24.corpnet.com/v1/partners/$PARTNER_ID/alerts/$ALERT_ID"The response includes a complianceForms array with prefilled fields drawn from the entity's records. Your application presents this to the customer, accepts their updates, and submits the completed form via Submit Compliance Form Data.
Next steps
- Bulk-onboard your existing book of business: see Bulk Create Companies. Batch up to 200 companies per request.
- Subscribe a company to a Registered Agent or other recurring service: see List Subscriptions and the subscription endpoints.
- Production cutover: swap your staging token for a production token and the base URL from
api.staging24.corpnet.comtoapi.corpnet.com. Endpoint paths are identical between environments.
Common pitfalls
- Using
apiUserPidwherepartnerIdis expected. The Compliance API takespartnerIdin the URL path (/v1/partners/{partnerId}/...), not in the request body. For most partners the value is the same as theapiUserPidfield used by the Business Formation API — just sent in a different position. - Mixing staging and production hosts. A staging-issued token only authenticates against staging hosts, and vice versa. Calling production with a staging token returns
401 Unauthorized. - Branching on
messagetext. Themessagefield in responses is human-readable and may change without notice. Branch onstatusCodeor the HTTP status code instead.