# Using GraphQL > **Beta** > > Zoom GraphQL is in a public beta. ## Zoom GraphQL endpoint GraphQL only requires one endpoint for all queries and mutations. Here is the Zoom GraphQL endpoint: `https://api.zoom.us/v3/graphql` ## Authentication Authenticate using OAuth. Create an [OAuth](/docs/integrations/create/) app or a [Server-to-Server OAuth](/docs/internal-apps/create/) app to get credentials and see [OAuth with Zoom](/docs/integrations/oauth/) for details. You must have the required [scopes](/docs/api/graphql/graphql-scopes) to access the data in your query or mutation. ## Pagination Use the `cursor` value to get the next page token, then send it to get the next page of data. See the following samples and the [GraphQL Pagination documentation](https://graphql.org/learn/pagination/) for details. ### Request ```graphql { meetings(userId: "me", first: 10, meetingType: PREVIOUS_MEETINGS) { edges { id } pageInfo { cursor } } } ``` ### Response ```json { "data": { "meetings": { "edges": [ { "id": 93989529046 }, { "id": 92631809138 }, { "id": 92849539085 }, { "id": 94292260890 }, { "id": 99070971365 }, { "id": 92260053040 }, { "id": 92260053040 }, { "id": 92260053040 }, { "id": 92260053040 }, { "id": 92260053040 } ], "pageInfo": { "cursor": "mSrvrBJZhdALywcIEb1LmpEMDJ6whNfoSJ2" } } } } ``` The `cursor` value is the token for the next page. Enter it using the after argument in your next request. ### Request for the next page of values ```graphql { meetings( userId: "me" first: 10 meetingType: PREVIOUS_MEETINGS after: "DsitdziACFmWHu3nTYiGtaGEjB4P6fsve02" ) { edges { id } pageInfo { cursor } } } ``` ### Response ```json { "data": { "meetings": { "edges": [ { "id": 92260053040 }, { "id": 92260053040 } ], "pageInfo": { "cursor": "" } } } } ``` If there are no more pages, the cursor value will be empty. ## Resources For details about rate limits and scopes, see: - [Rate limits](/docs/api/graphql/graphql-ratelimits) - [Scopes](/docs/api/graphql/graphql-scopes)