openapi: 3.0.3
info:
title: June Tracking Companies Events API
description: 'REST API for sending user behaviour data to June, including user identification, event tracking, company grouping, and page view recording. Compatible with the Segment tracking protocol. Uses Basic Authentication with a workspace write key.
'
version: 1.0.0
contact:
url: https://www.june.so/docs
termsOfService: https://www.june.so/privacy
servers:
- url: https://api.june.so/sdk
description: June Tracking API base
security:
- basicAuth: []
tags:
- name: Events
paths:
/track:
post:
operationId: trackEvent
summary: Track an event
description: 'Records a user action or event. At least one of userId or anonymousId must be included. Use the context.groupId field to associate events with a company or group.
'
tags:
- Events
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TrackRequest'
example:
userId: user_12345
event: Signed Up
properties:
plan: pro
context:
groupId: company_67890
responses:
'200':
description: Event tracked successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'400':
description: Bad request — missing required fields or malformed payload.
'401':
description: Unauthorized — invalid or missing write key.
components:
schemas:
TrackRequest:
type: object
required:
- event
properties:
userId:
type: string
description: 'The ID for this user in your database. At least one of userId or anonymousId must be provided.
'
example: user_12345
anonymousId:
type: string
description: 'An ID associated with the user when you do not know who they are. At least one of userId or anonymousId must be provided.
'
example: anon_abc123
event:
type: string
description: The name of the event you are tracking.
example: Signed Up
properties:
type: object
description: A dictionary of properties for the event.
additionalProperties: true
example:
plan: pro
revenue: 99.0
timestamp:
type: string
format: date-time
description: 'ISO 8601 date-time string representing when the track took place. Defaults to server time if omitted.
'
example: '2026-06-12T10:00:00Z'
context:
$ref: '#/components/schemas/Context'
SuccessResponse:
type: object
properties:
status:
type: integer
example: 200
success:
type: boolean
example: true
Context:
type: object
description: 'A dictionary of extra context to attach to the call. Differs from traits in that it is not user-specific attributes.
'
properties:
app:
type: object
description: Information about the application.
properties:
name:
type: string
version:
type: string
build:
type: string
campaign:
type: object
description: UTM campaign parameters.
properties:
name:
type: string
source:
type: string
medium:
type: string
term:
type: string
content:
type: string
device:
type: object
description: Device information.
properties:
type:
type: string
manufacturer:
type: string
model:
type: string
ip:
type: string
description: The user's IP address.
example: 203.0.113.42
locale:
type: string
description: The locale of the user (e.g., en-US).
example: en-US
os:
type: object
description: Operating system information.
properties:
name:
type: string
version:
type: string
referrer:
type: object
description: Referral information.
properties:
id:
type: string
type:
type: string
url:
type: string
screen:
type: object
description: Screen dimensions and density.
properties:
width:
type: integer
height:
type: integer
density:
type: number
timezone:
type: string
description: The user's timezone in tzdata format.
example: America/New_York
groupId:
type: string
description: The group or company identifier to associate the event with.
example: company_67890
additionalProperties: true
securitySchemes:
basicAuth:
type: http
scheme: basic
description: 'Provide your workspace write key as the username via HTTP Basic Auth. Obtain the write key from your June workspace settings.
'