Skip to main content

Authentication Errors

401 Unauthorized on every request

  • Check the header name — The API key must be sent in the x-api-key header, not Authorization or Bearer.
  • Check for whitespace — Ensure there are no leading/trailing spaces or newlines in the key value.
  • Verify the key is active — Disabled keys return 401. Go to Settings → Developers → API Keys and check the toggle.
  • Confirm the key prefix — Valid keys start with jk_. If yours doesn’t, it may be a webhook secret or other credential.

401 after regenerating a key

When you regenerate an API key, the old key is immediately invalidated. Update the key in all places where it’s used — environment variables, CI/CD secrets, third-party integrations.

Access & Permissions

403 — Wrong key type for route

Each key type has its own route set:
  • Personal keys/v1/me/*
  • Workspace keys/v1/workspace/*
Using a personal key on /v1/workspace/ (or vice versa) returns 403. Check that your key type matches the route you’re calling.

403 Forbidden when deleting a meeting

  • Personal key — You can only delete meetings you own. Shared meetings cannot be deleted, even if you have read access.
  • Workspace key — The meeting owner must be a member of your workspace.

Can’t create an API key

  • Plan restriction — API keys require a Pro, Team, or Enterprise plan.
  • Key limit reached — Personal keys are limited to 3 per user. Workspace keys are limited to 10 per workspace. Delete unused keys to free up slots.
  • Not an admin — Only workspace admins can create workspace-scoped keys. Any member can create a personal key.

Data & Responses

Meetings or tasks are missing from results

  • Check your key type — Personal keys only return your own data plus shared meetings. Use a workspace key and /v1/workspace/ routes to see all workspace data.
  • Check date filters — If you’re using startDate or endDate, make sure the format is valid ISO 8601 (e.g., 2024-11-01T00:00:00Z).
  • Check pagination — Results are paginated. If nextCursor is not null, there are more pages to fetch.
  • Recently recorded meetings — Meetings appear in the API after processing is complete. This typically takes a few minutes after the meeting ends.

Empty transcript or summary

The meeting may still be processing. Wait a few minutes and try again. If the issue persists, the meeting may have had recording issues — check the meeting in the Jamie app for more details.

400 Bad Request on date filters

Date parameters must be valid ISO 8601 strings. Examples of valid formats:
2024-11-01T00:00:00Z
2024-11-01T00:00:00.000Z
2024-11-01T14:30:00+02:00
Invalid formats like 2024-11-01, Nov 1 2024, or 1701234567 will be rejected.

Rate Limiting

429 Too Many Requests

You’ve exceeded the rate limit of 100 requests per minute for that API key.
  1. Check the X-RateLimit-Reset response header for the Unix timestamp when you can retry
  2. Reduce request frequency — use larger limit values (up to 100) to fetch more data per request
  3. Cache responses where possible — meeting data doesn’t change frequently
Each API key has its own independent rate limit. Using multiple keys gives you separate quotas.

Pagination

Getting duplicate results across pages

Always use the nextCursor value from the previous response. Don’t construct cursor values manually — the format is internal and may change.

nextCursor is always null

Your query returns fewer results than the limit. This is expected — it means all matching results fit in one page.

Still Need Help?

If you’re stuck, reach out to us at support@meetjamie.ai with:
  • Your API key prefix (e.g., jk_abc... — never share the full key)
  • The full request URL (with any sensitive query params redacted)
  • The response status code and error message
  • The approximate time the issue occurred