Errors, Limits & Types

Error handling, rate limits, and data type reference for the PortEden API.

Error Format

Simple errors:

{
"error": "Error message description"
}

Structured errors (403 access denied, some 400 validation errors):

{
"code": "ACCESS_DENIED",
"message": "Token does not allow this operation"
}

Error Codes

CodeHTTP StatusDescription
ACCESS_DENIED403Token permissions do not allow this operation
TOKEN_DENIED403Token-level restriction prevents access
TIMEFRAME_DENIED403Event falls outside the token's allowed timeframe
NOT_FOUND404Generic resource not found
EVENT_NOT_FOUND404Specific event not found
CALENDAR_NOT_FOUND404Specific calendar not found

HTTP Status Codes

StatusMeaning
200Success
201Created (new resource)
400Bad request — invalid parameters
401Unauthorized — missing or invalid API key
402Payment required — operator limit exceeded
403Forbidden — insufficient permissions
404Not found
429Too Many Requests — rate limit exceeded
500Internal server error

Authentication Errors

{
"error": "API authentication required",
"message": "Missing Authorization header. Use: Authorization: Bearer <api_key>"
}
{
"error": "API authentication failed",
"message": "Invalid or expired API key"
}

Rate Limits

All rate limits are IP-based. When exceeded, the API returns 429 Too Many Requests.

Token Auth Endpoints

/api/auth/token

ScopeLimitWindow
Global30 requests1 minute
Global100 requests1 hour
Login initiation10 requests1 minute
Login initiation30 requests1 hour
Login polling60 requests1 minute
Login polling300 requests1 hour
Key generation10 requests1 hour

Calendar Access Endpoints

/api/access/calendar

ScopeLimitWindow
Global100 requests1 minute
Global500 requests1 hour

Data Types Reference

Quick Reference

TypeFormatExample
UUIDxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx550e8400-e29b-41d4-a716-446655440000
DateTimeISO 8601 UTC2026-02-07T14:30:00Z
DateTimeOffsetISO 8601 with offset2026-02-07T08:30:00-06:00
API KeyPrefixed stringpe_k1_abc123def456...

Enum Values Summary

Master Access Level

free_busy_onlyview_onlyview_filteredfull_access

Event Visible Fields

titlelocationdescriptionattendeestimesstatuslabelsjoin_urlorganizerall

Allowed Operations

respond_to_eventedit_titleedit_locationedit_descriptionedit_attendeesedit_timescreate_eventsdelete_eventsall

Access Rule Identifier Type

emaildomainall

Access Rule Level

blockfree_busy_onlyreadfull

Token Avatar

generalopenclawclaudeopenaigemini

Event Status

confirmedtentativecancelled

Attendee Response

accepteddeclinedtentativeneedsAction