Key featuresFeaturesPricingSecurityDocsChangelog
Log inStart for free

Getting Started

  • What is QA Note?
  • Quick Start Guide
  • Install Extension
  • Project Members

Feature Guide

  • Screenshot & Annotation
  • Session Recording
  • Maintenance Reports
  • Issue State Model
  • Multi-issue Windows
  • Storage · DOM Snapshot

Integrations

  • GitHub
  • Commit Keys
  • MCP Server
  • Slack
  • Webhook
  • Vercel
  • Existing Playwright

API Reference

  • Authentication
  • Endpoint Reference
  • Public API v1
  • Error Handling

The issue tracker you use with your AI agent. Your agent fixes; QA Note keeps the record.

Made in Seoul · © 2026 QA Note
ProductKey featuresFeaturesPricingSecurityChangelog
ResourcesDocsMCP guideChrome Extension
CompanyBrandTerms of ServicePrivacy Policy

ffgg|CEO: Songwook Han

Business Registration No.: 746-54-00870[Verify]|E-Commerce License No.: 2024-Seoul Mapo-2178

Address: 5F, 26 World Cup buk-ro 6-gil, Mapo-gu, Seoul, Republic of Korea

Email: support@qanote.app|Hosting Provider: Vercel Inc.

© 2026 QA Note. All rights reserved.

Terms of ServicePrivacy PolicyCookie Policy
  1. Home
  2. /
  3. Docs
  4. /
  5. API Reference

Error Handling

API error codes and solutions

Table of Contents
  • Error Response Format
  • HTTP Status Codes
  • Common Error Scenarios
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 400 Bad Request
  • 429 Too Many Requests

Error Handling

The QA Note API returns standard HTTP status codes and JSON-formatted error responses.

Error Response Format

All error responses follow this format:

json
{
  "error": "Error message"
}

Additional details are included for input validation failures:

json
{
  "error": "Invalid input",
  "details": [
    {
      "field": "status",
      "message": "Invalid enum value. Expected 'open' | 'in_progress' | 'blocked' | 'fix_submitted' | 'verified' | 'closed'"
    }
  ]
}

HTTP Status Codes

Status CodeDescription
200Request successful
201Resource created successfully
400Bad request (validation failure)
401Authentication failed (API Key missing or expired)
403Insufficient permissions (required Scope missing)
404Resource not found
422Unprocessable request
429Rate limit exceeded
500Internal server error

Common Error Scenarios

401 Unauthorized

The API Key is missing or invalid.

bash
# Incorrect — Authorization header missing
curl https://qanote.app/api/v1/projects

# Correct
curl https://qanote.app/api/v1/projects \
  -H "Authorization: Bearer qn_YOUR_API_KEY"

Solution:

  • Verify the Authorization header is included
  • Confirm the API Key starts with qn_
  • Check the API Key hasn't expired in the dashboard

403 Forbidden

The API Key doesn't have the required permission (Scope).

json
{
  "error": "Insufficient scope"
}

Solution:

  • Check the API Key's Scope settings in the dashboard
  • Reading issues: requires issues:read
  • Modifying issues/writing comments: requires issues:write
  • Listing projects: requires projects:read

404 Not Found

The requested resource (project, issue, etc.) doesn't exist or doesn't belong to the API Key's organization.

json
{
  "error": "Project not found"
}

Solution:

  • Verify the project ID or issue number is correct
  • Confirm the resource belongs to the API Key's organization

400 Bad Request

Request body validation failed.

json
{
  "error": "Invalid input",
  "details": [
    {
      "field": "priority",
      "message": "Invalid enum value. Expected 'low' | 'medium' | 'high' | 'critical'"
    }
  ]
}

Solution:

  • Verify the request body is valid JSON
  • Confirm the Content-Type: application/json header is included
  • Ensure parameter values are within allowed ranges

429 Too Many Requests

API request rate limit exceeded.

Solution:

  • Wait a moment and try again
  • Implement retry logic with intervals between requests
  • Reduce unnecessary repeated requests
Previous
Public API v1

Table of Contents

  • Error Response Format
  • HTTP Status Codes
  • Common Error Scenarios
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 400 Bad Request
  • 429 Too Many Requests