// Developers

Public API v1

Programmatic access to journal posts and leads. All endpoints return JSON and require authentication via an API key header.

// Authentication

Every request must include your API key in one of the following headers:

  • X-API-Key: your_api_key_here
  • Authorization: Bearer your_api_key_here

No key? Contact hello@grow.contact to request access.

// Endpoints

GET/api/public/v1/posts

List all journal posts.

// Request

curl -X GET "https://grow.contact/api/public/v1/posts" \
  -H "X-API-Key: your_api_key_here"

// Response

{
  "posts": [
    {
      "slug": "agent-native-design",
      "title": "Designing for Agents, Not Just Humans",
      "excerpt": "Why structured data matters in the agent era.",
      "published_at": "2026-05-18T00:00:00Z"
    }
  ]
}
GET/api/public/v1/posts/{slug}

Fetch a single post by slug.

// Request

curl -X GET "https://grow.contact/api/public/v1/posts/agent-native-design" \
  -H "X-API-Key: your_api_key_here"

// Response

{
  "slug": "agent-native-design",
  "title": "Designing for Agents, Not Just Humans",
  "content": "...",
  "published_at": "2026-05-18T00:00:00Z"
}
GET/api/public/v1/leads

List recent leads (most recent first). Optional query: ?limit=50

// Request

curl -X GET "https://grow.contact/api/public/v1/leads?limit=10" \
  -H "X-API-Key: your_api_key_here"

// Response

{
  "leads": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Jane Doe",
      "email": "jane@example.com",
      "budget_tier": "enterprise",
      "message": "Looking for a devtool hub.",
      "created_at": "2026-05-20T10:00:00Z"
    }
  ]
}
POST/api/public/v1/leads

Create a lead. Body: { name, email, budget_tier, message }

// Request

curl -X POST "https://grow.contact/api/public/v1/leads" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your_api_key_here" \
  -d '{
    "name": "Jane Doe",
    "email": "jane@example.com",
    "budget_tier": "enterprise",
    "message": "Looking for a devtool hub."
  }'

// Response

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Jane Doe",
  "email": "jane@example.com",
  "budget_tier": "enterprise",
  "created_at": "2026-05-20T10:00:00Z"
}

// Machine Readable

OpenAPI 3.1 Spec

Download the full OpenAPI spec to import into Postman, Insomnia, or generate client SDKs.

Download openapi.json