> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.projectmanager.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.projectmanager.com/_mcp/server.

# Get Meetings

GET https://api.projectmanager.com/api/data/meetings

Retrieve a list of Meetings.
            
This endpoint does not use OData. If `projectId` is provided, results are limited to that Project.

Reference: https://developer.projectmanager.com/api-reference/meetings/get-meetings

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Query parameters

- `projectId` (string, optional) — Optional project id to scope results

### Headers

- `x-integration-name` (string, optional) — The name of the calling system passed along as a header parameter

## Response

### 200

Success

- `error` (AstroError, optional, nullable) — If the API call failed, this will contain information about the error that occurred.
- `success` (boolean, optional) — True if the API call succeeded; false otherwise.
- `hasError` (boolean, optional) — True if the API call failed.
- `statusCode` (enum, optional) — The HTTP code of the response.
  - Allowed values: `Continue`, `SwitchingProtocols`, `Processing`, `EarlyHints`, `OK`, `Created`, `Accepted`, `NonAuthoritativeInformation`, `NoContent`, `ResetContent`, `PartialContent`, `MultiStatus`, `AlreadyReported`, `IMUsed`, `MultipleChoices`, `MovedPermanently`, `Found`, `SeeOther`, `NotModified`, `UseProxy`, `Unused`, `TemporaryRedirect`, `PermanentRedirect`, `BadRequest`, `Unauthorized`, `PaymentRequired`, `Forbidden`, `NotFound`, `MethodNotAllowed`, `NotAcceptable`, `ProxyAuthenticationRequired`, `RequestTimeout`, `Conflict`, `Gone`, `LengthRequired`, `PreconditionFailed`, `RequestEntityTooLarge`, `RequestUriTooLong`, `UnsupportedMediaType`, `RequestedRangeNotSatisfiable`, `ExpectationFailed`, `MisdirectedRequest`, `UnprocessableEntity`, `Locked`, `FailedDependency`, `UpgradeRequired`, `PreconditionRequired`, `TooManyRequests`, `RequestHeaderFieldsTooLarge`, `UnavailableForLegalReasons`, `InternalServerError`, `NotImplemented`, `BadGateway`, `ServiceUnavailable`, `GatewayTimeout`, `HttpVersionNotSupported`, `VariantAlsoNegotiates`, `InsufficientStorage`, `LoopDetected`, `NotExtended`, `NetworkAuthenticationRequired`
- `data` (list of MeetingDto, optional) — If the API call succeeded, this will contain the results.

## Types

### AstroError

Information about an error that occurred within the ProjectManager API.

- `technicalError` (string, optional, nullable) — A technical description of the error that occurred. Not suitable for display to end users.
- `additionalErrors` (list of string, optional, nullable) — If additional errors beyond the main error in `Message` occurred, they will be listed here as individual messages.
- `validationErrors` (map from string to list of string, optional, nullable) — This contains a dictionary of validation errors. The key is the name of the field
- `message` (string, optional, nullable) — A description of the error that occurred. If your application has a user interface, show this message to explain what went wrong.

### MeetingDto

A Meeting is a lightweight calendar event that may or may not belong to a project. It is only visible to the person who created it and the users assigned to it.

- `id` (string, optional) — The unique identifier of the Meeting
- `name` (string, optional) — The common name of this Meeting.
- `description` (string, optional, nullable) — This field contains the Meeting's description.
- `plannedStartDate` (string, optional, nullable) — The planned start date/time for this Meeting, in UTC. Clients should convert to local time only when displaying to the user.
- `plannedFinishDate` (string, optional, nullable) — The planned finish date/time for this Meeting, in UTC. Clients should convert to local time only when displaying to the user.
- `plannedDuration` (integer, optional, nullable) — The planned duration (in minutes) for this Meeting.
- `plannedEffort` (integer, optional, nullable) — The planned effort (in minutes) for this Meeting.
- `priorityId` (integer, optional, nullable) — Return the priority of a Meeting
- `assignees` (list of MeetingAssigneeDto, optional) — The list of resources assigned to this Meeting
- `shortId` (string, optional, nullable) — A short ID that can be used to refer to this Meeting. This short ID is guaranteed to be unique within your Workspace.
- `tags` (list of TaskTagDto, optional, nullable) — The tags that apply to this Meeting.
- `todos` (list of TaskTodoDto, optional, nullable) — A list of todo items for this Meeting.
- `createDate` (string, optional) — Timestamp when the Meeting was created
- `owner` (TaskOwnerDto, optional, nullable) — The owner of this Meeting.
- `ownerId` (string, optional, nullable) — The ownerId of this Meeting.
- `project` (MeetingProjectDto, optional, nullable) — The project this meeting belongs to

### MeetingAssigneeDto

A MeetingAssignee is a Resource to whom a Meeting is assigned. A single Meeting can be assigned to multiple MeetingAssignee.

- `id` (string, optional) — The unique identifier of this Resource
- `initials` (string, optional) — A shortened set of initials to use when representing this MeetingAssignee visually in small areas. The initials may be used in small icons or other overlays.
- `name` (string, optional, nullable) — The name of this MeetingAssignee
- `description` (string, optional, nullable) — A more complete description of the MeetingAssignee.
- `isActive` (boolean, optional) — True if this MeetingAssignee is currently active with the Project.
- `colorName` (string, optional, nullable) — Collaboration Color for this resource. eg. teal, cyan, lightblue, blurple, purple, pink, orange, gray
- `firstName` (string, optional, nullable) — The first or given name of this MeetingAssignee. For personnel MeetingAssignees only.
- `lastName` (string, optional, nullable) — The last or family name of this MeetingAssignee. For personnel MeetingAssignees only.
- `shortName` (string, optional, nullable) — A shortened version of the name of this MeetingAssignee. This is used in areas where the Initials are too short but the full name is too long.
- `avatarUrl` (string, optional, nullable) — A link to an Avatar for this MeetingAssignee. Avatars are small images or representations that can be used to visually identify this MeetingAssignee at a glance.
- `email` (string, optional, nullable) — The email address for the resource. It can be empty if the resource does not have a login.

### TaskTagDto

A TaskTag is a connection between a Task and a Tag. Each Task can have zero, one or many TaskTags associated with it. TaskTags can be assigned and removed from the Task to help you classify your Tasks and prioritize work.

- `id` (string, optional) — The unique identifier of this TaskTag.
- `name` (string, optional) — The common name of this TaskTag.
- `color` (string, optional) — The color that will be used to represent this Tag visually. This color is automatically chosen by the application when a user creates a Tag. You can choose specify any color that can be represented using HTML RGB syntax such as `#0088FF`, in the format `RRGGBB`. You may not use names for colors.

### TaskTodoDto

A TaskTodo is a sub-task that represents a unit of work on the Task. You can use TaskTodo to represent individual items for a larger piece of work.

- `id` (string, optional) — The unique identifier of this TaskTodo.
- `text` (string, optional) — The full description of this TaskTodo.
- `complete` (boolean, optional) — True if this TaskTodo is complete.
- `createDate` (string, optional) — The timestamp in UTC when this object was created.
- `modifyDate` (string, optional) — The timestamp in UTC when this object was last modified.

### TaskOwnerDto

A Resource represents a person, material, or tool that is used within your Projects. When you attach a Resources to more than one Task, the software will schedule the usage of your Resource so that it is not allocated to more than one Task at the same time. The users in your Workspace are also considered Resources. To invite a new User to your Workspace, create a new Resource for that user.

- `id` (string, optional) — The unique identifier of this Resource.
- `initials` (string, optional) — The resource initials.
- `name` (string, optional, nullable) — Display name for this Resource.
- `shortName` (string, optional, nullable) — Short display name for this Resource.
- `firstName` (string, optional, nullable) — The first name of the person Resource. Applies to personnel Resources only.
- `lastName` (string, optional, nullable) — The last name of the person Resource. Applies to personnel Resources only.
- `email` (string, optional, nullable) — If this Resource is a person who can log on to ProjectManager.com, this value should be the email address of the person. If this Resource is not a person, but you wish to receive email alerts for usage of this Resource, you can also add an email address here and notifications will be sent when this Resource is used. Otherwise this value should be `null`.
- `isActive` (boolean, optional) — True if this Resource is currently active and valid. If this value is false, this Resource is considered to be deactivated and not available for further use. For personnel Resources, setting this value to False will make this user unable to access this Workspace.
- `color` (string, optional, nullable) — Read only Hex code of the ColorName
- `avatarUrl` (string, optional, nullable) — The resources avatar url, if any.

### MeetingProjectDto

A Project is a collection of Tasks that contributes towards a goal. Within a Project, Tasks represent individual items of work that team members must complete. The sum total of Tasks within a Project represents the work to be completed for that Project.

- `id` (string, optional) — The unique identifier of this Project.
- `shortId` (string, optional) — The ShortId of this Project.
- `name` (string, optional) — The common name of this Project.

## Examples

**Response**

```json
{
  "error": {
    "technicalError": "string",
    "additionalErrors": [
      "string"
    ],
    "validationErrors": {},
    "message": "string"
  },
  "success": true,
  "hasError": true,
  "statusCode": "Continue",
  "data": [
    {
      "id": "string",
      "name": "string",
      "description": "string",
      "plannedStartDate": "2024-01-15T09:30:00Z",
      "plannedFinishDate": "2024-01-15T09:30:00Z",
      "plannedDuration": 1,
      "plannedEffort": 1,
      "priorityId": 1,
      "assignees": [
        {
          "id": "string",
          "initials": "string",
          "name": "string",
          "description": "string",
          "isActive": true,
          "colorName": "string",
          "firstName": "string",
          "lastName": "string",
          "shortName": "string",
          "avatarUrl": "string",
          "email": "string"
        }
      ],
      "shortId": "string",
      "tags": [
        {
          "id": "string",
          "name": "string",
          "color": "string"
        }
      ],
      "todos": [
        {
          "id": "string",
          "text": "string",
          "complete": true,
          "createDate": "2024-01-15T09:30:00Z",
          "modifyDate": "2024-01-15T09:30:00Z"
        }
      ],
      "createDate": "2024-01-15T09:30:00Z",
      "owner": {
        "id": "string",
        "initials": "string",
        "name": "string",
        "shortName": "string",
        "firstName": "string",
        "lastName": "string",
        "email": "string",
        "isActive": true,
        "color": "string",
        "avatarUrl": "string"
      },
      "ownerId": "string",
      "project": {
        "id": "string",
        "shortId": "string",
        "name": "string"
      }
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.projectmanager.com/api/data/meetings"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.projectmanager.com/api/data/meetings';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.projectmanager.com/api/data/meetings"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.projectmanager.com/api/data/meetings")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.projectmanager.com/api/data/meetings")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.projectmanager.com/api/data/meetings', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.projectmanager.com/api/data/meetings");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.projectmanager.com/api/data/meetings")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```