Build with EventThing OAuth
EventThing OAuth gives your website a secure way to identify an EventThing user, understand which VTCs they can act on behalf of, and obtain a short-lived access token for a deliberately limited part of the EventThing API.
For most integrations, the goal is simple:
Who is this person?
and:
Which VTCs can they act on behalf of?
A VTC can add an Invite Us button to its own website. The visitor authorises with EventThing, your site receives the information allowed by the accepted scopes, the visitor chooses a VTC and one of that VTC's events, and the EventThing API creates the invitation.
OAuth identifies and authorises. The EventThing API still does the work.
OAuth does not replace the EventThing API. It gives your application a user-authorised token and a context object containing the data exposed by the accepted scopes.
What a successful authorisation gives you
A successful authorisation can return:
{
"access_token": "et_oauth_...",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "profile vtcs events invites:create",
"context": {
"profile": {
"id": "usr_7k2h9...",
"name": "Bean",
"avatar_url": "https://..."
},
"vtcs": [
{
"id": "vtc_onlytangs",
"name": "OnlyTangs Haulage",
"avatar_url": "https://...",
"can_act": true,
"events": [
{
"id": "evt_september_convoy",
"name": "September Community Convoy",
"starts_at": "2026-09-12T18:00:00Z"
}
]
}
]
}
}
The data follows the way integrations actually use it:
User
↓
VTCs they can act for
↓
Events belonging to each VTC
↓
Create invitation
If events is not granted, the events property is omitted. If it is granted but a VTC has no applicable events, events is returned as an empty array.
Standard scopes
| Scope | What it allows |
|---|---|
profile |
Basic EventThing user information, including display name and avatar |
vtcs |
VTCs the user belongs to and/or can act on behalf of |
events |
Eligible EventThing events, nested directly under each VTC |
invites:create |
Create an invitation on behalf of the authorised user and VTC |
Normal OAuth integrations do not need the user's email address, Steam information or TruckersMP information.
OAuth user tokens are intentionally limited.
Creating an invitation is the only normal EventThing API action available to an OAuth user token. Wider API access remains available through VTC API tokens.
The Invite Us flow
[ Invite Us ]
↓
Continue with EventThing
↓
User reviews and authorises scopes
↓
Token + authorised context returned
↓
Choose VTC if more than one applies
↓
Choose one of that VTC's events
↓
POST /v1/invites
↓
Invitation appears normally in EventThing
If the user can act for only one VTC, you can normally skip the VTC selection step.
Once created, the invitation appears in the sender's Outgoing inbox and the recipient's Incoming inbox exactly like an invitation created directly through EventThing.
EventThing remains responsible for the invitation lifecycle and its own email/user notifications.
OAuth and API tokens are different
| Credential | Represents | Intended use |
|---|---|---|
| OAuth user token | A specific user, accepted scopes and applicable VTCs | User-authorised Invite Us flows |
| VTC API token | One VTC and its configured API scopes | Wider programmatic VTC integration |
OAuth extends the API with secure user delegation. It does not replace the normal VTC API model.
Next steps
- Build an Invite Us integration — complete OAuth-to-invitation flow.
- OAuth scopes — exact data exposed by
profile,vtcs,eventsandinvites:create. - OAuth tokens — token behaviour and how OAuth tokens differ from VTC API tokens.
- OAuth security — PKCE,
state, VTC validation and data minimisation.
Keep your website yours. Let EventThing handle the connection between VTCs.