Porter API Documentation

Programmatic access to your visitor management data.

Authentication

All API requests require an API key passed in the X-API-Key header.

Generate API keys in Settings → API Keys in your dashboard.

GET https://portervisitors.com/api/v1/visitors
X-API-Key: pk_your_api_key_here
Base URL
https://portervisitors.com/api/v1
Rate Limits

100 requests per minute per API key.

When exceeded, the API returns 429 Too Many Requests with a Retry-After header indicating seconds to wait.

Endpoints
Query Parameters

page, limit, sort, order, search, isContractor

Response
{
  "success": true,
  "data": {
    "visitors": [...],
    "pagination": { "page": 1, "limit": 20, "total": 150, "totalPages": 8 }
  }
}
Error Codes

Error responses follow the format: { "success": false, "error": { "code": "...", "message": "..." } }

CodeStatusDescription
MISSING_API_KEY401No X-API-Key header provided
INVALID_API_KEY401API key does not match any active key
RATE_LIMIT_EXCEEDED429Too many requests, see Retry-After header
NOT_FOUND404Resource not found or not in your tenant
VALIDATION_ERROR400Missing or invalid request body fields
ALREADY_CHECKED_OUT400Visitor has already checked out
Code Examples
# List visitors
curl -H "X-API-Key: pk_your_key" \
  https://portervisitors.com/api/v1/visitors?page=1&limit=10

# Create a visitor
curl -X POST -H "X-API-Key: pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"firstName":"Jane","lastName":"Doe","email":"[email protected]"}' \
  https://portervisitors.com/api/v1/visitors

# Check out a visit
curl -X PATCH -H "X-API-Key: pk_your_key" \
  https://portervisitors.com/api/v1/visits/visit_id_here