← Back to Developer Portal

API Documentation

Everything you need to integrate with the Tampa.dev platform.

Examples

All examples use Personal Access Tokens. OAuth access tokens work the same way -- just replace the Bearer token value.

Read Operations

Get upcoming events

curl -H "Authorization: Bearer td_pat_abc123..." \
  "https://api.tampa.dev/v1/events?status=upcoming&limit=5"

Get your profile

curl -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/profile

List groups

curl -H "Authorization: Bearer td_pat_abc123..." \
  "https://api.tampa.dev/v1/groups?featured=1"

Get group details

curl -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/groups/tampadevs

Check your RSVP status

curl -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/events/evt_abc123/rsvp

List your favorite groups

curl -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/favorites

Get achievement progress

curl -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/profile/achievements

Write Operations

Update your profile

curl -X PATCH \
  -H "Authorization: Bearer td_pat_abc123..." \
  -H "Content-Type: application/json" \
  -d '{"bio": "Building cool stuff", "location": "Tampa, FL"}' \
  https://api.tampa.dev/v1/profile

RSVP to an event

curl -X POST \
  -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/events/evt_abc123/rsvp

Cancel your RSVP

curl -X DELETE \
  -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/events/evt_abc123/rsvp

Check in to an event

curl -X POST \
  -H "Authorization: Bearer td_pat_abc123..." \
  -H "Content-Type: application/json" \
  -d '{"method": "qr"}' \
  https://api.tampa.dev/v1/checkin/ABC123

Add a favorite group

curl -X POST \
  -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/favorites/tampadevs

Remove a favorite group

curl -X DELETE \
  -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/favorites/tampadevs

Claim a badge

curl -X POST \
  -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/claim/BADGE-CODE-123

Follow a user

curl -X POST \
  -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/users/johndoe/follow

Unfollow a user

curl -X DELETE \
  -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/users/johndoe/follow

Create a portfolio item

curl -X POST \
  -H "Authorization: Bearer td_pat_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My Project",
    "url": "https://example.com",
    "description": "A cool project"
  }' \
  https://api.tampa.dev/v1/profile/portfolio

Token Management

Create a new PAT

curl -X POST \
  -H "Authorization: Bearer td_pat_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "CI Pipeline",
    "scopes": ["read:events", "read:groups"],
    "expiresInDays": 30
  }' \
  https://api.tampa.dev/v1/profile/tokens

List your tokens

curl -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/profile/tokens

Revoke a token

curl -X DELETE \
  -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/profile/tokens/tok_abc123

Group Management

These examples require a PAT with manage:* scopes and the appropriate group role.

Create an event

curl -X POST \
  -H "Authorization: Bearer td_pat_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "TypeScript Workshop",
    "description": "Hands-on TypeScript workshop",
    "startTime": "2026-03-01T14:00:00-05:00",
    "endTime": "2026-03-01T17:00:00-05:00",
    "timezone": "America/New_York",
    "eventType": "in_person",
    "maxAttendees": 25
  }' \
  https://api.tampa.dev/v1/manage/groups/grp_react/events

Award a badge

curl -X POST \
  -H "Authorization: Bearer td_pat_abc123..." \
  https://api.tampa.dev/v1/manage/groups/grp_react/badges/bdg_abc123/award/usr_def456

Generate a checkin code

curl -X POST \
  -H "Authorization: Bearer td_pat_abc123..." \
  -H "Content-Type: application/json" \
  -d '{"expiresInMinutes": 120}' \
  https://api.tampa.dev/v1/manage/groups/grp_react/events/evt_abc123/checkin-codes

Create a badge claim link

curl -X POST \
  -H "Authorization: Bearer td_pat_abc123..." \
  -H "Content-Type: application/json" \
  -d '{"maxUses": 50, "expiresInDays": 7}' \
  https://api.tampa.dev/v1/manage/groups/grp_react/badges/bdg_abc123/claim-links

Using OAuth Access Tokens

After completing the OAuth flow, use the access token the same way as a PAT:

curl -H "Authorization: Bearer eyJhbGciOiJSUz..." \
  https://api.tampa.dev/v1/profile

Pagination

All list endpoints support limit and offset parameters:

# Get the second page of events (items 21-40)
curl -H "Authorization: Bearer td_pat_abc123..." \
  "https://api.tampa.dev/v1/events?limit=20&offset=20"

Check the pagination.hasMore field to determine if more pages exist.


Discover available scopes

curl https://api.tampa.dev/v1/scopes

This endpoint does not require authentication and returns all available OAuth scopes with descriptions and hierarchy information.


MCP (AI Agent) Examples

The same operations are available via the MCP server using JSON-RPC 2.0. Here is an example of listing events via MCP:

Initialize an MCP session

curl -X POST https://api.tampa.dev/mcp \
  -H "Authorization: Bearer td_pat_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-03-26",
      "capabilities": {},
      "clientInfo": { "name": "my-agent", "version": "1.0" }
    }
  }'

Call a tool

curl -X POST https://api.tampa.dev/mcp \
  -H "Authorization: Bearer td_pat_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/call",
    "params": {
      "name": "events_list",
      "arguments": { "limit": 5 }
    }
  }'

See MCP Examples for more detailed integration patterns including Claude Desktop configuration and multi-step workflows.