Error Codes

HTTP status codes, error response formats, and troubleshooting guidance.

Error Response Format

Error responses use RFC 9457 Problem Details withContent-Type: application/problem+jsonand a stable machine-readablecodefield.

Every API response includes anX-Request-Idheader. You can send your own UUIDv4 request ID for trace stitching; otherwise Project Feed generates one and includes it in error responses asrequestId.

{
  "type": "https://projectfeed.app/docs/api/errors#validation_error.title_too_long",
  "title": "Bad Request",
  "status": 400,
  "detail": "Post title must be 200 characters or less",
  "code": "validation_error.title_too_long",
  "instance": "urn:projectfeed:request:550e8400-e29b-41d4-a716-446655440000",
  "requestId": "550e8400-e29b-41d4-a716-446655440000"
}

HTTP Status Codes

400Bad Request

Invalid request body or missing required parameters

{ "type": "https://projectfeed.app/docs/api/errors#validation_error.title_too_long", "title": "Bad Request", "status": 400, "detail": "Post title must be 200 characters or less", "code": "validation_error.title_too_long", "requestId": "550e8400-e29b-41d4-a716-446655440000" }
401Unauthorized

Missing, invalid, expired, or revoked API key

{ "type": "https://projectfeed.app/docs/api/errors#authentication_required", "title": "Unauthorized", "status": 401, "detail": "Authentication required.", "code": "authentication_required", "requestId": "550e8400-e29b-41d4-a716-446655440000" }
403Forbidden

Not a member of the workspace or insufficient permissions

{ "type": "https://projectfeed.app/docs/api/errors#permission_denied", "title": "Forbidden", "status": 403, "detail": "API key lacks required permission.", "code": "permission_denied", "requestId": "550e8400-e29b-41d4-a716-446655440000" }
404Not Found

Resource not found or doesn't belong to your workspace

{ "type": "https://projectfeed.app/docs/api/errors#not_found", "title": "Not Found", "status": 404, "detail": "Post not found", "code": "not_found", "requestId": "550e8400-e29b-41d4-a716-446655440000" }
429Too Many Requests

Rate limit exceeded, wait and retry

{ "type": "https://projectfeed.app/docs/api/errors#rate_limit_exceeded", "title": "Too Many Requests", "status": 429, "detail": "Rate limit exceeded. Try again later.", "code": "rate_limit_exceeded", "requestId": "550e8400-e29b-41d4-a716-446655440000" }
500Internal Error

Server error, contact support if persistent

{ "type": "https://projectfeed.app/docs/api/errors#internal_error", "title": "Internal Server Error", "status": 500, "detail": "Internal Server Error", "code": "internal_error", "requestId": "550e8400-e29b-41d4-a716-446655440000" }

Success Responses

200
OK

Successful GET, PATCH, or DELETE request

201
Created

Successful POST request that created a new resource

204
No Content

Successful request with no response body (e.g., mark all read)

Troubleshooting

For 500 errors, include theX-Request-Idvalue when contacting support, and check the status page for ongoing incidents before contacting support.