castomAPI
Odbierz klucz
POST /v1/google/calendar/events/create od 1 token Klucz API Google Workspace

Zaplanuj nowe wydarzenie w kalendarzu z opcjonalnymi zaproszeniami dla…

Zaplanuj nowe wydarzenie w kalendarzu z opcjonalnymi zaproszeniami dla uczestników, lokalizacją i automatycznie generowanymi linkami do wideokonferencji Google Meet na połączonym koncie Google, lub 2, jeśli link Meet zostanie pomyślnie utworzony)

POST

Żądanie

  • x-api-key: <your-api-key>
  • Content-Type: application/json

Odpowiedź

{
  "event": {
    "attendees": [
      {}
    ],
    "end": {},
    "htmlLink": "https://example.com/page",
    "id": "msg_792407",
    "start": {},
    "summary": "A short summary."
  },
  "meetLink": "https://example.com/page",
  "meetLinkStatus": "success",
  "status": "success",
  "tokensDeducted": 1
}
Odpowiedź poniżej to makieta zbudowana ze schematu endpointu — żadne żądanie nie opuszcza tej strony. Zmień treść, naciśnij Wyślij, zobacz kształt odpowiedzi. Uruchom naprawdę w panelu →

Co robi

Zaplanuj nowe wydarzenie w kalendarzu z opcjonalnymi zaproszeniami dla uczestników, lokalizacją i automatycznie generowanymi linkami do wideokonferencji Google Meet na połączonym koncie Google, lub 2, jeśli link Meet zostanie pomyślnie utworzony)

Żądanie

Treść

PoleTypWymaganeOpis
accountIdstringnieWhich connected Google account to use, when more than one is connected
attendeesarray<object>nie
  ↳ displayNamestringnie
  ↳ emailstringtak
  ↳ optionalbooleannie
calendarIdstringnie
createGoogleMeetbooleannieIf true, automatically provisions a Google Meet video conference link for the event.
descriptionstringnie
endobjecttak
  ↳ datestringnie
  ↳ dateTimestringnie
  ↳ timeZonestringnie
locationstringnie
sendUpdatesenumnieSend email notifications to attendees. Defaults to none, since scheduling an event should not silently email people. One of: all, externalOnly, none.
startobjecttakISO 8601 dateTime (e.g., 2026-08-01T10:00:00Z) or YYYY-MM-DD date for all-day events
  ↳ datestringnie
  ↳ dateTimestringnie
  ↳ timeZonestringnie
summarystringtak

Przykładowe żądanie

{
  "accountId": "acc_182428",
  "attendees": [
    {
      "displayName": "Ada Lovelace",
      "email": "ada@example.com",
      "optional": false
    }
  ],
  "calendarId": "primary",
  "createGoogleMeet": false,
  "description": "Generated from the endpoint's own schema.",
  "end": {
    "date": "2026-09-08",
    "dateTime": "2026-09-08T10:00:00Z",
    "timeZone": "Europe/Warsaw"
  },
  "location": "<location>",
  "sendUpdates": "none",
  "start": {
    "date": "2026-09-08",
    "dateTime": "2026-09-08T10:00:00Z",
    "timeZone": "Europe/Warsaw"
  },
  "summary": "A short summary."
}

Odpowiedź

PoleTypOpis
eventobject
  ↳ attendeesarray<object>
  ↳ endobject
  ↳ htmlLinkstring
  ↳ idstring
  ↳ startobject
  ↳ summarystring
meetLinkstring
meetLinkStatusenumOne of: success, pending, failure, unknown, not_requested.
statusstring
tokensDeductedinteger

Przykładowa odpowiedź

{
  "event": {
    "attendees": [
      {}
    ],
    "end": {},
    "htmlLink": "https://example.com/page",
    "id": "msg_792407",
    "start": {},
    "summary": "A short summary."
  },
  "meetLink": "https://example.com/page",
  "meetLinkStatus": "success",
  "status": "success",
  "tokensDeducted": 1
}

Błędy

Każdy błąd ma tę samą kopertę: status HTTP, kod maszynowy i jedno zdanie.

400Treść albo parametr nie przeszły walidacji. Tablica details wskazuje pole.
401Brak klucza, klucz cofnięty albo zły nagłówek. Wyślij x-api-key.
402Portfel nie pokrywa tego wywołania. Doładuj albo poczekaj na miesięczny przydział.
404Zasób nie istnieje albo nie jest Twój. Obie sytuacje odpowiadają identycznie i nic nie kosztują.
429Przekroczony limit na minutę dla Twojego planu. Odczekaj i ponów.
5xxUsługa nadrzędna odmówiła albo przekroczyła czas. Wywołanie nie jest rozliczane.

Kod

curl -X POST 'https://app.castomapi.com/v1/google/calendar/events/create' \
  -H 'x-api-key: <your-api-key>' \
  -H 'Content-Type: application/json' \
  -d '{"accountId": "acc_182428", "attendees": [{"displayName": "Ada Lovelace", "email": "ada@example.com", "optional": false}], "calendarId": "primary", "createGoogleMeet": false, "description": "Generated from the endpoint's own schema.", "end": {"date": "2026-09-08", "dateTime": "2026-09-08T10:00:00Z", "timeZone": "Europe/Warsaw"}, "location": "<location>", "sendUpdates": "none", "start": {"date": "2026-09-08", "dateTime": "2026-09-08T10:00:00Z", "timeZone": "Europe/Warsaw"}, "summary": "A short summary."}'
const res = await fetch('https://app.castomapi.com/v1/google/calendar/events/create', {
  method: 'POST',
  headers: { 'x-api-key': '<your-api-key>', 'Content-Type': 'application/json' },
  body: JSON.stringify({"accountId": "acc_182428", "attendees": [{"displayName": "Ada Lovelace", "email": "ada@example.com", "optional": false}], "calendarId": "primary", "createGoogleMeet": false, "description": "Generated from the endpoint's own schema.", "end": {"date": "2026-09-08", "dateTime": "2026-09-08T10:00:00Z", "timeZone": "Europe/Warsaw"}, "location": "<location>", "sendUpdates": "none", "start": {"date": "2026-09-08", "dateTime": "2026-09-08T10:00:00Z", "timeZone": "Europe/Warsaw"}, "summary": "A short summary."})
});
const data = await res.json();
console.log(data);
import { request } from 'node:https';

// Node 18+ has fetch built in
const res = await fetch('https://app.castomapi.com/v1/google/calendar/events/create', {
  method: 'POST',
  headers: { 'x-api-key': '<your-api-key>', 'Content-Type': 'application/json' },
  body: JSON.stringify({"accountId": "acc_182428", "attendees": [{"displayName": "Ada Lovelace", "email": "ada@example.com", "optional": false}], "calendarId": "primary", "createGoogleMeet": false, "description": "Generated from the endpoint's own schema.", "end": {"date": "2026-09-08", "dateTime": "2026-09-08T10:00:00Z", "timeZone": "Europe/Warsaw"}, "location": "<location>", "sendUpdates": "none", "start": {"date": "2026-09-08", "dateTime": "2026-09-08T10:00:00Z", "timeZone": "Europe/Warsaw"}, "summary": "A short summary."})
});
const data = await res.json();
console.log(data);
import requests

res = requests.post(
    'https://app.castomapi.com/v1/google/calendar/events/create',
    headers={'x-api-key': '<your-api-key>'},
    json={"accountId": "acc_182428", "attendees": [{"displayName": "Ada Lovelace", "email": "ada@example.com", "optional": False}], "calendarId": "primary", "createGoogleMeet": False, "description": "Generated from the endpoint's own schema.", "end": {"date": "2026-09-08", "dateTime": "2026-09-08T10:00:00Z", "timeZone": "Europe/Warsaw"}, "location": "<location>", "sendUpdates": "none", "start": {"date": "2026-09-08", "dateTime": "2026-09-08T10:00:00Z", "timeZone": "Europe/Warsaw"}, "summary": "A short summary."},
    timeout=30,
)
print(res.json())
<?php
$ch = curl_init('https://app.castomapi.com/v1/google/calendar/events/create');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['x-api-key: <your-api-key>', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode(['accountId' => 'acc_182428', 'attendees' => [['displayName' => 'Ada Lovelace', 'email' => 'ada@example.com', 'optional' => false]], 'calendarId' => 'primary', 'createGoogleMeet' => false, 'description' => 'Generated from the endpoint\'s own schema.', 'end' => ['date' => '2026-09-08', 'dateTime' => '2026-09-08T10:00:00Z', 'timeZone' => 'Europe/Warsaw'], 'location' => '<location>', 'sendUpdates' => 'none', 'start' => ['date' => '2026-09-08', 'dateTime' => '2026-09-08T10:00:00Z', 'timeZone' => 'Europe/Warsaw'], 'summary' => 'A short summary.']),
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);

Koszt i limity

Ta operacja kosztuje od 1 token. Nieudane wywołanie nigdy nie jest rozliczane. Każde konto dostaje 1000 darmowych tokenów miesięcznie; opłacone saldo nie wygasa. 1 token, albo 2, jeśli razem z wydarzeniem powstanie link do Meet.

Limity żądań na minutę

Bez klucza10
Free60
Pro300
Enterprise1200

Dokumentacja → Cennik

Pytania

Ile kosztuje Zaplanuj nowe wydarzenie w kalendarzu z opcjonalnymi zaproszeniami dla…?

od 1 token za udane wywołanie, pobierane z portfela po odpowiedzi. Nieudane wywołania są bezpłatne. Każde konto dostaje 1000 darmowych tokenów miesięcznie. 1 token, albo 2, jeśli razem z wydarzeniem powstanie link do Meet.

Jak się uwierzytelnić?

Wyślij klucz w nagłówku x-api-key. Jeden klucz obejmuje każdy rozliczany endpoint; niczego nie trzeba włączać osobno.

Czy mogę wysłać nagłówek Authorization: Bearer zamiast klucza?

Nie dla rozliczanego endpointu — te przyjmują wyłącznie nagłówek x-api-key. Tokeny Bearer należą do strony konta: panel i API konta przyjmują sesję JWT, a castomapi-auth wydaje je standardowym uzgodnieniem OAuth2, z grantami authorization code, client credentials i refresh. Opisuje to strona usługi auth.

Jakie są limity?

10 żądań na minutę z jednego IP zupełnie bez klucza, 60 na minutę w planie Free, 300 w Pro, 1200 w Enterprise. Powyżej poziomu bez klucza limit jest na konto, łącznie dla wszystkich endpointów.

OpenAPI: https://app.castomapi.com/docs/json