Ai consent
13 operations. All areas
- GET /v1/ai-providers
- GET /v1/company/ai-7216
- POST /v1/company/ai-7216
- GET /v1/company/ai-consents
- POST /v1/company/ai-consents
- GET /v1/company/ai-consents/template
- GET /v1/company/ai-consents/{id}
- GET /v1/company/ai-consents/{id}/signed-pdf
- POST /v1/company/ai-consents/{id}/sign
- POST /v1/company/ai-consents/{id}/upload
- POST /v1/company/ai-consents/{id}/revoke
- GET /v1/company/ai-7216-log
- POST /v1/agents/{id}/ai-provider
GET/v1/ai-providers
The AI provider registry: Anthropic, OpenAI, Google, xAI, Other (external: a §7216 consent names them); Evenbead (software vendor, US: never blocked); self-hosted; not AI. With location and data-handling notes (check the provider's current terms).
- Operation
listAiProviders - Scope: read
- Read
- Responses
200Providers (object)- Errors
400,401,403,429,500(Error:error.type,message)
GET/v1/company/ai-7216
§7216 AI consent in this company: whether a consent is required (the company's own setting and each accounting firm's), every AI agent and app that reaches these books with its provider and whether it may read them ("Needs client consent for Anthropic. Request it."), the consents, and the registry.
- Operation
getCompanyAi7216 - Scope: read
- Read
- Responses
200State (Ai7216Company)- Errors
400,401,403,429,500(Error:error.type,message)
POST/v1/company/ai-7216
Set the requirement for this client. required: the company's own setting (owner or CPA): every external AI then needs a consent naming its provider. firm_required (a firm member with client.ai_data): the firm's setting for this client, true/false, or null to follow the firm-wide setting. Turning a requirement off from a browser session needs a recent step-up. People only (agents and connected AI apps are refused; the database refuses them too).
- Operation
setCompanyAi7216 - Scope: admin
- Write: sets a value, no Idempotency-Key needed
- Request body
requiredbooleanfirm_requiredboolean | nullreasonstring
- Responses
200Set (Ai7216Company)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
GET/v1/company/ai-consents
The company's §7216 consents, newest first, every version: pending, signed (valid_now), superseded, expired, revoked, cancelled. A firm sees the ones it obtained.
- Operation
listAi7216Consents - Scope: read
- Read
- Responses
200Consents (object)- Errors
400,401,403,429,500(Error:error.type,message)
POST/v1/company/ai-consents
Request a §7216 consent from this client: the document is generated from the template and frozen. A firm member (client.ai_data) requests it for their firm; it goes to the client through the firm's requests (Requests in the app, and an email to the owner and CPA) unless send_request is false. The company's owner or CPA may record one for the company itself (firm_id omitted: e.g. for Evenbead support). supersedes: a new version of an earlier consent (a provider change). People only (agents and connected AI apps are refused; the database refuses them too).
- Operation
createAi7216Consent - Scope: admin
- Write: needs Idempotency-Key (or dry_run)
- Request body
providersarray of "anthropic" | "openai" | "google" | "xai" | "other", required The AI companies named. A provider change needs a new consent.provider_other_namestringprovider_other_countrystring Where an "other" provider is located (US, CA, ...)data_categoriesarray of "books" | "bank_lines" | "documents" | "receipts" | "contacts" | "tax_mappings" | "tax_forms", requiredpurposesarray of "bookkeeping" | "reconciliation" | "tax_preparation_support" | "review" | "support" | "other", requiredpurpose_detailstringvalid_untilstring The last day it is valid (at most three years). Omit: one year from the date signed (Rev. Proc. 2013-14).firm_idstringsupersedesstringsend_requestboolean Firm requests: send it through the client's Requests and email (default true)due_datestring
- Responses
201Requested (object)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
GET/v1/company/ai-consents/template
The consent document a request would produce for this client (template; have your attorney review): the taxpayer and preparer, Rev. Proc. 2013-14's required statements, the data, purposes, each provider to tick, the duration, the right to revoke and the TIGTA statement. Lists are comma-separated. Nothing is saved.
- Operation
previewAi7216Consent - Scope: read
- Read
- Parameters
providersquery, string, requireddata_categoriesquery, string, requiredpurposesquery, string, requiredpurpose_detailquery, stringvalid_untilquery, stringprovider_other_namequery, stringprovider_other_countryquery, stringfirm_idquery, string
- Responses
200The document (object)- Errors
400,401,403,429,500(Error:error.type,message)
GET/v1/company/ai-consents/{id}
One consent with its frozen document text and its log entries (format=json, the record to keep), or the record as a PDF (format=pdf; format=base64 for JSON with the PDF base64-encoded).
- Operation
getAi7216Consent - Scope: read
- Read
- Parameters
idpath, string, requiredformatquery, "json" | "pdf" | "base64"
- Responses
200The record (object)- Errors
400,401,403,404,429,500(Error:error.type,message)
GET/v1/company/ai-consents/{id}/signed-pdf
The signed PDF uploaded for this consent (format=base64 for JSON).
- Operation
getAi7216SignedPdf - Scope: read
- Read
- Parameters
idpath, string, requiredformatquery, "pdf" | "base64"
- Responses
200The PDF- Errors
400,401,403,404,429,500(Error:error.type,message)
POST/v1/company/ai-consents/{id}/sign
The client's owner signs a pending consent in the app: type your full name (it is never filled in for you) and tick each provider you agree to (accepted_providers; at least one). Only from the owner's own browser session with a recent step-up (never an API key). Effective from now until valid_until, or one year. People only (agents and connected AI apps are refused; the database refuses them too).
- Operation
signAi7216Consent - Scope: admin
- Write: needs Idempotency-Key (or dry_run)
- Parameters
idpath, string, required
- Request body
typed_namestring, requiredaccepted_providersarray of "anthropic" | "openai" | "google" | "xai" | "other", required
- Responses
200Signed (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
POST/v1/company/ai-consents/{id}/upload
Record a consent the client signed on paper (or elsewhere): the signed PDF (base64, at most 2 MB), the date signed, who signed, and your attestation that it is the client's signature on this document. The firm that requested it (client.ai_data) or the company's owner or CPA; a recent step-up from a browser session. Valid until valid_until, or one year from the date signed. People only (agents and connected AI apps are refused; the database refuses them too).
- Operation
uploadAi7216Consent - Scope: admin
- Write: needs Idempotency-Key (or dry_run)
- Parameters
idpath, string, required
- Request body
pdf_base64string, requiredsigned_onstring, requiredsigned_bystring, requiredattesttrue, required I attest that this PDF is the consent the taxpayer signed, unaltered, on the date givenaccepted_providersarray of "anthropic" | "openai" | "google" | "xai" | "other", required The providers ticked on the signed form (each one ticked by the client)
- Responses
200Recorded (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
POST/v1/company/ai-consents/{id}/revoke
Revoke a signed consent (or cancel a pending request). The client's owner or CPA, or the firm that obtained it (client.ai_data). Takes effect at once; never needs a step-up. People only (agents and connected AI apps are refused; the database refuses them too).
- Operation
revokeAi7216Consent - Scope: admin
- Write: needs Idempotency-Key (or dry_run)
- Parameters
idpath, string, required
- Request body
reasonstring
- Responses
200Revoked (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
GET/v1/company/ai-7216-log
The §7216 log: every requirement change and consent event (requested, signed, superseded, revoked, cancelled), oldest first, written by the database.
- Operation
getAi7216Log - Scope: read
- Read
- Responses
200Log (object)- Errors
400,401,403,429,500(Error:error.type,message)
POST/v1/agents/{id}/ai-provider
Declare (or correct) the AI company behind one of this company's agents (and its AI-app connection). Evenbead support and Evenbead's own agents are fixed; a firm's agents are declared by the firm. Audited. People only (agents and connected AI apps are refused; the database refuses them too).
- Operation
declareAgentAiProvider - Scope: admin
- Write: sets a value, no Idempotency-Key needed
- Parameters
idpath, string, required
- Request body
ai_provider"anthropic" | "openai" | "google" | "xai" | "other" | "self_hosted" | "none", required The AI company that runs this agent: anthropic, openai, google, xai, other (name it in ai_provider_name), self_hosted (a model you run on your own machines) or none (not AI: a script or integration). Required for a new AI-app connection; optional for an agent key. With a §7216 consent requirement on, an undeclared agent is kept out.ai_provider_namestring The provider's name when ai_provider is "other"ai_model_familystring The model family (claude, gpt, gemini, grok, ...); informational
- Responses
200Declared (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)