Endpoints and schemas for creating and managing meetings and attendees within the SAP Concur platform.
All meeting-scoped endpoints accept an optional companyId query parameter (UUID). When omitted, the company is resolved from the token; when supplied it must match the token’s company.
List Meetings
Retrieves meetings for the caller’s company.
Scopes
meetings.read — Refer to Scope Usage.
URI
GET https://{datacenterURI}/meetings/v4/meetings?companyId={companyId}
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
companyId |
string |
uuid |
Company identifier. Optional; must match the token’s company when supplied. |
countAttendees |
boolean |
- | When true, each returned meeting includes an attendeesCount field. Off by default. |
limit |
integer |
- | Maximum number of results per page. |
offset |
integer |
- | Number of results to skip for pagination. |
Examples
Request
GET https://us.api.concursolutions.com/meetings/v4/meetings?companyId=62ec4e74-3238-41a2-9233-c1cc901c2daa
Accept: application/json
Authorization: Bearer {token}
Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"meetings": [
{
"id": "5036ada6-25e8-4e96-9d28-59788b1cdd67",
"name": "Q3 Sales Kickoff",
"status": "active",
"locationName": "Grand Hotel",
"airport": "SFO",
"startDateTime": "2026-09-01T09:00:00Z",
"endDateTime": "2026-09-03T17:00:00Z",
"timeZone": "America/Los_Angeles"
}
],
"pagination": { "limit": 25, "offset": 0, "total": 1 }
}
Create Meeting
Creates a meeting in the caller’s company. The response includes the generated id.
Scopes
meetings.write — Refer to Scope Usage.
URI
POST https://{datacenterURI}/meetings/v4/meetings
Payloads
- Request: MeetingCreate
- Response: Meeting
idandstatus
Examples
Request
POST https://us.api.concursolutions.com/meetings/v4/meetings
Content-Type: application/json
Authorization: Bearer {token}
{
"companyId": "62ec4e74-3238-41a2-9233-c1cc901c2daa",
"name": "Q3 Sales Kickoff",
"locationName": "Grand Hotel",
"airport": "SFO",
"startDateTime": "2026-09-01T09:00:00Z",
"endDateTime": "2026-09-03T17:00:00Z",
"timeZone": "America/Los_Angeles",
"travelConfigId": "0b2f...",
"partnerMeetingId": "EXT-12345"
}
Response
HTTP/1.1 201 Created
Content-Type: application/json
{ "id": "5036ada6-25e8-4e96-9d28-59788b1cdd67", "status": "active" }
Get a Meeting
Retrieves full meeting details including metadata, settings, and discounts.
Related read-only sub-resources: GET /meetings/{meetingId}/metadata, /settings, /discounts, and /history.
Scopes
meetings.read — Refer to Scope Usage.
URI
GET https://{datacenterURI}/meetings/v4/meetings/{meetingId}
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
meetingId |
string |
uuid |
Required Meeting identifier. |
Examples
Request
GET https://us.api.concursolutions.com/meetings/v4/meetings/5036ada6-25e8-4e96-9d28-59788b1cdd67
Accept: application/json
Authorization: Bearer {token}
Response
HTTP/1.1 200 OK
Content-Type: application/json
Update a Meeting
Partially updates a meeting using JSON Merge Patch.
Scopes
meetings.write — Refer to Scope Usage.
URI
PATCH https://{datacenterURI}/meetings/v4/meetings/{meetingId}
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
meetingId |
string |
uuid |
Required Meeting identifier. |
Examples
Request
PATCH https://us.api.concursolutions.com/meetings/v4/meetings/5036ada6-25e8-4e96-9d28-59788b1cdd67
Content-Type: application/merge-patch+json
Authorization: Bearer {token}
{ "name": "Q3 Sales Kickoff (Updated)" }
Response
HTTP/1.1 200 OK
Content-Type: application/json
Delete a Meeting
Soft-deletes the meeting.
Scopes
meetings.write — Refer to Scope Usage.
URI
DELETE https://{datacenterURI}/meetings/v4/meetings/{meetingId}
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
meetingId |
string |
uuid |
Required Meeting identifier. |
Examples
Request
DELETE https://us.api.concursolutions.com/meetings/v4/meetings/5036ada6-25e8-4e96-9d28-59788b1cdd67
Authorization: Bearer {token}
Response
HTTP/1.1 204 No Content
List Attendees
Retrieves attendees for a meeting.
Scopes
meetings.read — Refer to Scope Usage.
URI
GET https://{datacenterURI}/meetings/v4/meetings/{meetingId}/attendees
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
meetingId |
string |
uuid |
Required Meeting identifier. |
Add Attendee
Adds a single attendee to a meeting.
Scopes
meetings.write — Refer to Scope Usage.
URI
POST https://{datacenterURI}/meetings/v4/meetings/{meetingId}/attendees
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
meetingId |
string |
uuid |
Required Meeting identifier. |
Payloads
- Request: AttendeeCreate
- Response: Attendee
Add Attendees (Bulk)
Adds multiple attendees to a meeting. Returns 207 Multi-Status with per-item results.
Scopes
meetings.write — Refer to Scope Usage.
URI
POST https://{datacenterURI}/meetings/v4/meetings/{meetingId}/attendees/bulk
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
meetingId |
string |
uuid |
Required Meeting identifier. |
Examples
Request
POST https://us.api.concursolutions.com/meetings/v4/meetings/{meetingId}/attendees/bulk
Content-Type: application/json
Authorization: Bearer {token}
{
"attendees": [
{ "email": "jane@example.com", "firstName": "Jane", "lastName": "Doe", "profileType": "nonEmployee" },
{ "email": "john@example.com", "firstName": "John", "lastName": "Roe", "profileType": "employee" }
]
}
Response
HTTP/1.1 207 Multi-Status
Content-Type: application/json
{
"totalRequested": 2,
"successful": 2,
"failed": 0,
"results": [
{ "index": 0, "status": 201, "id": "17eeba90-d260-4bf6-8814-7f6336acf0e4" },
{ "index": 1, "status": 201, "id": "820a1325-d80c-4d80-adfa-ae6b322bc009" }
]
}
Get Attendee
Retrieves a single attendee.
Scopes
meetings.read — Refer to Scope Usage.
URI
GET https://{datacenterURI}/meetings/v4/meetings/{meetingId}/attendees/{attendeeId}
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
meetingId |
string |
uuid |
Required Meeting identifier. |
attendeeId |
string |
uuid |
Required Attendee identifier. |
Update Attendee
Partially updates an attendee using JSON Merge Patch.
Scopes
meetings.write — Refer to Scope Usage.
URI
PATCH https://{datacenterURI}/meetings/v4/meetings/{meetingId}/attendees/{attendeeId}
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
meetingId |
string |
uuid |
Required Meeting identifier. |
attendeeId |
string |
uuid |
Required Attendee identifier. |
Delete Attendee
Removes an attendee from a meeting.
Scopes
meetings.write — Refer to Scope Usage.
URI
DELETE https://{datacenterURI}/meetings/v4/meetings/{meetingId}/attendees/{attendeeId}
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
meetingId |
string |
uuid |
Required Meeting identifier. |
attendeeId |
string |
uuid |
Required Attendee identifier. |
Generate Attendee Login URL
Generates a one-time login URL for a non-employee attendee.
Scopes
meetings.write — Refer to Scope Usage.
URI
POST https://{datacenterURI}/meetings/v4/meetings/{meetingId}/attendees/{attendeeId}/login-url
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
meetingId |
string |
uuid |
Required Meeting identifier. |
attendeeId |
string |
uuid |
Required Attendee identifier. |
Company Form Data
Retrieves the travel configs and their rule classes for a company, used to populate options when creating or editing a meeting.
Scopes
meetings.read — Refer to Scope Usage.
URI
GET https://{datacenterURI}/meetings/v4/companies/{companyId}/form-data
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
companyId |
string |
uuid |
Required Company identifier. The caller’s token must belong to the same company. |
Examples
Request
GET https://us.api.concursolutions.com/meetings/v4/companies/62ec4e74-3238-41a2-9233-c1cc901c2daa/form-data
Accept: application/json
Authorization: Bearer {token}
Response
{
"travelConfigs": [
{ "id": "0b2f...", "name": "Default Travel Config", "ruleClasses": [ { "ruleClassUuid": "...", "ruleClassName": "Default" } ] }
]
}
Schema
MeetingCreate
| Name | Type | Format | Description |
|---|---|---|---|
companyId |
string |
uuid |
Required Company that owns the meeting. |
name |
string |
- | Required Meeting name. |
description |
string |
- | Meeting description. |
locationName |
string |
- | Required Location name. |
airport |
string |
- | Required Nearest airport IATA code. |
startDateTime |
string |
date-time |
Required Meeting start (ISO 8601). |
endDateTime |
string |
date-time |
Required Meeting end (ISO 8601). |
timeZone |
string |
- | Required IANA time zone (e.g., America/Los_Angeles). |
travelConfigId |
string |
uuid |
Required Travel configuration identifier. |
billingCode |
string |
- | Billing code. |
partnerMeetingId |
string |
- | Meeting ID in the partner system. |
AttendeeCreate
| Name | Type | Format | Description |
|---|---|---|---|
email |
string |
email |
Required Attendee email. |
firstName |
string |
- | Required Attendee first name. |
lastName |
string |
- | Required Attendee last name. |
profileType |
string |
enum |
Required One of employee, nonEmployee. |
concurUuid |
string |
uuid |
Concur user profile UUID, if known. |
concurLoginId |
string |
- | Concur login ID / email, if known. |
partnerAttendeeId |
string |
- | Attendee ID in the partner system. |
Attendee
| Name | Type | Format | Description |
|---|---|---|---|
id |
string |
uuid |
Attendee identifier. |
meetingId |
string |
uuid |
Parent meeting identifier. |
profileType |
string |
enum |
One of employee, nonEmployee. |
email |
string |
email |
Attendee email. |
firstName |
string |
- | Attendee first name. |
lastName |
string |
- | Attendee last name. |
bookingStatus |
string |
enum |
One of pending, booked, cancelled. |
tripId |
string |
uuid |
Associated trip identifier, if booked. |
partnerAttendeeId |
string |
- | Attendee ID in the partner system. |
ErrorEnvelope
| Name | Type | Format | Description |
|---|---|---|---|
errors |
array |
ErrorItem |
Required Array of error objects. |
ErrorItem
| Name | Type | Format | Description |
|---|---|---|---|
errorCode |
string |
- | Required Machine-readable, non-localized code (e.g., ATTENDEE_NOT_FOUND, VALIDATION_ERROR, FORBIDDEN). |
errorMessage |
string |
- | Required Human-readable message for logging and diagnostics. |