Uploads

Send the file

The raw body is the file — not multipart, not base64. Audio is streamed straight through and never buffered, so a large file is fine. Whether this is read as audio or as a transcript was settled when the row was created, from the file name; sending the wrong kind is refused rather than guessed at. A recording longer than the plan's minutes per meeting is refused with MEETING_TOO_LONG, and audio under 2 minutes with MEETING_TOO_SHORT; neither counts.

puthttps://api-notetaker.nabrah.ai/ext/v1/uploads/{uploadId}/content

معاملات المسار

uploadIdstring · uuidمطلوب

الطلب

cURL
curl -X PUT https://api-notetaker.nabrah.ai/ext/v1/uploads/{uploadId}/content \
  -H "Authorization: Bearer $NABRAH_API_KEY"

الاستجابات

200One upload.
401No key, an unknown key, or one that has been revoked or has expired.
403The key is read only, or lacks the reach for this route.
404No such record — or one that belongs to another account.
409Refused, always 409 — never 429. code is RECORDING_QUOTA_REACHED (this month's meetings are used), UPLOAD_PENDING_LIMIT (three uploads are still waiting for their file), MEETING_TOO_LONG (longer than the plan's minutes per meeting), MEETING_TOO_SHORT (audio under 2 minutes), UPLOAD_EXPIRED (the file came too late), USAGE_RETRY (the team changed while this was being counted — send it again) or CONFLICT (this upload already has its file). Usage refusals are never remembered by Idempotency-Key, so the same request succeeds once the limit allows it.
422The body or query failed validation; details names the field.
429Too many requests. Retry-After says how long to wait.
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "runId": "00000000-0000-0000-0000-000000000000",
    "reference": "string",
    "title": "string",
    "kind": "audio",
    "stage": "pending",
    "filename": "string",
    "byteSize": 0,
    "durationMs": 0,
    "startsAt": "2026-01-01T09:00:00.000Z",
    "createdAt": "2026-01-01T09:00:00.000Z",
    "updatedAt": "2026-01-01T09:00:00.000Z",
    "error": "string",
    "hasNotes": true,
    "usage": {
      "remaining": 0,
      "maxMinutes": 0,
      "resetsAt": "2026-01-01T09:00:00.000Z"
    }
  }
}