Skip to navigation

API key management for superadmins, and calls updates

New: List and delete API keys, and archive API users

Superadmins can now manage their company’s API keys through the API. These endpoints authenticate with Basic Auth (your Coperniq email and password), the same as POST /api-keys, not with an API key. Each one takes an optional company_id for logins that belong to more than one company.

EndpointWhat it does
GET /api-keysLists the company’s API keys.
DELETE /api-keys/{key_id}Deletes an API key. It stops working immediately.
GET /api-usersLists the company’s API users, the service accounts API keys are issued to, with lastSeenAt, when each one last made a request (accurate to about an hour).
POST /api-users/{user_id}/archiveDeletes all of an API user’s keys, then deactivates the API user.
  • Key values are never returned. Each key’s id is a non-secret identifier (key_…) used to delete it, and keyPreview shows the key’s last 4 characters so you can recognize it. If you’ve lost a key, create a new one with POST /api-keys, or contact support.
  • To retire an API user, use POST /api-users/{user_id}/archive instead of archiving it in the Coperniq UI. Archiving it in the UI doesn’t delete its keys.
  • Archiving doesn’t block future keys: if the person who created the API user calls POST /api-keys again, the API user is reactivated with a new key.
  • These endpoints are for superadmins only. Other users get a 403.

Calls: custom reasons and dispositions, AI summary and transcript

Updated: reason and disposition are company-defined

A call’s reason and disposition now hold the name of one of your company’s call reasons or dispositions, set up in Coperniq. They’re plain strings of up to 255 characters instead of a fixed list.

  • Calls logged before custom options existed keep their legacy uppercase values, such as SERVICE or INFO_PROVIDED. Newer calls hold the option’s name, such as Service or Info provided.
  • outcome can now also be VOICEMAIL.

New: GET /calls

Lists calls across your whole company, paginated with page and page_size (max 100). Filter by updated_after/updated_before, outcome, reason or disposition, and sort by creation time with order_by (newest first by default). Each call includes projectId, opportunityId or accountId for the record it’s logged on.

New: GET /calls/classification-options

Lists your company’s call reasons and dispositions. Pass type=REASON or type=DISPOSITION to get one kind.

New call fields

GET and POST call responses now include:

FieldWhat it holds
summaryThe AI-generated summary of the call.
transcriptTextThe AI transcript as plain text, one sentence per line.
classificationNoteFor calls classified by Coperniq AI, why it chose the reason and disposition.
resolutionFor calls handled by a Coperniq AI agent: RESOLVED, ESCALATED or UNRESOLVED.

note is the human-editable note. The per-record call lists (GET /projects/{project_id}/calls and the opportunity and account equivalents) now return calls newest first, and return 502 if Coperniq’s backend errors.