Swapcard Content API

Organizer-facing GraphQL API (the Event Admin endpoint) to fetch, create, modify, and delete event content - events, people, exhibitors, plannings/sessions, and groups. Single GraphQL endpoint over HTTP POST, authenticated with an organizer access token in the Authorization header.

Postman Collection

swapcard.postman_collection.json Raw ↑
{
  "info": {
    "name": "Swapcard GraphQL APIs",
    "description": "Swapcard is GraphQL-first. Two separate GraphQL endpoints, each with its own access token passed in the Authorization header (no Bearer prefix in Swapcard's documented examples): the Content / Event Admin API at https://developer.swapcard.com/event-admin/graphql and the Exhibitor Leads API at https://developer.swapcard.com/exhibitor/graphql. All operations are GraphQL queries and mutations over HTTP POST. Some request bodies are representative/modeled; the Event query, myExhibitors, myLeads, and scanBadges shapes are grounded in Swapcard docs.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "contentEndpoint", "value": "https://developer.swapcard.com/event-admin/graphql", "type": "string" },
    { "key": "leadsEndpoint", "value": "https://developer.swapcard.com/exhibitor/graphql", "type": "string" },
    { "key": "accessToken", "value": "", "type": "string" }
  ],
  "item": [
    {
      "name": "Content API (Event Admin)",
      "item": [
        {
          "name": "Get event by ID",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Authorization", "value": "{{accessToken}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "graphql",
              "graphql": {
                "query": "query EventById($eventId: ID!) {\n  event(id: $eventId) {\n    id\n    slug\n    title\n    beginsAt\n    endsAt\n    htmlDescription\n    isLive\n    language\n    timezone\n    totalPlannings\n    totalExhibitors\n    totalSpeakers\n    banner { imageUrl embeddedVideo { videoId } }\n    address { place street city zipCode state country }\n    groups { id name peopleCount }\n  }\n}",
                "variables": "{\n  \"eventId\": \"\"\n}"
              }
            },
            "url": { "raw": "{{contentEndpoint}}", "host": ["{{contentEndpoint}}"] },
            "description": "Fetch a single event by ID. Grounded in Swapcard's documented EventById example."
          }
        },
        {
          "name": "Get multiple events",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Authorization", "value": "{{accessToken}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "graphql",
              "graphql": {
                "query": "query events($eventIds: [String!]) {\n  events(ids: $eventIds) {\n    id\n    title\n    beginsAt\n    endsAt\n    isLive\n  }\n}",
                "variables": "{\n  \"eventIds\": []\n}"
              }
            },
            "url": { "raw": "{{contentEndpoint}}", "host": ["{{contentEndpoint}}"] },
            "description": "Fetch multiple events by ID. Grounded in Swapcard's documented events example."
          }
        },
        {
          "name": "List people for an event (modeled)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Authorization", "value": "{{accessToken}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "graphql",
              "graphql": {
                "query": "query People($eventId: ID!, $first: Int) {\n  people(eventId: $eventId, first: $first) {\n    id\n    firstName\n    lastName\n    email\n    jobTitle\n    organization\n    type\n  }\n}",
                "variables": "{\n  \"eventId\": \"\",\n  \"first\": 25\n}"
              }
            },
            "url": { "raw": "{{contentEndpoint}}", "host": ["{{contentEndpoint}}"] },
            "description": "Representative query for event people. Field/argument shape is modeled - verify against the Explorer/Reference."
          }
        },
        {
          "name": "Create event (modeled)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Authorization", "value": "{{accessToken}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "graphql",
              "graphql": {
                "query": "mutation CreateEvent($input: EventInput!) {\n  createEvent(input: $input) {\n    id\n    title\n    slug\n  }\n}",
                "variables": "{\n  \"input\": {\n    \"title\": \"My Event\",\n    \"format\": \"HYBRID\"\n  }\n}"
              }
            },
            "url": { "raw": "{{contentEndpoint}}", "host": ["{{contentEndpoint}}"] },
            "description": "Representative create-event mutation. Mutation name/input are modeled - verify against the Reference."
          }
        }
      ]
    },
    {
      "name": "Exhibitor Leads API",
      "item": [
        {
          "name": "My exhibitors (booths)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Authorization", "value": "{{accessToken}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "graphql",
              "graphql": {
                "query": "query MyExhibitors {\n  myExhibitors {\n    id\n    name\n    events { id title }\n  }\n}",
                "variables": "{}"
              }
            },
            "url": { "raw": "{{leadsEndpoint}}", "host": ["{{leadsEndpoint}}"] },
            "description": "List booths the exhibitor token can access. Grounded in Swapcard Leads docs."
          }
        },
        {
          "name": "My leads (export)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Authorization", "value": "{{accessToken}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "graphql",
              "graphql": {
                "query": "query MyLeads($eventId: ID!, $exhibitorId: ID!, $first: Int, $after: String) {\n  myLeads(eventId: $eventId, exhibitorId: $exhibitorId, first: $first, after: $after) {\n    pageInfo { hasNextPage endCursor }\n    nodes {\n      id\n      connectedAt\n      isScanned\n      rating\n      note\n      target {\n        ... on Contact { id firstName lastName email organization }\n        ... on EventPerson { id firstName lastName email organization }\n      }\n    }\n  }\n}",
                "variables": "{\n  \"eventId\": \"\",\n  \"exhibitorId\": \"\",\n  \"first\": 50\n}"
              }
            },
            "url": { "raw": "{{leadsEndpoint}}", "host": ["{{leadsEndpoint}}"] },
            "description": "Export leads with cursor pagination. Grounded in Swapcard Leads docs (pageInfo, nodes, rating, note, target)."
          }
        },
        {
          "name": "Scan badges",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Authorization", "value": "{{accessToken}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "graphql",
              "graphql": {
                "query": "mutation ScanBadges($eventId: ID!, $exhibitorId: ID!, $badges: [BadgeScanInput!]!) {\n  scanBadges(eventId: $eventId, exhibitorId: $exhibitorId, badges: $badges) {\n    id\n    rating\n    note\n    target {\n      ... on Contact { id firstName lastName }\n      ... on EventPerson { id firstName lastName }\n    }\n  }\n}",
                "variables": "{\n  \"eventId\": \"\",\n  \"exhibitorId\": \"\",\n  \"badges\": [\n    { \"badgeId\": \"\", \"rating\": \"WARM\", \"note\": \"\" }\n  ]\n}"
              }
            },
            "url": { "raw": "{{leadsEndpoint}}", "host": ["{{leadsEndpoint}}"] },
            "description": "Scan badges to create leads. Grounded in Swapcard Leads docs (scanBadges returns connection { id, rating, note, target })."
          }
        }
      ]
    }
  ]
}