Skip to main content

Creating Notes via the Public API

If you record and transcribe meetings elsewhere, you can hand a finished transcript to Tenzo via the POST /api/v1/meeting-copilot-note endpoint and have it build a Meeting Copilot note — optionally running the same post-meeting pipeline the in-app bot uses when a meeting ends. The full request/response contract lives under the Meeting Copilot tag in the Tenzo Public API reference. Authenticate with a Bearer API key (it starts with tenzo_pk_) — see API & Webhook Configuration to generate one. The note template, job, and candidate you reference are all scoped to the organization the key belongs to. To prevent duplicate notes when retrying requests (e.g. after network timeouts), include an Idempotency-Key: <unique-id> header (up to 256 characters). Successful responses are cached for 24 hours; subsequent requests with the same key return the cached note response immediately without creating duplicates.
Meeting Copilot must be enabled for your organization before this endpoint will accept requests. If it isn’t, every call returns 403 Meeting notes are not enabled for this organization, even with a valid API key — contact your Tenzo representative to have it turned on.
By default (run_post_meeting_actions: true) the post-meeting pipeline runs in the background and has side effects: it generates the note content and summary, can send a summary email, write back to your ATS, create a Tenzo Job, and fire your note.finalized webhook. The request returns as soon as the note and transcript are saved — poll GET /api/v1/meeting-copilot-note for the generated summary and sections. To persist the note and transcript without triggering any of that, send run_post_meeting_actions: false.

Request Body

Relationship between run_post_meeting_actions and ats_writes

  • run_post_meeting_actions gates the entire post-meeting pipeline (summary generation, structured note questions, emails, webhooks, ATS writes, and Tenzo screen creation). When set to false, none of the background processing executes.
  • ats_writes is a fine-grained sub-toggle within that pipeline. When run_post_meeting_actions: true, ats_writes determines whether the pipeline performs write-backs to your ATS (creating/updating a job or writing candidate fields). If run_post_meeting_actions: false, ats_writes has no effect because the pipeline is bypassed entirely.
  • Without an ATS, automatic Tenzo screen creation follows the note template’s Create Tenzo screen setting. This endpoint does not offer a per-note override for that setting; ats_writes: false does not disable it.
Only note_template_id and job_id return 404 when they don’t exist in your org. candidate_email is best-effort: a non-matching email never fails the request, it just leaves the note unlinked.

Transcript line

Each entry in transcript describes one spoken line: Transcript size limits — a request exceeding any of these is rejected with 422: at most 5000 lines, 20,000 characters per line, and 800,000 UTF-8 bytes of transcript text in total.

Response

The response returns immediately after the note is created; the summary and structured sections are produced by the background pipeline and read separately via GET /api/v1/meeting-copilot-note.

Errors

Example

Create an interview note from a transcript, link it to a candidate and job, and schedule the full post-meeting pipeline:
Example response:
Fetch the generated summary and sections with GET /api/v1/meeting-copilot-note?tenzo_id=note_5f8c21 once processing completes.