MeetNotes API

MeetNotes API as documented publicly: 9 operations. Contract generated from the documentation by API Evangelist (2026-11-10); not the provider's own document.

GitHub OpenAPI

Operations 9

POST /short.mp3 POST /short.mp3 #
POST /v1/ingest POST /v1/ingest #
GET /v1/ingest/{eventid} GET /v1/ingest/{eventId} #
GET /v1/people GET /v1/people lists the people learned about by the API key. #
DELETE /v1/people/{personId} DELETE /v1/people/PERSON_ID forgets a person and everything learned about their voice. #
POST /v1/transcripts POST /v1/transcripts #
GET /v1/transcripts/{jobid} GET /v1/transcripts/{jobId} #
GET /v1/transcripts/{jobid}/file GET /v1/transcripts/{jobId}/file #
PATCH /v1/transcripts/{jobid}/speakers PATCH /v1/transcripts/{jobId}/speakers #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/getmeetnotes-com:getmeetnotes-com-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

getmeetnotes-com-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: MeetNotes API
  version: '2026-11-10'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-10: 9 operation(s) read from 3 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; MeetNotes has published no machine-readable contract that the
    pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 7
    documentation: 2
    pages-with-code: 2
    pages-read: 3
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-10'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://getmeetnotes.com/api
  - https://getmeetnotes.com/business/docs/api
  - https://getmeetnotes.com/business/docs/webhook
paths:
  /short.mp3:
    post:
      operationId: post_short_mp3
      tags:
      - Short
      summary: POST /short.mp3
      x-source: https://getmeetnotes.com/business/docs/webhook
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostShortMp3Request'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -X POST <your MeetNotes URL> -H "Content-Type: application/json" -d ''{"recording_url":"https://…/short.mp3","external_id":"test-1"}''
          — a 202 with "status":"received" means it is queued; watch the Flows page for done . Outbound: click "Send test" on the destination.
          A sample payload with "event":"meeting.ready" arrives, signed; the last-delivery column on the destination shows the result. A 42'
  /v1/ingest:
    post:
      operationId: post_v1_ingest
      tags:
      - Ingest
      summary: POST /v1/ingest
      x-source: https://getmeetnotes.com/api
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1IngestRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostV1IngestResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://getmeetnotes.com/v1/ingest  -H \"Authorization: Bearer $KEY\"  -H \"Content-Type: application/json\"  -d\
          \ '{\n \"source_id\": \"SOURCE_ID\",\n \"external_id\": \"call-8841\",\n \"recording_url\": \"https://your-storage/calls/8841.mp3\"\
          ,\n \"agent\": \"Priya\",\n \"customer\": \"Shah Pumps\",\n \"occurred_at\": \"2026-08-28T10:15:00Z\",\n \"duration_sec\": 412,\n \"\
          title\": \"Inbound support call\",\n \"tags\": [\"support\","
  /v1/ingest/{eventid}:
    get:
      operationId: get_v1_ingest_eventid
      tags:
      - Ingest
      summary: GET /v1/ingest/{eventId}
      x-source: https://getmeetnotes.com/api
      parameters:
      - name: eventid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1IngestEventidResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -H \"Authorization: Bearer $KEY\" https://getmeetnotes.com/v1/ingest/EVENT_ID\n→ 200 {\"event_id\":\"...\",\"status\":\"\
          done\",\"meeting_id\":\"...\",\n \"external_id\":\"call-8841\",\"error\":null,\"created_at\":\"...\"} \n Status walks received → fetching\
          \ → queued → done , or stops at failed (with a reason in error ) or skipped — skipped meaning we chose not to spend the workspace's\
          \ minutes, most often because it has"
  /v1/people:
    get:
      operationId: get_v1_people
      tags:
      - People
      summary: GET /v1/people lists the people learned about by the API key.
      x-source: https://getmeetnotes.com/api
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /v1/people/{personId}:
    delete:
      operationId: delete_v1_people_personId
      tags:
      - People
      summary: DELETE /v1/people/PERSON_ID forgets a person and everything learned about their voice.
      x-source: https://getmeetnotes.com/api
      parameters:
      - name: personId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /v1/transcripts:
    post:
      operationId: post_v1_transcripts
      tags:
      - Transcripts
      summary: POST /v1/transcripts
      x-source: https://getmeetnotes.com/api
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://getmeetnotes.com/v1/transcripts  -H \"Authorization: Bearer $KEY\"  -F \"audio=@meeting.mp3\"  -F \"client_reference=your-id-123\"\
          \n→ 202 {\"job_id\":\"...\",\"status\":\"processing\"} \n client_reference is your own identifier and it makes retries safe: the same\
          \ reference always returns the same job, so a dropped response can be retried without creating a duplicate. \n Optional: who is speaki"
  /v1/transcripts/{jobid}:
    get:
      operationId: get_v1_transcripts_jobid
      tags:
      - Transcripts
      summary: GET /v1/transcripts/{jobId}
      x-source: https://getmeetnotes.com/api
      parameters:
      - name: jobid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1TranscriptsJobidResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -H \"Authorization: Bearer $KEY\" https://getmeetnotes.com/v1/transcripts/JOB_ID \n Status is one of processing , completed\
          \ , failed or insufficient_minutes . \n 4. Download the document — in whichever format you ask for \n You choose the format on each\
          \ request, and the same job can be fetched in as many formats as you like without being charged again. "
  /v1/transcripts/{jobid}/file:
    get:
      operationId: get_v1_transcripts_jobid_file
      tags:
      - Transcripts
      summary: GET /v1/transcripts/{jobId}/file
      x-source: https://getmeetnotes.com/api
      parameters:
      - name: jobid
        in: path
        required: true
        schema:
          type: string
      - name: format
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1TranscriptsJobidFileResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -OJ -H \"Authorization: Bearer $KEY\"  \"https://getmeetnotes.com/v1/transcripts/JOB_ID/file?format=pdf\" \n format= What\
          \ comes back pdf The branded minutes document — what most partners forward to their client. docx The same minutes as an editable Word\
          \ file. md Markdown — minutes and transcript as plain text with headings. txt Unformatted plain text. json The full structured result\
          \ — summary, tak"
  /v1/transcripts/{jobid}/speakers:
    patch:
      operationId: patch_v1_transcripts_jobid_speakers
      tags:
      - Transcripts
      summary: PATCH /v1/transcripts/{jobId}/speakers
      x-source: https://getmeetnotes.com/api
      parameters:
      - name: jobid
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchV1TranscriptsJobidSpeakersRequest'
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X PATCH https://getmeetnotes.com/v1/transcripts/JOB_ID/speakers  -H \"Authorization: Bearer $KEY\"  -H \"Content-Type:\
          \ application/json\"  -d '{\"names\": {\"Speaker 1\": \"Ravi Shah\", \"Speaker 2\": \"Priya Iyer\"}}' \n The transcript, the minutes\
          \ and every download are renamed. On later identify_speakers jobs the speakers array says who each speaker is and how sure we are: \n\
          \ \"speakers\": [\n { \"speaker\": "
components:
  schemas:
    PostShortMp3Request:
      type: object
      properties:
        recording_url:
          type: string
        external_id:
          type: string
    PostV1IngestRequest:
      type: object
      properties:
        source_id:
          type: string
        external_id:
          type: string
        recording_url:
          type: string
        agent:
          type: string
        customer:
          type: string
        occurred_at:
          type: string
          format: date-time
        duration_sec:
          type: integer
        title:
          type: string
        tags:
          type: array
          items:
            type: string
    PostV1IngestResponse:
      type: object
      properties:
        duplicate:
          type: boolean
    GetV1IngestEventidResponse:
      type: object
      properties:
        event_id:
          type: string
        status:
          type: string
        meeting_id:
          type: string
        external_id:
          type: string
        error:
          type:
          - string
          - 'null'
        created_at:
          type: string
    GetV1TranscriptsJobidResponse:
      type: object
      properties:
        duplicate:
          type: boolean
    GetV1TranscriptsJobidFileResponse:
      type: object
      properties:
        duplicate:
          type: boolean
    PatchV1TranscriptsJobidSpeakersRequest:
      type: object
      properties:
        names:
          type: object
          properties:
            Speaker 1:
              type: string
            Speaker 2:
              type: string
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Ingest
- name: People
- name: Short
- name: Transcripts