Unable to set time in HTTP node to create meetings in Outlook

I need to set up meetings in Outlook. As the Outlook Meeting Node lacks adding attendees option I use HTTP node instead. The problem is I just can’t setup the meeting time right and move forward.

What is the error message (if any)?

With this body in the HTTP node:

{
  "subject": "{{ $json.subject }}",
  "body": {
    "contentType": "HTML",
    "content": "{{ $json.body.content }}"
  },
  "start": {
    "dateTime": "{{ $json.start.dateTime }}",
    "timeZone": "UTC"
  },
  "end": {
    "dateTime": "{{ $json.end.dateTime }}",
    "timeZone": "UTC"
  },
  "location": {
    "displayName": "Online"
  },
  "attendees": [
    {
      "emailAddress": {
        "address": "{{ $json.attendees[0].emailAddress.address }}",
        "name": "{{ $json.attendees[0].emailAddress.name }}"
      },
      "type": "required"
    }
  ],
  "isOnlineMeeting": false
}

I get this error:
Bad request - please check your parameters
The value ‘{{ $json.start.dateTime }}’ of parameter ‘DateTime’ is invalid.

I if I change the code to fix the issue:

{
  "subject": "{{ $json.subject }}",
  "body": {
    "contentType": "HTML",
    "content": "{{ $json.body.content }}"
  },
  "start": {
    "dateTime": "{{ DateTime.fromISO($json.start.dateTime).toISO() }}",
    "timeZone": "UTC"
  },
  "end": {
    "dateTime": "{{ DateTime.fromISO($json.end.dateTime).toISO() }}",
    "timeZone": "UTC"
  },
  "location": {
    "displayName": "Online"
  },
  "attendees": [
    {
      "emailAddress": {
        "address": "{{ $json.attendees[0].emailAddress.address }}",
        "name": "{{ $json.attendees[0].emailAddress.name }}"
      },
      "type": "required"
    }
  ],
  "isOnlineMeeting": false
}

I get this error:
Bad request - please check your parameters
The value ‘{{ DateTime.fromISO($json.start.dateTime).toISO() }}’ of parameter ‘DateTime’ is invalid.

I checked and my Input dateTime is set proper in ISO standard: “2025-02-14T16:00:00Z”

I am going in circles with no resolution. Of course having a fully operational Outlook Meetings node would have helped.

Please share your workflow

(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)

When I copy with CMD+C/CMD+V it pastes not the node as an object but its setup. Please advise.

Share the output returned by the last node

This is the input to my HTTP node from the Edit node before:
[
{
“subject”: “text replaced”,
“body”: {
“contentType”: “HTML”,
“content”: “Text replaced”
},
“start”: {
“dateTime”: “2025-02-14T15:30:00Z”,
“timeZone”: “UTC”
},
“end”: {
“dateTime”: “2025-02-14T16:00:00Z”,
“timeZone”: “UTC”
},
“location”: {
“displayName”: “Online”
},
“attendees”: [
{
“emailAddress”: {
“address”: “email [email protected]”,
“name”: “name replaced”
},
“type”: “required”
}
],
“isOnlineMeeting”: false,
“Subject”: “text replaced”,
“Start DateTime”: “2025-02-14T15:30:00Z”,
“Start TimeZone”: “UTC”,
“End DateTIme”: “2025-02-14T16:00:00Z”,
“End TimeZone”: “UTC”,
“Attendee Email”: “email [email protected]”,
“Attendee Name”: “name replaced”,
“finalStartDateTIme”: “2025-02-14T15:30:00Z”,
“finalEndDateTime”: “2025-02-14T16:00:00Z”,
“finalTimeZone”: “UTC”,
“finalAttendeeEmail”: “email [email protected]”,
“finalAttendeeName”: “name replaced”
}
]

Information on your n8n setup

  • n8n version:
    Node type
    n8n-nodes-base.httpRequest
    Node version
    4.2 (Latest)
    n8n version
    1.75.2 (Cloud)

  • **Database (default: SQLite):**MSFT OneDrive

  • **n8n EXECUTIONS_PROCESS setting (default: own, main):**default

  • Running n8n via (Docker, npm, n8n cloud, desktop app): cloud

  • Operating system: MacOS

This suggests you need to switch the field that contains the expressions to ‘Expressions’. If you don’t do that, it’ll pass the literal value of the input string unparsed.

image

Thank you @bartv I was still struggling with the Expression setup as it would not switch from Fixed in the body. I ended up deleting the HTTP node and replacing with a new one. It now works with this JSON:
{
“subject”: “{{ $json.subject }}”,
“body”: {
“contentType”: “HTML”,
“content”: “{{ $json.body.content }}”
},
“start”: {
“dateTime”: “{{ $json.formattedStartDateTime }}”,
“timeZone”: “UTC”
},
“end”: {
“dateTime”: “{{ $json.formattedEndDateTime }}”,
“timeZone”: “UTC”
},
“location”: {
“displayName”: “Online”
},
“attendees”: [
{
“emailAddress”: {
“address”: “{{ $json.attendees[0].emailAddress.address }}”,
“name”: “{{ $json.attendees[0].emailAddress.name }}”
},
“type”: “required”
}
],
“isOnlineMeeting”: false
}

I learned that sometimes you need to recreate the node as it helped before.

2 Likes

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.