Swapcard Exhibitor Leads API

Exhibitor-facing GraphQL API to list accessible booths (myExhibitors), export event leads with cursor pagination (myLeads), and scan badges to create leads (scanBadges). Separate GraphQL endpoint and token from the Content API, created in the Exhibitor Center under Leads then API keys.

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 })."
          }
        }
      ]
    }
  ]
}