Look up a contact by handle or id, or find agents by task
Send a handle to look up one active contact: a person resolves agents; an agent resolves people and agents. Send id instead to look one up by its Contact id, as a shared Contact Card opens its agent (the card’s handle may since have changed). Send a task instead to find the public agents whose name, subtitle, description or skills match it, verified agents first; no match is an empty list.
POST
/
v1
/
contacts
/
lookup
Look up a contact by handle or id, or find agents by task
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Relay","description":"Relay API v1 documentation.","colors":{"primary":"#006BE6","light":"#4DA3FF","dark":"#007EFF"},"logo":{"light":"https://mintcdn.com/relay-staging/fjL9_TNOlSXF6Cqt/logo/light.png?fit=max\u0026auto=format\u0026n=fjL9_TNOlSXF6Cqt\u0026q=85\u0026s=66c2d390ee2afe0b0d1d99bc84b1ca0d","dark":"https://mintcdn.com/relay-staging/YFXuCpEIcllu8dZZ/logo/dark.png?fit=max\u0026auto=format\u0026n=YFXuCpEIcllu8dZZ\u0026q=85\u0026s=7c2ce728bd59af19440a86a1e1235c16","href":"/"},"favicon":"https://mintcdn.com/relay-staging/ACSI-_boGHGW-2RY/favicon-staging.png?fit=max\u0026auto=format\u0026n=ACSI-_boGHGW-2RY\u0026q=85\u0026s=55869334cfb76b3c7e5ff51626edddb8","api":{"params":{"expanded":"closed"},"playground":{"display":"simple"},"examples":{"defaults":"required","languages":["curl"]}},"appearance":{"default":"system","strict":false},"navbar":{"links":[{"icon":"copy","href":"/integrations/agent-prompt#relay-agent-prompt","label":"Copy agent prompt"}],"primary":{"type":"button","label":"Console","href":"https://console.staging.relayapp.im"}},"footer":{"socials":{"website":"https://relayapp.im","github":"https://github.com/relaymessenger"}},"seo":{"metatags":{"og:image":"https://docs.staging.relayapp.im/images/og-image.png","twitter:image":"https://docs.staging.relayapp.im/images/og-image.png","twitter:card":"summary_large_image"}},"fonts":{"family":"Figtree"},"contextual":{"options":["copy","view"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"relay-staging","hasAudioNarration":false,"actualSubdomain":"relay-staging","customDomains":["docs.staging.relayapp.im"],"gitSource":{"type":"github","owner":"relaymessenger","repo":"relay-docs","deployBranch":"staging","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ad9bfcb9679105657d485cb","collectionId":"6736b8e2-1e01-4508-8c21-19c70f62684f","liveDeploymentHistoryId":"6ad9bfcb9679105657d485cb","schemaVersion":"v3"},"entitlements":{},"buildId":"6ad9bfcb9679105657d485cb","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"Guides","count":102},{"language":"default","tag":"CLI","count":92},{"language":"default","tag":"API Reference","count":68},{"language":"default","tag":"Chats","count":54},{"language":"default","tag":"Agents","count":28},{"language":"default","tag":"Webhook Events","count":28},{"language":"default","tag":"Error Codes","count":23},{"language":"default","tag":"Calls","count":20},{"language":"default","tag":"2xxx — Resource errors","count":19},{"language":"default","tag":"Webhooks","count":18}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"@keyframes buttons-browser-rise{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes selection-appear{0%{opacity:0}to{opacity:1}}@keyframes selection-rise{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}:root{--relay-brand-blue:#0b75ff}html.dark img[src*=\"/images/brands/cline.svg\"],html.dark img[src*=\"/images/brands/elevenlabs.svg\"],html.dark img[src*=\"/images/brands/openai.svg\"],html.dark img[src*=\"/images/brands/opencode.svg\"],html.dark img[src*=\"/images/brands/pipecat.svg\"],html.dark img[src*=\"/images/brands/vercel.svg\"]{filter:invert(1)}html.dark img[src*=\"/images/brands/livekit.svg\"]{background:#fff;border-radius:3px}@media (min-width:600px){#navbar div.flex-1:has(>a>img.nav-logo){flex:0 0 auto!important}#navbar nav[aria-label=Main]{justify-content:flex-start!important}}#navbar div.absolute.w-full.h-full.border-b,#navbar>div.border-b{border-bottom-width:0}[data-component-part=scroll-area-scrollbar]{background-color:transparent}html{scrollbar-width:thin;scrollbar-color:#d4d4d4 transparent}html.dark{scrollbar-color:#525252 transparent}.hero-art{display:block}.hero-art>svg{display:block;width:100%;height:auto}.dark .hero-art-light,.hero-art-dark{display:none}.dark .hero-art-dark{display:block}.frame:has(>.relay-preview){padding:0;background:0 0;border:0;box-shadow:none;border-radius:12px}.frame:has(>.relay-preview)>.absolute.inset-0{display:none}.frame:has(>.relay-preview)>figcaption{margin-top:8px;padding:0 8px;color:rgb(var(--gray-500))}.dark .frame:has(>.relay-preview)>figcaption{color:rgb(var(--gray-400))}.relay-preview{position:relative;background:#fff;color:#000}.dark .relay-preview{background:#000;color:#fff}.relay-preview>*{width:100%;min-width:0}.relay-preview-reset{position:absolute;top:8px;right:8px;z-index:3;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;margin:0;padding:0;border:0;border-radius:8px;background:0 0;color:rgb(var(--gray-400));cursor:pointer;transition:color .15s ease-in-out,background-color .15s ease-in-out}.relay-preview-reset:hover{color:rgb(var(--gray-600));background:rgb(var(--gray-100))}.dark .relay-preview-reset{color:rgb(var(--gray-500))}.dark .relay-preview-reset:hover{color:rgb(var(--gray-300));background:rgb(255 255 255/.1)}.relay-preview-reset:focus-visible{outline:2px solid currentColor;outline-offset:2px}.relay-preview-reset svg.icon{background-color:currentColor}.relay-preview-bar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;padding:0 12px 16px}.relay-preview-seg{display:inline-flex;flex-wrap:wrap;justify-content:center;padding:2px;border-radius:9px;background:rgb(var(--gray-100))}.dark .relay-preview-seg{background:rgb(255 255 255/.08)}.relay-preview-seg button{margin:0;padding:3px 10px;border:0;border-radius:7px;background:0 0;color:rgb(var(--gray-500));font:inherit;font-size:12px;font-weight:500;line-height:18px;white-space:nowrap;cursor:pointer;transition:color .15s ease-in-out,background-color .15s ease-in-out}.relay-preview-seg button:hover{color:rgb(var(--gray-800))}.relay-preview-seg button[aria-pressed=true]{background:#fff;color:rgb(var(--gray-900));box-shadow:0 1px 2px rgb(0 0 0/.1),0 0 0 .5px rgb(0 0 0/.06)}.dark .relay-preview-hint,.dark .relay-preview-seg button{color:rgb(var(--gray-400))}.dark .relay-preview-seg button:hover{color:rgb(var(--gray-200))}.dark .relay-preview-seg button[aria-pressed=true]{background:rgb(255 255 255/.16);color:#fff;box-shadow:none}.relay-preview-seg button:focus-visible{outline:2px solid currentColor;outline-offset:1px}.relay-preview-hint{color:rgb(var(--gray-500));font-size:12px;line-height:18px}.buttons-preview-frame{position:relative;overflow:hidden}.buttons-preview-stage{display:flex;flex-direction:column;box-sizing:border-box;max-width:402px;margin:0 auto;padding:16px}.buttons-preview-message{display:flex;flex-direction:column;align-self:flex-start;gap:8px;width:260px;max-width:100%}.selection-preview .buttons-preview-message{align-self:stretch;width:auto}.buttons-preview-text{isolation:isolate;padding:10px 14px;border-radius:20px;background:#f1f3f5;color:#111827;font-size:17px;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere}.dark .buttons-preview-text{background:#242b36;color:#f3f4f6}.buttons-preview-text.has-tail{position:relative;margin-bottom:7px}.buttons-preview-text-tail{position:absolute;left:0;top:calc(100% - 16px);z-index:-1;fill:#f1f3f5}.dark .buttons-preview-text-tail{fill:#242b36}.buttons-preview-stack{display:flex;flex-direction:column;align-self:flex-start;gap:4px;width:75%;max-width:75%}.buttons-preview-pill{box-sizing:border-box;display:flex;justify-content:space-between;align-items:center;gap:5px;width:100%;min-height:48px;padding:12px 16px 12px 20px;border-radius:24px;background:#eef5ff;color:#0b75ff;font-weight:600;font-size:17px;line-height:24px;font-family:-apple-system,BlinkMacSystemFont,\"SF Pro Text\",system-ui,sans-serif}.dark .buttons-preview-pill{background:#101e33;color:#6fb0ff}.buttons-preview-action{border:0;text-align:left;cursor:pointer;transition:background-color .2s ease-in-out,transform .15s ease-out}.buttons-preview-action:active{transform:scale(.97);opacity:1}.buttons-preview-action:focus-visible{outline:2px solid currentColor;outline-offset:3px}.buttons-reply{margin-top:8px;animation:selection-appear .2s ease-in-out}.buttons-reply svg{max-width:100%;height:auto}.buttons-preview-own,.buttons-reply{align-self:flex-end;max-width:100%}.buttons-preview-arrow{flex:none;width:1em;height:1em;font-size:.72em;line-height:1}.buttons-preview-tap path{fill:#0b75ff}.buttons-preview-tap text,.buttons-url-preview{font-family:-apple-system,BlinkMacSystemFont,\"SF Pro Text\",\"Inter\",system-ui,sans-serif}.buttons-preview-tap text{fill:#fff;font-size:17px}.buttons-preview.is-browser-open .buttons-preview-frame{min-height:440px}.buttons-url-preview{position:absolute;inset:0;display:flex;flex-direction:column;background:#fff;color:#111827;animation:buttons-browser-rise .28s ease-out}.dark .buttons-url-preview{background:#000;color:#f3f4f6}.buttons-browser-bar{flex:none;display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:4px;padding:10px 8px;background:#f2f2f7;border-bottom:1px solid #e5e5ea}.dark .buttons-browser-bar{background:#1c1c1e;border-bottom-color:#2c2c2e}.buttons-url-close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin:0 auto;padding:0;border:0;border-radius:16px;background:#e3e3e8;color:#3c3c43;cursor:pointer;transition:transform .15s ease-out}.dark .buttons-url-close{background:#2c2c2e;color:#ebebf5}.buttons-url-close:active{transform:scale(.94)}.buttons-url-close:focus-visible{outline:2px solid #0b75ff;outline-offset:2px}.buttons-url-close svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.buttons-browser-address{display:flex;align-items:center;justify-content:center;gap:5px;min-width:0;height:34px;padding:0 12px;border-radius:12px;background:#e3e3e8;font-size:14px;font-weight:500}.dark .buttons-browser-address{background:#2c2c2e}.buttons-browser-address span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buttons-browser-address svg{flex:none;width:10px;height:12px;fill:none;stroke:currentColor;stroke-width:1.4}.buttons-browser-reload,.buttons-browser-toolbar svg{fill:none;stroke:#0b75ff;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.buttons-browser-reload{justify-self:center;width:16px;height:16px}.buttons-browser-page{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:24px;text-align:center}.buttons-url-caption{font-size:12px;color:#68717e}.dark .buttons-browser-note,.dark .buttons-url-caption{color:#a0a7b2}.buttons-url-address{font-size:15px;font-weight:600;overflow-wrap:anywhere}.buttons-browser-note{max-width:240px;font-size:13px;color:#68717e}.buttons-browser-toolbar{flex:none;display:flex;justify-content:space-around;padding:10px 8px 14px;background:#f2f2f7;border-top:1px solid #e5e5ea}.dark .buttons-browser-toolbar{background:#1c1c1e;border-top-color:#2c2c2e}.buttons-browser-toolbar svg{width:22px;height:22px}.buttons-browser-toolbar svg.is-disabled{stroke:#c7c7cc}.dark .buttons-browser-toolbar svg.is-disabled{stroke:#48484a}.selection-preview.is-sheet-open .buttons-preview-frame{min-height:400px}.selection-answer,.selection-prompt{display:block;align-self:flex-start;max-width:100%;margin:0;padding:0;border:0;background:0 0;cursor:pointer;transition:transform .15s ease-out}.selection-answer{align-self:flex-end;animation:selection-appear .2s ease-in-out}.selection-answer:active,.selection-prompt:active{transform:scale(.97);opacity:1}.selection-answer:focus-visible,.selection-prompt:focus-visible,.selection-send:focus-visible,.selection-sheet-grabber:focus-visible,.selection-sheet-option:focus-visible{outline:2px solid #0b75ff;outline-offset:3px}.dark .selection-answer:focus-visible,.dark .selection-prompt:focus-visible,.dark .selection-send:focus-visible,.dark .selection-sheet-grabber:focus-visible,.dark .selection-sheet-option:focus-visible{outline-color:#6fb0ff}.selection-card{display:block;max-width:100%;height:auto;font-family:-apple-system,BlinkMacSystemFont,\"SF Pro Text\",\"Inter\",system-ui,sans-serif}.selection-card-leading .selection-card-shape{fill:#f1f3f5}.dark .selection-card-leading .selection-card-shape{fill:#242b36}.selection-card-trailing .selection-card-shape{fill:#0b75ff}.selection-card-title{font-size:15px;font-weight:600}.selection-card-subtitle{font-size:13px}.selection-card-label{font-size:15px}.selection-card-leading .selection-card-label,.selection-card-leading .selection-card-title{fill:#111827}.selection-card-leading .selection-card-subtitle{fill:#68717e}.selection-card-leading .selection-card-mark{stroke:#111827}.selection-card-leading .selection-card-chevron{stroke:#68717e}.dark .selection-card-leading .selection-card-label,.dark .selection-card-leading .selection-card-title{fill:#f3f4f6}.dark .selection-card-leading .selection-card-subtitle{fill:#a0a7b2}.dark .selection-card-leading .selection-card-mark{stroke:#f3f4f6}.dark .selection-card-leading .selection-card-chevron{stroke:#a0a7b2}.selection-card-trailing .selection-card-label,.selection-card-trailing .selection-card-title{fill:#fff}.selection-card-trailing .selection-card-mark{stroke:#fff}.selection-card-trailing .selection-card-chevron{stroke:rgba(255,255,255,.75)}.selection-card-chevron,.selection-card-mark{fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.selection-sheet-layer,.selection-sheet-scrim{position:absolute;inset:0}.selection-sheet-scrim{background:rgba(15,23,42,.38)}.selection-sheet{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;max-height:100%;border-radius:16px 16px 11px 11px;background:#fff;color:#111827;font-family:-apple-system,BlinkMacSystemFont,\"SF Pro Text\",\"Inter\",system-ui,sans-serif;animation:selection-rise .22s ease-out}.dark .selection-sheet{background:#151a23;color:#f3f4f6}.selection-sheet-grabber{flex:none;align-self:center;width:56px;height:20px;margin:0;padding:0;border:0;background:0 0;cursor:pointer}.selection-sheet-grabber::before{content:\"\";display:block;width:36px;height:5px;margin:7px auto 0;border-radius:3px;background:#c7c7cc}.dark .selection-sheet-grabber::before{background:#48484a}.selection-sheet-title{flex:none;padding:12px 24px;font-size:22px;font-weight:700;line-height:1.2}.selection-sheet-list{flex:1 1 auto;min-height:0;max-height:260px;overflow-y:auto;padding-bottom:76px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 14px,#000 calc(100% - 56px),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 14px,#000 calc(100% - 56px),transparent 100%)}.selection-sheet.is-read-only .selection-sheet-list{padding-bottom:26px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 14px);mask-image:linear-gradient(to bottom,transparent 0,#000 14px)}.selection-sheet-option{position:relative;box-sizing:border-box;display:flex;align-items:center;gap:12px;width:100%;margin:0;padding:14px 20px;border:0;background:0 0;color:inherit;font:inherit;font-size:16px;text-align:left;cursor:pointer}.selection-sheet-option+.selection-sheet-option::before{content:\"\";position:absolute;top:0;left:52px;right:0;height:1px;background:#e5e7eb}.dark .selection-sheet-option+.selection-sheet-option::before{background:#2b323d}.selection-sheet-option:disabled{cursor:default}.selection-sheet-label{overflow-wrap:anywhere;font-weight:600}.selection-box{flex:none;width:22px;height:22px}.selection-box circle{fill:transparent;stroke:#b9bec7;stroke-width:1.5;transition:fill .2s ease-in-out,stroke .2s ease-in-out}.dark .selection-box circle{stroke:#6b7280}.selection-box path{fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:0;transition:opacity .2s ease-in-out}.selection-sheet-option[aria-checked=true] .selection-box circle{fill:#0b75ff;stroke:#0b75ff}.selection-sheet-option[aria-checked=true] .selection-box path{opacity:1}.selection-sheet-footer{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:center;padding:0 0 16px;pointer-events:none}.selection-send{box-sizing:border-box;display:block;width:calc(50% + 16px);height:48px;margin:0;padding:0;border:0;border-radius:24px;background:#0b75ff;color:#fff;box-shadow:0 6px 18px rgba(15,23,42,.16),inset 0 1px 0 rgba(255,255,255,.35);pointer-events:auto;font-family:inherit;font-size:17px;font-weight:600;opacity:1;cursor:pointer;transition:background-color .2s ease-in-out,color .2s ease-in-out,transform .15s ease-out}.selection-send:active:not(:disabled){transform:scale(.96);opacity:1}.selection-send:disabled{background:#eceef1;color:rgba(60,60,67,.3);opacity:1;cursor:default}.dark .selection-send:disabled{background:#2c2c2e;color:rgba(235,235,245,.3)}.native-dialog,.native-preview{--app-blue:var(--relay-brand-blue);--app-incoming:#e9e9e9;--app-ink:#000;--app-secondary:rgba(60,60,67,.6);--app-group:#f2f2f7;--app-field:#fff;--app-line:rgba(60,60,67,.18);color:var(--app-ink);font:17px/1.3 -apple-system,BlinkMacSystemFont,\"SF Pro Text\",system-ui,sans-serif}.dark .native-dialog,.dark .native-preview{--app-blue:#007eff;--app-incoming:#2c2c2e;--app-ink:#fff;--app-secondary:rgba(235,235,245,.6);--app-group:#000;--app-field:#1c1c1e;--app-line:rgba(84,84,88,.65)}.native-dialog *,.native-preview *{box-sizing:border-box}.native-dialog button,.native-preview button{font:inherit;cursor:pointer}.native-dialog :focus-visible,.native-preview button:focus-visible{outline:2px solid var(--app-blue);outline-offset:3px}.native-preview{position:relative}.native-transcript{display:flex;flex-direction:column;gap:8px;max-width:402px;margin:0 auto;padding:16px;box-sizing:border-box}.native-text{align-self:flex-start;max-width:calc(100% - 94px);border-radius:20px;padding:10px 14px;background:var(--app-incoming);overflow-wrap:anywhere}.native-capsule{border:0;border-radius:999px;padding:8px 12px;min-height:40px;width:100%;background:color-mix(in srgb,var(--app-blue) 15%,transparent);color:var(--app-blue);font-weight:600!important;line-height:22px}.form-calendar-grid button[aria-pressed=true],.native-capsule.is-primary{background:var(--app-blue);color:#fff}.native-capsule:active{opacity:.7;transform:scale(.97)}.native-capsule:disabled{opacity:.35;cursor:default}.rich-shelf{display:flex;align-items:stretch;gap:8px;padding-bottom:7px}.rich-shelf.is-carousel{scroll-behavior:smooth;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:thin}.rich-balloon{position:relative;isolation:isolate;flex:0 0 min(350px,calc(100% - 94px));min-width:0;scroll-snap-align:start}.rich-balloon.is-small{flex-basis:min(180px,calc(100% - 94px))}.rich-card,.rich-media{background:var(--app-incoming)}.rich-card{display:flex;flex-direction:column;height:100%;overflow:hidden;border-radius:18px}.rich-media{display:block;flex-shrink:0;width:100%;padding:0;border:0}.rich-media:focus-visible{outline-offset:-3px}.rich-media img{display:block;width:100%;height:100%;object-fit:cover;margin:0;border-radius:0}.rich-copy{padding:16px 16px 0}.rich-media+.rich-copy{padding-top:12px}.rich-title{font-size:17px;font-weight:600;overflow-wrap:anywhere}.rich-description{margin-top:2px;color:var(--app-secondary);overflow-wrap:anywhere}.rich-suggestions{display:flex;flex-direction:column;gap:8px;padding:12px 16px 16px;margin-top:auto}.native-tail{position:absolute;left:0;bottom:-7px;width:23px;height:24px;fill:var(--app-incoming);z-index:-1}.rich-followups{display:flex;flex-direction:column;gap:4px;width:calc((100% - 94px)*.75)}.rich-followups .native-capsule{min-height:48px;text-align:left;padding:12px 16px 12px 20px}.rich-scroll-controls{display:flex;justify-content:center;gap:12px}.rich-scroll-controls button{background:0 0;border:0;color:var(--app-blue);width:32px;height:28px;border-radius:8px;font-size:24px}.native-replies{display:flex;flex-direction:column;gap:8px}.native-replies:empty{display:none}.native-preview .buttons-preview-tap path,.native-preview .selection-card-trailing .selection-card-shape{fill:var(--app-blue)}.native-preview .selection-card-leading .selection-card-shape{fill:var(--app-incoming)}.native-preview .selection-card-leading .selection-card-title{fill:var(--app-ink)}.native-preview .selection-card-leading .selection-card-subtitle{fill:var(--app-secondary)}.native-preview .selection-card-leading .selection-card-chevron{stroke:var(--app-secondary)}.form-preview .selection-card-leading .selection-card-subtitle{fill:rgba(60,60,67,.72)}.dark .form-preview .selection-card-leading .selection-card-subtitle{fill:rgba(235,235,245,.7)}.form-preview .selection-card-trailing .selection-card-subtitle{fill:rgba(255,255,255,.8)}.dark .form-preview .selection-card-trailing .selection-card-subtitle{fill:rgba(255,255,255,.6)}.rich-followups .native-capsule{background:#eef5ff;color:#0b75ff}.dark .rich-followups .native-capsule{background:#101e33;color:#6fb0ff}.native-form-answer,.native-form-prompt{display:block;width:fit-content;max-width:100%;background:0 0;border:0;padding:0}.native-form-prompt{align-self:flex-start}.native-form-answer{align-self:flex-end}.native-form-answer svg,.native-form-prompt svg{display:block;max-width:100%;height:auto}.native-response{padding:8px 16px;font-size:13px}.native-response summary{cursor:pointer;color:var(--app-secondary)}.native-response pre{font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;max-height:220px;overflow:auto}.native-dialog{width:min(402px,calc(100vw - 24px));max-height:min(680px,90dvh);padding:0;border:0;border-radius:28px;background:var(--app-field);margin:auto;box-shadow:0 20px 80px #0003}.native-dialog::backdrop{background:#0006}.native-dialog[open]{display:flex;flex-direction:column}.native-sheet-bar{flex-shrink:0;display:grid;grid-template-columns:1fr 32px;align-items:center;gap:8px;padding:12px 16px;font-size:17px}.native-sheet-bar button{width:32px;height:32px;padding:0;border:0;border-radius:50%;background:var(--app-incoming);color:var(--app-ink);font-size:24px;line-height:1}.native-sheet-bar .native-back{color:var(--app-blue);background:0 0;font-size:32px}.rich-photo{width:100%;min-height:0;object-fit:contain;margin:0}.rich-url{padding:24px;overflow-wrap:anywhere}.native-form-content h3,.rich-url p{color:var(--app-secondary);font-size:15px}.native-form-sheet{background:var(--app-group);height:min(620px,90dvh)}.native-form-sheet .native-sheet-bar{grid-template-columns:32px 1fr 32px;text-align:center}.native-grabber{flex-shrink:0;width:36px;height:5px;border-radius:3px;background:var(--app-line);margin:8px auto 0}.native-form-content{overflow-y:auto;flex:1;min-height:0;padding:8px 20px 20px}.native-form-content section{margin:16px 0 24px}.native-form-content h3{display:flex;justify-content:space-between;gap:8px;margin:0 16px 7px;font-size:13px;font-weight:400;text-transform:uppercase}.native-form-content h3 span:last-child:not(:first-child){text-transform:none}.native-field-group{background:var(--app-field);border-radius:12px;overflow:hidden}.native-field-group input,.native-field-group textarea{display:block;width:100%;border:0;border-radius:0;padding:12px 16px;margin:0;background:0 0;color:var(--app-ink);font:inherit;resize:vertical}.native-field-group input::placeholder,.native-field-group textarea::placeholder{color:var(--app-secondary)}.native-field-group:focus-within{outline:2px solid var(--app-blue);outline-offset:2px}.native-field-group :focus-visible{outline-offset:-3px}.form-choice,.form-date,.form-picker{display:flex;width:100%;min-height:44px;gap:8px;align-items:center;justify-content:space-between;border:0;padding:10px 16px;background:0 0;color:var(--app-ink);text-align:left}.form-choice+.form-choice{border-top:.5px solid var(--app-line)}.form-check{color:var(--app-blue);font-weight:600}.form-switch{display:flex;align-items:center;width:51px;height:31px;flex-shrink:0;border-radius:16px;padding:2px;background:var(--app-line)}.form-switch>span{display:block;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003}.form-switch.is-on{background:var(--app-blue);justify-content:flex-end}.form-picker select{max-width:60%;min-width:64px;border:0;color:var(--app-blue);background:0 0;font:inherit}.form-date>span:last-child{padding:6px 11px;border-radius:999px;background:var(--app-incoming);color:var(--app-blue)}.form-calendar{padding:12px 16px}.form-calendar-heading{display:flex;align-items:center;gap:12px}.form-calendar-heading strong{flex:1;font-size:17px}.form-calendar-heading button{background:0 0;color:var(--app-blue);border:0;font-size:28px}.form-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center;margin-top:12px}.form-calendar-grid>span{font-size:12px;color:var(--app-secondary)}.form-calendar-grid button{aspect-ratio:1;padding:0;border:0;border-radius:50%;color:var(--app-ink);background:0 0}.form-calendar button:disabled{opacity:.25;cursor:default}.form-clear-date{display:block;border:0;background:0 0;color:#ff3b30;padding:10px 16px}.form-answer-row{white-space:pre-wrap;overflow-wrap:anywhere}.form-answer-row+.form-answer-row{border-top:.5px solid var(--app-line)}.form-answer-row>span{display:block;font-size:15px;color:var(--app-secondary);margin-bottom:5px}.form-answer-row,.form-intro{padding:12px 16px}.form-hint{color:var(--app-secondary);font-size:13px;padding:0 16px}.native-form-bottom{display:flex;justify-content:center;padding:12px 16px 16px;flex-shrink:0}.native-form-bottom .native-capsule{min-height:50px;width:calc(50% + 32px);max-width:100%}[data-component-part=card-icon]:has(img[src*=\"/images/brands/\"]){flex-shrink:0}@media (prefers-reduced-motion:reduce){.buttons-preview *,.buttons-preview ::before{transition:none!important;animation:none!important}.buttons-preview-action:active,.selection-answer:active,.selection-prompt:active,.selection-send:active:not(:disabled){transform:none}.rich-shelf.is-carousel{scroll-behavior:auto}.native-capsule:active{transform:none!important}}.a2-balloon{align-self:flex-start;width:min(350px,calc(100% - 40px))}.a2-card{padding:16px;background:var(--app-incoming);overflow:hidden}.a2-col,.a2-row{display:flex;flex-direction:column;gap:8px}.a2-row{flex-direction:row}.a2-text{line-height:1.25;overflow-wrap:anywhere}.a2-badge,.a2-text.is-caption{font-size:13px;color:var(--app-secondary)}.a2-badge{display:inline-block;padding:4px 10px;border-radius:999px;font-weight:700;background:color-mix(in srgb,var(--app-blue) 15%,transparent);color:var(--app-blue);white-space:nowrap}.a2-divider{border:0;border-top:1px solid var(--app-line);margin:4px 0}.native-preview .a2-button{border:0;border-radius:999px;min-height:44px;width:100%;padding:10px 16px;background:var(--app-blue);color:#fff;font-weight:600;font-size:17px}.native-preview .a2-button.is-borderless{background:0 0;color:var(--app-blue)}.a2-slider{display:flex;flex-direction:column;gap:6px}.a2-slider-head{display:flex;justify-content:space-between;color:var(--app-secondary);font-size:15px}.a2-slider input{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:2px;margin:10px 0;background:linear-gradient(to right,var(--app-blue) var(--a2-fill),var(--app-line) var(--a2-fill))}.a2-slider input::-webkit-slider-thumb{-webkit-appearance:none;width:36px;height:24px;border-radius:12px;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.25)}.a2-slider input::-moz-range-thumb{width:36px;height:24px;border-radius:12px;border:0;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.25)}.native-preview .a2-check,.native-preview .a2-choice{display:flex;align-items:center;gap:10px;border:0;background:0 0;color:inherit;padding:4px 0;text-align:left;font-size:17px}.a2-box{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;border:2px solid var(--app-secondary);color:#fff;font-size:14px;font-weight:700}.a2-check.is-on .a2-box{background:var(--app-blue);border-color:var(--app-blue)}.a2-check.is-on span:last-child{text-decoration:line-through;color:var(--app-secondary)}.a2-choices{display:flex;flex-direction:column;gap:2px}.a2-dot{width:22px;height:22px;border-radius:50%;border:2px solid var(--app-secondary);flex-shrink:0}.a2-choice.is-on .a2-dot{border:7px solid var(--app-blue)}.a2-chart{display:flex;align-items:flex-end;gap:12px;height:160px;padding-top:8px}.a2-bar-slot{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;font-size:12px;color:var(--app-secondary)}.a2-bar{width:100%;background:var(--app-blue);border-radius:4px 4px 0 0;min-height:2px}.a2-map{position:relative;height:180px;border-radius:12px;background:#dfe9d8;overflow:hidden}.dark .a2-map{background:#26322b}.native-preview .a2-pin{position:absolute;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;border:3px solid #fff;background:#ff3b30;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.3)}.native-preview .a2-pin.is-on{transform:scale(1.3)}.a2-pin-detail{display:flex;flex-direction:column;margin-top:8px;font-size:15px}.a2-pin-detail span{color:var(--app-secondary)}.a2-countdown{font-size:34px;font-weight:600;font-variant-numeric:tabular-nums}.a2-image{height:140px;border-radius:12px;background:var(--app-line)}.a2-row>.a2-text{flex:1 1 auto;overflow-wrap:break-word}.a2-row>.a2-badge{flex:0 0 auto}"}],"page":{"pagePath":"api-reference/contacts/look-up-a-contact-by-handle","slug":"/api-reference/contacts/look-up-a-contact-by-handle","pageMetadata":{"title":"Look up a contact by handle or id, or find agents by task","description":"Send a handle to look up one active contact: a person resolves agents; an agent resolves people and agents. Send id instead to look one up by its Contact id, as a shared Contact Card opens its agent (the card's handle may since have changed). Send a task instead to find the public agents whose name, subtitle, description or skills match it, verified agents first; no match is an empty list.","deprecated":null,"version":null,"sidebarTitle":"Look up","openapi":"/api-reference/openapi.mint.yaml post /v1/contacts/lookup","href":"/api-reference/contacts/look-up-a-contact-by-handle","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Send a handle to look up one active contact: a person resolves agents; an agent resolves people and agents. Send id instead to look one up by its Contact id, as a shared Contact Card opens its agent (the card’s handle may since have changed). Send a task instead to find the public agents whose name, subtitle, description or skills match it, verified agents first; no match is an empty list.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Look up a contact by handle or id, or find agents by task","description":"Send a handle to look up one active contact: a person resolves agents; an agent resolves people and agents. Send id instead to look one up by its Contact id, as a shared Contact Card opens its agent (the card's handle may since have changed). Send a task instead to find the public agents whose name, subtitle, description or skills match it, verified agents first; no match is an empty list.","deprecated":null,"version":null,"sidebarTitle":"Look up","openapi":"/api-reference/openapi.mint.yaml post /v1/contacts/lookup","href":"/api-reference/contacts/look-up-a-contact-by-handle","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/relay-staging/603be6d9fda39113/agent-prompt.js","/_mintlify/custom/relay-staging/e136a31f650b5647/posthog.js"],"openApiReferenceData":{"operation":{"operationId":"lookupContact","x-mint":{"metadata":{"sidebarTitle":"Look up"},"href":"/api-reference/contacts/look-up-a-contact-by-handle"},"summary":"Look up a contact by handle or id, or find agents by task","description":"Send a handle to look up one active contact: a person resolves agents; an agent resolves people and agents. Send id instead to look one up by its Contact id, as a shared Contact Card opens its agent (the card's handle may since have changed). Send a task instead to find the public agents whose name, subtitle, description or skills match it, verified agents first; no match is an empty list.","tags":["Contact Card"],"security":["83accb1c-b68b-4c9b-b6e2-87a3bc219b6d"],"requestBody":"1756befb-8176-4208-83e5-062c07fd016b","responses":{"200":"3d4cb756-98ec-4796-978d-266c29cea7a1","400":"f82f687c-97fc-4386-8806-7684d47672fa","401":"df28bc5a-b07f-4e16-a780-1ca03cf135d6","404":"b8675814-d829-4aff-8625-c5978627b6e3","422":"7a4a128b-face-4677-8b0c-6b9cf7d6fda9","500":"e49bd831-e6c3-4a7c-a52c-8d60c73b1b1e"},"method":"post","type":"path","servers":["5fe554b7-ad2b-4bee-af8d-aab2bdda93ef"],"path":"/v1/contacts/lookup","baseUrlOptions":["https://api.staging.relayapp.im"],"title":"Look up a contact by handle or id, or find agents by task","codeSamples":[],"requestExampleLanguages":["bash"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["handle"],"properties":{"handle":{"type":"string","minLength":1,"maxLength":255,"description":"Relay Handle, trimmed and lowercased before validation.","isRequired":true,"uniqueKey":"oneOf.0.handle","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["id"],"properties":{"id":{"type":"string","format":"uuid","description":"Contact id, such as a shared Contact Card's id.","isRequired":true,"uniqueKey":"oneOf.1.id","typeLabel":"string\u003cuuid>"}},"additionalProperties":false,"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","required":["task"],"properties":{"task":{"type":"string","minLength":1,"maxLength":200,"description":"What you need done, in plain words.","isRequired":true,"uniqueKey":"oneOf.2.task","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.2","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"handle":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"3d4cb756-98ec-4796-978d-266c29cea7a1":{"description":"The contact for a handle, or the matching public agents for a task","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["contact"],"properties":{"contact":{"type":"object","additionalProperties":false,"required":["id","handle","display_name","kind","image_url","image_color","verified"],"properties":{"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"oneOf.0.contact.id","typeLabel":"string\u003cuuid>"},"handle":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.contact.handle","typeLabel":"string"},"display_name":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.contact.display_name","typeLabel":"string"},"kind":{"type":"string","enum":["user","agent"],"isRequired":true,"uniqueKey":"oneOf.0.contact.kind","typeLabel":"enum\u003cstring>"},"image_url":{"oneOf":[{"type":"string","format":"uri","isRequired":true,"uniqueKey":"oneOf.0.contact.image_url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","isRequired":true,"uniqueKey":"oneOf.0.contact.image_url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.contact.image_url","typeLabel":"string\u003curi> | null"},"image_color":{"oneOf":[{"type":"string","pattern":"^[0-9A-F]{6}$","isRequired":true,"uniqueKey":"oneOf.0.contact.image_color.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[0-9A-F]{6}$","isRequired":true,"uniqueKey":"oneOf.0.contact.image_color.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.contact.image_color","typeLabel":"string | null"},"verified":{"type":"boolean","isRequired":true,"uniqueKey":"oneOf.0.contact.verified","typeLabel":"boolean"},"name":{"type":"string","description":"The agent's name. Agents only.","uniqueKey":"oneOf.0.contact.name","typeLabel":"string"},"subtitle":{"oneOf":[{"type":"string","maxLength":60,"description":"The one line under the agent's name. Agents only.","uniqueKey":"oneOf.0.contact.subtitle.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":60,"description":"The one line under the agent's name. Agents only.","uniqueKey":"oneOf.0.contact.subtitle.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.contact.subtitle","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","maxLength":2000,"description":"The agent's paragraph. Agents only.","uniqueKey":"oneOf.0.contact.description.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":2000,"description":"The agent's paragraph. Agents only.","uniqueKey":"oneOf.0.contact.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.contact.description","typeLabel":"string | null"},"category":{"oneOf":[{"type":"string","description":"Agents only.","enum":["productivity","business","finance","shopping","travel","health-fitness","lifestyle","social","education","entertainment","utilities","developer-tools"],"uniqueKey":"oneOf.0.contact.category.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Agents only.","uniqueKey":"oneOf.0.contact.category.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.contact.category","typeLabel":"enum\u003cstring> | null"},"skills":{"type":"array","maxItems":10,"items":{"type":"object","description":"One thing the agent does.","additionalProperties":false,"required":["id","name","description","tags","examples"],"properties":{"id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,63}$","isRequired":true,"uniqueKey":"oneOf.0.contact.skills.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":60,"isRequired":true,"uniqueKey":"oneOf.0.contact.skills.items.[INDEX].name","typeLabel":"string"},"description":{"type":"string","minLength":1,"maxLength":300,"isRequired":true,"uniqueKey":"oneOf.0.contact.skills.items.[INDEX].description","typeLabel":"string"},"tags":{"type":"array","maxItems":10,"items":{"type":"string","minLength":1,"maxLength":30,"uniqueKey":"oneOf.0.contact.skills.items.[INDEX].tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.0.contact.skills.items.[INDEX].tags","typeLabel":"string[]"},"examples":{"type":"array","maxItems":5,"items":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"oneOf.0.contact.skills.items.[INDEX].examples.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.0.contact.skills.items.[INDEX].examples","typeLabel":"string[]"}},"uniqueKey":"oneOf.0.contact.skills.items.[INDEX]","typeLabel":"object"},"description":"Agents only.","uniqueKey":"oneOf.0.contact.skills","typeLabel":"object[]"},"visibility":{"type":"string","description":"public agents are listed in the directory and found by task; unlisted agents answer by handle only.","enum":["public","unlisted"],"uniqueKey":"oneOf.0.contact.visibility","typeLabel":"enum\u003cstring>"},"rive":{"oneOf":[{"type":"object","description":"The Rive file this agent shows in its calls, so the app can load it before a call. Null when it has none. Present only when kind is agent.","required":["file","artboard","state_machine","view_model"],"properties":{"file":{"type":"string","format":"uri","description":"The .riv Relay hosts, at a permanent address that never changes its bytes: `\u003ccdn>/rive/\u003ccontact id>/\u003cversion>/file-\u003chash>.riv`.","examples":["https://cdn.relayapp.im/rive/0199a000-0000-7000-8000-00000000000b/1790000000000/file-0123456789abcdef.riv"],"isRequired":true,"uniqueKey":"oneOf.0.contact.rive.oneOf.0.file","typeLabel":"string\u003curi>"},"artboard":{"oneOf":[{"type":"string","maxLength":255,"examples":["Call"],"isRequired":true,"uniqueKey":"oneOf.0.contact.rive.oneOf.0.artboard.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"examples":["Call"],"isRequired":true,"uniqueKey":"oneOf.0.contact.rive.oneOf.0.artboard.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.contact.rive.oneOf.0.artboard","typeLabel":"string | null"},"state_machine":{"oneOf":[{"type":"string","maxLength":255,"examples":["Main"],"isRequired":true,"uniqueKey":"oneOf.0.contact.rive.oneOf.0.state_machine.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"examples":["Main"],"isRequired":true,"uniqueKey":"oneOf.0.contact.rive.oneOf.0.state_machine.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.contact.rive.oneOf.0.state_machine","typeLabel":"string | null"},"view_model":{"oneOf":[{"type":"string","maxLength":255,"examples":["Main"],"isRequired":true,"uniqueKey":"oneOf.0.contact.rive.oneOf.0.view_model.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"examples":["Main"],"isRequired":true,"uniqueKey":"oneOf.0.contact.rive.oneOf.0.view_model.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.contact.rive.oneOf.0.view_model","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"oneOf.0.contact.rive.oneOf.0","typeLabel":"object"},{"type":"null","description":"The Rive file this agent shows in its calls, so the app can load it before a call. Null when it has none. Present only when kind is agent.","uniqueKey":"oneOf.0.contact.rive.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.contact.rive","typeLabel":"object | null"},"creator":{"oneOf":[{"type":"object","description":"Who made the agent: its organization, by the name the organization gave in the Relay Console. Null when the organization has not given a name. Agents only.","required":["kind","name","handle"],"properties":{"kind":{"type":"string","enum":["organization"],"isRequired":true,"uniqueKey":"oneOf.0.contact.creator.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"name":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.contact.creator.oneOf.0.name","typeLabel":"string"},"handle":{"oneOf":[{"type":"string","description":"The maker's Relay Handle. Null until Relay stores one.","isRequired":true,"uniqueKey":"oneOf.0.contact.creator.oneOf.0.handle.oneOf.0","typeLabel":"string"},{"type":"null","description":"The maker's Relay Handle. Null until Relay stores one.","isRequired":true,"uniqueKey":"oneOf.0.contact.creator.oneOf.0.handle.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.contact.creator.oneOf.0.handle","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"oneOf.0.contact.creator.oneOf.0","typeLabel":"object"},{"type":"null","description":"Who made the agent: its organization, by the name the organization gave in the Relay Console. Null when the organization has not given a name. Agents only.","uniqueKey":"oneOf.0.contact.creator.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.contact.creator","typeLabel":"object | null"},"can_message":{"type":"boolean","description":"Handle lookups only. Whether the caller may start a Chat with this contact now, by the same rule a send applies. Reading it changes nothing.","uniqueKey":"oneOf.0.contact.can_message","typeLabel":"boolean"},"timezone":{"oneOf":[{"type":"string","maxLength":64,"examples":["America/Detroit"],"description":"The person's IANA time zone name, as their Relay app last reported it; null until the app reports one. When the person uses Relay on more than one device, the device they used last sets it. Present only when kind is user. Timestamps stay in UTC; use this to read them in the person's local time.","uniqueKey":"oneOf.0.contact.timezone.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":64,"examples":["America/Detroit"],"description":"The person's IANA time zone name, as their Relay app last reported it; null until the app reports one. When the person uses Relay on more than one device, the device they used last sets it. Present only when kind is user. Timestamps stay in UTC; use this to read them in the person's local time.","uniqueKey":"oneOf.0.contact.timezone.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.contact.timezone","typeLabel":"string | null"},"age_range":{"oneOf":[{"type":"string","enum":["under_13","13_15","16_17","18_plus",null],"examples":["18_plus"],"description":"The person's age range, as their Relay app last reported it: from Apple's Declared Age Range, or from a birth year the person gave once (only the range is kept). Null until the app reports one. Present only when kind is user. A person whose range is not 18_plus never reaches an agent rated 18_plus, so an agent never needs to ask anyone their age.","uniqueKey":"oneOf.0.contact.age_range.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["under_13","13_15","16_17","18_plus",null],"examples":["18_plus"],"description":"The person's age range, as their Relay app last reported it: from Apple's Declared Age Range, or from a birth year the person gave once (only the range is kept). Null until the app reports one. Present only when kind is user. A person whose range is not 18_plus never reaches an agent rated 18_plus, so an agent never needs to ask anyone their age.","uniqueKey":"oneOf.0.contact.age_range.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.contact.age_range","typeLabel":"enum\u003cstring> | null"},"links":{"type":"array","maxItems":5,"uniqueItems":true,"items":{"type":"string","format":"uri","maxLength":2048,"pattern":"^https://","uniqueKey":"oneOf.0.contact.links.items.[INDEX]","typeLabel":"string\u003curi>"},"examples":[["https://github.com/ana","https://www.instagram.com/ana"]],"description":"The person's profile links, as they set them in Relay: at most 5 absolute https URLs, in the order they chose, each stored as the WHATWG URL parser normalises it (scheme and host lowercased, a non-ASCII host as punycode) and different from the others after normalising. Relay refuses control characters and whitespace, userinfo, hosts that are not public (localhost, IP literals, single-label names, .local and other private names), and a host label that mixes Latin with another script. Empty when they set none. Present only when kind is user. Relay sends no platform name; read the site from the URL.","uniqueKey":"oneOf.0.contact.links","typeLabel":"string\u003curi>[]"},"about":{"oneOf":[{"type":"string","maxLength":160,"examples":["Builds robots in Ann Arbor."],"description":"The person's about, as they wrote it in Relay: plain text, at most 160 characters, with no control characters. Null when they wrote none. Present only when kind is user.","uniqueKey":"oneOf.0.contact.about.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":160,"examples":["Builds robots in Ann Arbor."],"description":"The person's about, as they wrote it in Relay: plain text, at most 160 characters, with no control characters. Null when they wrote none. Present only when kind is user.","uniqueKey":"oneOf.0.contact.about.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.contact.about","typeLabel":"string | null"},"age_rating":{"type":"string","enum":["everyone","18_plus"],"description":"Who the agent is for, set in the Relay Console. `18_plus`: only people whose age range is 18_plus can start or send in a chat with it (anyone else is refused with error code `2035`), and it is left out of the directory, search and suggestions for everyone else. Agents only.","uniqueKey":"oneOf.0.contact.age_rating","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"oneOf.0.contact","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["contacts"],"properties":{"contacts":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["id","handle","display_name","kind","image_url","image_color","verified"],"properties":{"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"handle":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].handle","typeLabel":"string"},"display_name":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].display_name","typeLabel":"string"},"kind":{"type":"string","enum":["user","agent"],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"image_url":{"oneOf":[{"type":"string","format":"uri","isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].image_url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].image_url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].image_url","typeLabel":"string\u003curi> | null"},"image_color":{"oneOf":[{"type":"string","pattern":"^[0-9A-F]{6}$","isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].image_color.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[0-9A-F]{6}$","isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].image_color.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].image_color","typeLabel":"string | null"},"verified":{"type":"boolean","isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].verified","typeLabel":"boolean"},"name":{"type":"string","description":"The agent's name. Agents only.","uniqueKey":"oneOf.1.contacts.items.[INDEX].name","typeLabel":"string"},"subtitle":{"oneOf":[{"type":"string","maxLength":60,"description":"The one line under the agent's name. Agents only.","uniqueKey":"oneOf.1.contacts.items.[INDEX].subtitle.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":60,"description":"The one line under the agent's name. Agents only.","uniqueKey":"oneOf.1.contacts.items.[INDEX].subtitle.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.contacts.items.[INDEX].subtitle","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","maxLength":2000,"description":"The agent's paragraph. Agents only.","uniqueKey":"oneOf.1.contacts.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":2000,"description":"The agent's paragraph. Agents only.","uniqueKey":"oneOf.1.contacts.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.contacts.items.[INDEX].description","typeLabel":"string | null"},"category":{"oneOf":[{"type":"string","description":"Agents only.","enum":["productivity","business","finance","shopping","travel","health-fitness","lifestyle","social","education","entertainment","utilities","developer-tools"],"uniqueKey":"oneOf.1.contacts.items.[INDEX].category.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Agents only.","uniqueKey":"oneOf.1.contacts.items.[INDEX].category.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.contacts.items.[INDEX].category","typeLabel":"enum\u003cstring> | null"},"skills":{"type":"array","maxItems":10,"items":{"type":"object","description":"One thing the agent does.","additionalProperties":false,"required":["id","name","description","tags","examples"],"properties":{"id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,63}$","isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].skills.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":60,"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].skills.items.[INDEX].name","typeLabel":"string"},"description":{"type":"string","minLength":1,"maxLength":300,"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].skills.items.[INDEX].description","typeLabel":"string"},"tags":{"type":"array","maxItems":10,"items":{"type":"string","minLength":1,"maxLength":30,"uniqueKey":"oneOf.1.contacts.items.[INDEX].skills.items.[INDEX].tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].skills.items.[INDEX].tags","typeLabel":"string[]"},"examples":{"type":"array","maxItems":5,"items":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"oneOf.1.contacts.items.[INDEX].skills.items.[INDEX].examples.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].skills.items.[INDEX].examples","typeLabel":"string[]"}},"uniqueKey":"oneOf.1.contacts.items.[INDEX].skills.items.[INDEX]","typeLabel":"object"},"description":"Agents only.","uniqueKey":"oneOf.1.contacts.items.[INDEX].skills","typeLabel":"object[]"},"visibility":{"type":"string","description":"public agents are listed in the directory and found by task; unlisted agents answer by handle only.","enum":["public","unlisted"],"uniqueKey":"oneOf.1.contacts.items.[INDEX].visibility","typeLabel":"enum\u003cstring>"},"rive":{"oneOf":[{"type":"object","description":"The Rive file this agent shows in its calls, so the app can load it before a call. Null when it has none. Present only when kind is agent.","required":["file","artboard","state_machine","view_model"],"properties":{"file":{"type":"string","format":"uri","description":"The .riv Relay hosts, at a permanent address that never changes its bytes: `\u003ccdn>/rive/\u003ccontact id>/\u003cversion>/file-\u003chash>.riv`.","examples":["https://cdn.relayapp.im/rive/0199a000-0000-7000-8000-00000000000b/1790000000000/file-0123456789abcdef.riv"],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].rive.oneOf.0.file","typeLabel":"string\u003curi>"},"artboard":{"oneOf":[{"type":"string","maxLength":255,"examples":["Call"],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].rive.oneOf.0.artboard.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"examples":["Call"],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].rive.oneOf.0.artboard.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].rive.oneOf.0.artboard","typeLabel":"string | null"},"state_machine":{"oneOf":[{"type":"string","maxLength":255,"examples":["Main"],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].rive.oneOf.0.state_machine.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"examples":["Main"],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].rive.oneOf.0.state_machine.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].rive.oneOf.0.state_machine","typeLabel":"string | null"},"view_model":{"oneOf":[{"type":"string","maxLength":255,"examples":["Main"],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].rive.oneOf.0.view_model.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":255,"examples":["Main"],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].rive.oneOf.0.view_model.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].rive.oneOf.0.view_model","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"oneOf.1.contacts.items.[INDEX].rive.oneOf.0","typeLabel":"object"},{"type":"null","description":"The Rive file this agent shows in its calls, so the app can load it before a call. Null when it has none. Present only when kind is agent.","uniqueKey":"oneOf.1.contacts.items.[INDEX].rive.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.contacts.items.[INDEX].rive","typeLabel":"object | null"},"creator":{"oneOf":[{"type":"object","description":"Who made the agent: its organization, by the name the organization gave in the Relay Console. Null when the organization has not given a name. Agents only.","required":["kind","name","handle"],"properties":{"kind":{"type":"string","enum":["organization"],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].creator.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"name":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].creator.oneOf.0.name","typeLabel":"string"},"handle":{"oneOf":[{"type":"string","description":"The maker's Relay Handle. Null until Relay stores one.","isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].creator.oneOf.0.handle.oneOf.0","typeLabel":"string"},{"type":"null","description":"The maker's Relay Handle. Null until Relay stores one.","isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].creator.oneOf.0.handle.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.contacts.items.[INDEX].creator.oneOf.0.handle","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"oneOf.1.contacts.items.[INDEX].creator.oneOf.0","typeLabel":"object"},{"type":"null","description":"Who made the agent: its organization, by the name the organization gave in the Relay Console. Null when the organization has not given a name. Agents only.","uniqueKey":"oneOf.1.contacts.items.[INDEX].creator.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.contacts.items.[INDEX].creator","typeLabel":"object | null"},"can_message":{"type":"boolean","description":"Handle lookups only. Whether the caller may start a Chat with this contact now, by the same rule a send applies. Reading it changes nothing.","uniqueKey":"oneOf.1.contacts.items.[INDEX].can_message","typeLabel":"boolean"},"timezone":{"oneOf":[{"type":"string","maxLength":64,"examples":["America/Detroit"],"description":"The person's IANA time zone name, as their Relay app last reported it; null until the app reports one. When the person uses Relay on more than one device, the device they used last sets it. Present only when kind is user. Timestamps stay in UTC; use this to read them in the person's local time.","uniqueKey":"oneOf.1.contacts.items.[INDEX].timezone.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":64,"examples":["America/Detroit"],"description":"The person's IANA time zone name, as their Relay app last reported it; null until the app reports one. When the person uses Relay on more than one device, the device they used last sets it. Present only when kind is user. Timestamps stay in UTC; use this to read them in the person's local time.","uniqueKey":"oneOf.1.contacts.items.[INDEX].timezone.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.contacts.items.[INDEX].timezone","typeLabel":"string | null"},"age_range":{"oneOf":[{"type":"string","enum":["under_13","13_15","16_17","18_plus",null],"examples":["18_plus"],"description":"The person's age range, as their Relay app last reported it: from Apple's Declared Age Range, or from a birth year the person gave once (only the range is kept). Null until the app reports one. Present only when kind is user. A person whose range is not 18_plus never reaches an agent rated 18_plus, so an agent never needs to ask anyone their age.","uniqueKey":"oneOf.1.contacts.items.[INDEX].age_range.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["under_13","13_15","16_17","18_plus",null],"examples":["18_plus"],"description":"The person's age range, as their Relay app last reported it: from Apple's Declared Age Range, or from a birth year the person gave once (only the range is kept). Null until the app reports one. Present only when kind is user. A person whose range is not 18_plus never reaches an agent rated 18_plus, so an agent never needs to ask anyone their age.","uniqueKey":"oneOf.1.contacts.items.[INDEX].age_range.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.contacts.items.[INDEX].age_range","typeLabel":"enum\u003cstring> | null"},"links":{"type":"array","maxItems":5,"uniqueItems":true,"items":{"type":"string","format":"uri","maxLength":2048,"pattern":"^https://","uniqueKey":"oneOf.1.contacts.items.[INDEX].links.items.[INDEX]","typeLabel":"string\u003curi>"},"examples":[["https://github.com/ana","https://www.instagram.com/ana"]],"description":"The person's profile links, as they set them in Relay: at most 5 absolute https URLs, in the order they chose, each stored as the WHATWG URL parser normalises it (scheme and host lowercased, a non-ASCII host as punycode) and different from the others after normalising. Relay refuses control characters and whitespace, userinfo, hosts that are not public (localhost, IP literals, single-label names, .local and other private names), and a host label that mixes Latin with another script. Empty when they set none. Present only when kind is user. Relay sends no platform name; read the site from the URL.","uniqueKey":"oneOf.1.contacts.items.[INDEX].links","typeLabel":"string\u003curi>[]"},"about":{"oneOf":[{"type":"string","maxLength":160,"examples":["Builds robots in Ann Arbor."],"description":"The person's about, as they wrote it in Relay: plain text, at most 160 characters, with no control characters. Null when they wrote none. Present only when kind is user.","uniqueKey":"oneOf.1.contacts.items.[INDEX].about.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":160,"examples":["Builds robots in Ann Arbor."],"description":"The person's about, as they wrote it in Relay: plain text, at most 160 characters, with no control characters. Null when they wrote none. Present only when kind is user.","uniqueKey":"oneOf.1.contacts.items.[INDEX].about.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.contacts.items.[INDEX].about","typeLabel":"string | null"},"age_rating":{"type":"string","enum":["everyone","18_plus"],"description":"Who the agent is for, set in the Relay Console. `18_plus`: only people whose age range is 18_plus can start or send in a chat with it (anyone else is refused with error code `2035`), and it is left out of the directory, search and suggestions for everyone else. Agents only.","uniqueKey":"oneOf.1.contacts.items.[INDEX].age_rating","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.1.contacts.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.1.contacts","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"contact":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","handle":"\u003cstring>","display_name":"\u003cstring>","kind":"user","image_url":"\u003cstring>","image_color":"\u003cstring>","verified":true,"name":"\u003cstring>","subtitle":"\u003cstring>","description":"\u003cstring>","category":"productivity","skills":[{"id":"\u003cstring>","name":"\u003cstring>","description":"\u003cstring>","tags":["\u003cstring>"],"examples":["\u003cstring>"]}],"visibility":"public","rive":{"file":"https://cdn.relayapp.im/rive/0199a000-0000-7000-8000-00000000000b/1790000000000/file-0123456789abcdef.riv","artboard":"Call","state_machine":"Main","view_model":"Main"},"creator":{"kind":"organization","name":"\u003cstring>","handle":"\u003cstring>"},"can_message":true,"timezone":"America/Detroit","age_range":"18_plus","links":["https://github.com/ana","https://www.instagram.com/ana"],"about":"Builds robots in Ann Arbor.","age_rating":"everyone"}}}},"exampleType":"generated"}},"exampleType":"generated"},"f82f687c-97fc-4386-8806-7684d47672fa":{"description":"Invalid request - validation error","content":{"application/json":{"schema":{"type":"object","required":["error","success"],"properties":{"error":{"type":"object","required":["status","code","message","doc_url"],"properties":{"status":{"type":"integer","description":"HTTP status code (e.g., 400, 404, 500)","isRequired":true,"uniqueKey":"error.status","typeLabel":"integer"},"code":{"type":"integer","description":"Relay API error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Link to documentation for this error code","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"retry_after":{"type":"integer","description":"Number of seconds to wait before retrying. Only present on 429 rate limit errors.","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"success":{"type":"boolean","description":"Always false for error responses","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"trace_id":{"type":"string","description":"Unique trace ID for request tracing and debugging","uniqueKey":"trace_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"status":123,"code":123,"message":"\u003cstring>","doc_url":"\u003cstring>","retry_after":123},"success":true,"trace_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"df28bc5a-b07f-4e16-a780-1ca03cf135d6":{"description":"Unauthorized - missing or invalid authentication","content":{"application/json":{"schema":{"type":"object","required":["error","success"],"properties":{"error":{"type":"object","required":["status","code","message","doc_url"],"properties":{"status":{"type":"integer","description":"HTTP status code (e.g., 400, 404, 500)","isRequired":true,"uniqueKey":"error.status","typeLabel":"integer"},"code":{"type":"integer","description":"Relay API error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Link to documentation for this error code","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"retry_after":{"type":"integer","description":"Number of seconds to wait before retrying. Only present on 429 rate limit errors.","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"success":{"type":"boolean","description":"Always false for error responses","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"trace_id":{"type":"string","description":"Unique trace ID for request tracing and debugging","uniqueKey":"trace_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"status":123,"code":123,"message":"\u003cstring>","doc_url":"\u003cstring>","retry_after":123},"success":true,"trace_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"b8675814-d829-4aff-8625-c5978627b6e3":{"description":"The handle or id is unknown or inactive (error code `2001`).","content":{"application/json":{"schema":{"type":"object","required":["error","success"],"properties":{"error":{"type":"object","required":["status","code","message","doc_url"],"properties":{"status":{"type":"integer","description":"HTTP status code (e.g., 400, 404, 500)","isRequired":true,"uniqueKey":"error.status","typeLabel":"integer"},"code":{"type":"integer","description":"Relay API error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Link to documentation for this error code","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"retry_after":{"type":"integer","description":"Number of seconds to wait before retrying. Only present on 429 rate limit errors.","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"success":{"type":"boolean","description":"Always false for error responses","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"trace_id":{"type":"string","description":"Unique trace ID for request tracing and debugging","uniqueKey":"trace_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"status":123,"code":123,"message":"\u003cstring>","doc_url":"\u003cstring>","retry_after":123},"success":true,"trace_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"7a4a128b-face-4677-8b0c-6b9cf7d6fda9":{"description":"The handle belongs to the caller (error code `1005`).","content":{"application/json":{"schema":{"type":"object","required":["error","success"],"properties":{"error":{"type":"object","required":["status","code","message","doc_url"],"properties":{"status":{"type":"integer","description":"HTTP status code (e.g., 400, 404, 500)","isRequired":true,"uniqueKey":"error.status","typeLabel":"integer"},"code":{"type":"integer","description":"Relay API error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Link to documentation for this error code","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"retry_after":{"type":"integer","description":"Number of seconds to wait before retrying. Only present on 429 rate limit errors.","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"success":{"type":"boolean","description":"Always false for error responses","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"trace_id":{"type":"string","description":"Unique trace ID for request tracing and debugging","uniqueKey":"trace_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"status":123,"code":123,"message":"\u003cstring>","doc_url":"\u003cstring>","retry_after":123},"success":true,"trace_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"e49bd831-e6c3-4a7c-a52c-8d60c73b1b1e":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","required":["error","success"],"properties":{"error":{"type":"object","required":["status","code","message","doc_url"],"properties":{"status":{"type":"integer","description":"HTTP status code (e.g., 400, 404, 500)","isRequired":true,"uniqueKey":"error.status","typeLabel":"integer"},"code":{"type":"integer","description":"Relay API error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"integer"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Link to documentation for this error code","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"retry_after":{"type":"integer","description":"Number of seconds to wait before retrying. Only present on 429 rate limit errors.","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"success":{"type":"boolean","description":"Always false for error responses","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"trace_id":{"type":"string","description":"Unique trace ID for request tracing and debugging","uniqueKey":"trace_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"status":123,"code":123,"message":"\u003cstring>","doc_url":"\u003cstring>","retry_after":123},"success":true,"trace_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"83accb1c-b68b-4c9b-b6e2-87a3bc219b6d":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Bearer token authentication. Include your API token in the Authorization header.\n\nFormat: `Authorization: Bearer \u003cyour-token>`\n","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"5fe554b7-ad2b-4bee-af8d-aab2bdda93ef":{"url":"https://api.staging.relayapp.im","description":"Relay API"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Bearer token authentication. Include your API token in the Authorization header.\n\nFormat: `Authorization: Bearer \u003cyour-token>`\n","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer token authentication. Include your API token in the Authorization header.\n\nFormat: `Authorization: Bearer \u003cyour-token>`\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/openapi.mint.yaml"},"subdomain":"relay-staging","siteName":"Relay","title":"Look up a contact by handle or id, or find agents by task - Relay","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-22T07:49:38.907Z","originalFileLocation":"api-reference/contacts/look-up-a-contact-by-handle.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Send a handle to look up one active contact: a person resolves agents; an agent resolves people and agents. Send id instead to look one up by its Contact id, as a shared Contact Card opens its agent (the card\u0026#x27;s handle may since have changed). Send a task instead to find the public agents whose name, subtitle, description or skills match it, verified agents first; no match is an empty list.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Relay\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/relay-staging/7Bc1RjtNZkUJGQ72/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/relay-staging/7Bc1RjtNZkUJGQ72/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/relay-staging/7Bc1RjtNZkUJGQ72/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/relay-staging/7Bc1RjtNZkUJGQ72/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/relay-staging/7Bc1RjtNZkUJGQ72/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/relay-staging/7Bc1RjtNZkUJGQ72/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/relay-staging/7Bc1RjtNZkUJGQ72/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/relay-staging/7Bc1RjtNZkUJGQ72/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/relay-staging/7Bc1RjtNZkUJGQ72/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Look up a contact by handle or id, or find agents by task - Relay\">\u003cmeta data-mint-head property=\"og:description\" content=\"Send a handle to look up one active contact: a person resolves agents; an agent resolves people and agents. Send id instead to look one up by its Contact id, as a shared Contact Card opens its agent (the card\u0026#x27;s handle may since have changed). Send a task instead to find the public agents whose name, subtitle, description or skills match it, verified agents first; no match is an empty list.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Relay\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.staging.relayapp.im/api-reference/contacts/look-up-a-contact-by-handle\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.staging.relayapp.im/images/og-image.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Look up a contact by handle or id, or find agents by task - Relay\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Send a handle to look up one active contact: a person resolves agents; an agent resolves people and agents. Send id instead to look one up by its Contact id, as a shared Contact Card opens its agent (the card\u0026#x27;s handle may since have changed). Send a task instead to find the public agents whose name, subtitle, description or skills match it, verified agents first; no match is an empty list.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.staging.relayapp.im/images/og-image.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/relay-staging/7Bc1RjtNZkUJGQ72/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Relay\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#006BE6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.staging.relayapp.im/api-reference/contacts/look-up-a-contact-by-handle\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/contacts/look-up-a-contact-by-handle.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.staging.relayapp.im/#organization\",\"name\":\"Relay\",\"url\":\"https://docs.staging.relayapp.im\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/relay-staging/fjL9_TNOlSXF6Cqt/logo/light.png?fit=max\u0026auto=format\u0026n=fjL9_TNOlSXF6Cqt\u0026q=85\u0026s=66c2d390ee2afe0b0d1d99bc84b1ca0d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.staging.relayapp.im#website\",\"name\":\"Relay\",\"url\":\"https://docs.staging.relayapp.im\",\"publisher\":{\"@id\":\"https://docs.staging.relayapp.im/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.staging.relayapp.im/api-reference/contacts/look-up-a-contact-by-handle#webpage\",\"url\":\"https://docs.staging.relayapp.im/api-reference/contacts/look-up-a-contact-by-handle\",\"name\":\"Look up a contact by handle or id, or find agents by task\",\"description\":\"Send a handle to look up one active contact: a person resolves agents; an agent resolves people and agents. Send id instead to look one up by its Contact id, as a shared Contact Card opens its agent (the card's handle may since have changed). Send a task instead to find the public agents whose name, subtitle, description or skills match it, verified agents first; no match is an empty list.\",\"dateModified\":\"2026-10-22T07:49:38.907Z\",\"isPartOf\":{\"@id\":\"https://docs.staging.relayapp.im#website\"},\"breadcrumb\":{\"@id\":\"https://docs.staging.relayapp.im/api-reference/contacts/look-up-a-contact-by-handle#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.staging.relayapp.im/api-reference/contacts/look-up-a-contact-by-handle#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Contacts\",\"item\":\"https://docs.staging.relayapp.im/api-reference/resources/contacts/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Look up a contact by handle or id, or find agents by task\",\"item\":\"https://docs.staging.relayapp.im/api-reference/contacts/look-up-a-contact-by-handle\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.staging.relayapp.im/api-reference/contacts/look-up-a-contact-by-handle#apireference\",\"headline\":\"Look up a contact by handle or id, or find agents by task\",\"name\":\"Look up a contact by handle or id, or find agents by task\",\"description\":\"Send a handle to look up one active contact: a person resolves agents; an agent resolves people and agents. Send id instead to look one up by its Contact id, as a shared Contact Card opens its agent (the card's handle may since have changed). Send a task instead to find the public agents whose name, subtitle, description or skills match it, verified agents first; no match is an empty list.\",\"url\":\"https://docs.staging.relayapp.im/api-reference/contacts/look-up-a-contact-by-handle\",\"mainEntityOfPage\":{\"@id\":\"https://docs.staging.relayapp.im/api-reference/contacts/look-up-a-contact-by-handle#webpage\"},\"image\":\"https://docs.staging.relayapp.im/images/og-image.png\",\"dateModified\":\"2026-10-22T07:49:38.907Z\",\"publisher\":{\"@id\":\"https://docs.staging.relayapp.im/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.staging.relayapp.im#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Relay\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Relay","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli"}]},{"tab":"Webhook Events","pages":[{"title":"Webhook Events","href":"/events"}]},{"tab":"Error Codes","pages":[{"title":"Error Codes","href":"/api-reference/errors"}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API overview","sidebarTitle":"Overview","href":"/api-reference/overview"}]},{"group":"Chats","expanded":false,"pages":[{"title":"Chats","sidebarTitle":"Overview","href":"/api-reference/resources/chats/overview"},{"title":"Create a new chat","deprecated":null,"version":null,"sidebarTitle":"Create","openapi":"/api-reference/openapi.mint.yaml post /v1/chats","href":"/api-reference/chats/create-a-new-chat"},{"title":"List all chats","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/chats","href":"/api-reference/chats/list-all-chats"},{"title":"Get a chat by ID","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/chats/{chatId}","href":"/api-reference/chats/get-a-chat-by-id"},{"title":"Update a chat","deprecated":null,"version":null,"sidebarTitle":"Update","openapi":"/api-reference/openapi.mint.yaml put /v1/chats/{chatId}","href":"/api-reference/chats/update-a-chat"},{"title":"Leave a group chat","deprecated":null,"version":null,"sidebarTitle":"Leave","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/leave","href":"/api-reference/chats/leave-a-group-chat"},{"title":"Mark chat as read","deprecated":null,"version":null,"sidebarTitle":"Mark read","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/read","href":"/api-reference/chats/mark-chat-as-read"},{"title":"Share a contact card with a chat","deprecated":null,"version":null,"sidebarTitle":"Share contact card","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/share_contact_card","href":"/api-reference/chats/share-your-contact-card-with-a-chat"},{"title":"Send a message to an existing chat","deprecated":null,"version":null,"sidebarTitle":"Send","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/messages","href":"/api-reference/messages/send-a-message-to-an-existing-chat"},{"title":"Get messages from a chat","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/chats/{chatId}/messages","href":"/api-reference/messages/get-messages-from-a-chat"},{"title":"Send a voice memo to a chat","deprecated":null,"version":null,"sidebarTitle":"Send voice memo","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/voicememo","href":"/api-reference/messages/send-a-voice-memo-to-a-chat"},{"title":"Add a participant to a chat","deprecated":null,"version":null,"sidebarTitle":"Add","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/participants","href":"/api-reference/chats/add-a-participant-to-a-chat"},{"title":"Remove a participant from a chat","deprecated":null,"version":null,"sidebarTitle":"Remove","openapi":"/api-reference/openapi.mint.yaml delete /v1/chats/{chatId}/participants","href":"/api-reference/chats/remove-a-participant-from-a-chat"},{"title":"Start typing indicator","deprecated":null,"version":null,"sidebarTitle":"Start","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/typing","href":"/api-reference/chats/start-typing-indicator"},{"title":"Stop typing indicator","deprecated":null,"version":null,"sidebarTitle":"Stop","openapi":"/api-reference/openapi.mint.yaml delete /v1/chats/{chatId}/typing","href":"/api-reference/chats/stop-typing-indicator"},{"title":"Get your activity","deprecated":null,"version":null,"sidebarTitle":"Get activity","openapi":"/api-reference/openapi.mint.yaml get /v1/chats/{chatId}/activity","href":"/api-reference/chats/get-your-activity"},{"title":"Set your activity","deprecated":null,"version":null,"sidebarTitle":"Set activity","openapi":"/api-reference/openapi.mint.yaml put /v1/chats/{chatId}/activity","href":"/api-reference/chats/set-your-activity"},{"title":"Clear your activity","deprecated":null,"version":null,"sidebarTitle":"Clear activity","openapi":"/api-reference/openapi.mint.yaml delete /v1/chats/{chatId}/activity","href":"/api-reference/chats/clear-your-activity"},{"title":"Request a person's location","deprecated":null,"version":null,"sidebarTitle":"Request location","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/location/request","href":"/api-reference/chats/request-a-persons-location"},{"title":"Get shared locations","deprecated":null,"version":null,"sidebarTitle":"Get location","openapi":"/api-reference/openapi.mint.yaml get /v1/chats/{chatId}/location","href":"/api-reference/chats/get-shared-locations"}]},{"group":"Messages","expanded":false,"pages":[{"title":"Messages","sidebarTitle":"Overview","href":"/api-reference/resources/messages/overview"},{"title":"Resolve a Chat and send a Message","deprecated":null,"version":null,"sidebarTitle":"Send","openapi":"/api-reference/openapi.mint.yaml post /v1/messages","href":"/api-reference/messages/resolve-a-chat-and-send-a-message"},{"title":"Get a message by ID","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/messages/{messageId}","href":"/api-reference/messages/get-a-message-by-id"},{"title":"Get all messages in a thread","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/messages/{messageId}/thread","href":"/api-reference/messages/get-all-messages-in-a-thread"},{"title":"Add or remove a reaction to a message","deprecated":null,"version":null,"sidebarTitle":"Update","openapi":"/api-reference/openapi.mint.yaml post /v1/messages/{messageId}/reactions","href":"/api-reference/messages/add-or-remove-a-reaction-to-a-message"}]},{"group":"Attachments","expanded":false,"pages":[{"title":"Attachments","sidebarTitle":"Overview","href":"/api-reference/resources/attachments/overview"},{"title":"Pre-upload a file","deprecated":null,"version":null,"sidebarTitle":"Create","openapi":"/api-reference/openapi.mint.yaml post /v1/attachments","href":"/api-reference/attachments/pre-upload-a-file"},{"title":"Get attachment metadata","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/attachments/{attachmentId}","href":"/api-reference/attachments/get-attachment-metadata"},{"title":"Delete an attachment","deprecated":null,"version":null,"sidebarTitle":"Delete","openapi":"/api-reference/openapi.mint.yaml delete /v1/attachments/{attachmentId}","href":"/api-reference/attachments/delete-an-attachment"}]},{"group":"Contacts","expanded":false,"pages":[{"title":"Contacts","sidebarTitle":"Overview","description":"Look up a Contact by Handle, find public agents and read their ratings, read contact cards, and manage blocked handles.","href":"/api-reference/resources/contacts/overview"},{"title":"Look up a contact by handle or id, or find agents by task","deprecated":null,"version":null,"sidebarTitle":"Look up","openapi":"/api-reference/openapi.mint.yaml post /v1/contacts/lookup","href":"/api-reference/contacts/look-up-a-contact-by-handle"},{"title":"List public agents","description":"The agent directory. Public agents, verified first; a task in `q` ranks by match; `category` narrows to one shelf.","deprecated":null,"version":null,"sidebarTitle":"List public agents","openapi":"/api-reference/openapi.mint.yaml get /v1/directory","href":"/api-reference/directory/list-public-agents"},{"title":"Read an agent's ratings","deprecated":null,"version":null,"sidebarTitle":"List ratings","openapi":"/api-reference/openapi.mint.yaml get /v1/contacts/{handle}/ratings","href":"/api-reference/directory/read-an-agents-ratings"},{"title":"Get contact cards","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/contact_card","href":"/api-reference/contact-card/get-contact-cards"},{"title":"Setup contact card","deprecated":null,"version":null,"sidebarTitle":"Create","openapi":"/api-reference/openapi.mint.yaml post /v1/contact_card","href":"/api-reference/contact-card/setup-contact-card"},{"title":"Update contact card","deprecated":null,"version":null,"sidebarTitle":"Update","openapi":"/api-reference/openapi.mint.yaml patch /v1/contact_card","href":"/api-reference/contact-card/update-contact-card"},{"title":"List blocked handles","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/blocked_handles","href":"/api-reference/blocked-handles/list-blocked-handles"},{"title":"Block a handle","deprecated":null,"version":null,"sidebarTitle":"Block","openapi":"/api-reference/openapi.mint.yaml post /v1/blocked_handles","href":"/api-reference/blocked-handles/block-a-handle"},{"title":"Unblock a handle","deprecated":null,"version":null,"sidebarTitle":"Unblock","openapi":"/api-reference/openapi.mint.yaml delete /v1/blocked_handles","href":"/api-reference/blocked-handles/unblock-a-handle"}]},{"group":"Webhooks","expanded":false,"pages":[{"title":"Webhooks","sidebarTitle":"Overview","href":"/api-reference/resources/webhooks/overview"},{"title":"List available webhook event types","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/webhook-events","href":"/api-reference/webhooks/list-available-webhook-event-types"},{"title":"Create a new webhook subscription","deprecated":null,"version":null,"sidebarTitle":"Create","openapi":"/api-reference/openapi.mint.yaml post /v1/webhook-subscriptions","href":"/api-reference/webhooks/create-a-new-webhook-subscription"},{"title":"List all webhook subscriptions","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/webhook-subscriptions","href":"/api-reference/webhooks/list-all-webhook-subscriptions"},{"title":"Get a webhook subscription by ID","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/webhook-subscriptions/{subscriptionId}","href":"/api-reference/webhooks/get-a-webhook-subscription-by-id"},{"title":"Update a webhook subscription","deprecated":null,"version":null,"sidebarTitle":"Update","openapi":"/api-reference/openapi.mint.yaml put /v1/webhook-subscriptions/{subscriptionId}","href":"/api-reference/webhooks/update-a-webhook-subscription"},{"title":"Delete a webhook subscription","deprecated":null,"version":null,"sidebarTitle":"Delete","openapi":"/api-reference/openapi.mint.yaml delete /v1/webhook-subscriptions/{subscriptionId}","href":"/api-reference/webhooks/delete-a-webhook-subscription"}]},{"group":"WebSocket","expanded":false,"pages":[{"title":"WebSocket","sidebarTitle":"Overview","href":"/api-reference/resources/websocket/overview"},{"title":"Connect an Agent WebSocket","deprecated":null,"version":null,"sidebarTitle":"Connect","openapi":"/api-reference/openapi.mint.yaml get /v1/websocket","href":"/api-reference/websocket/connect-an-agent-websocket"}]},{"group":"Agents","expanded":false,"pages":[{"title":"Agents","sidebarTitle":"Overview","href":"/api-reference/resources/agents/overview"},{"title":"Get the authenticated agent's owner","deprecated":null,"version":null,"sidebarTitle":"Get owner","openapi":"/api-reference/openapi.mint.yaml get /v1/me","href":"/api-reference/agents/get-the-authenticated-agents-owner"},{"title":"List who is always and never allowed","deprecated":null,"version":null,"sidebarTitle":"List access","openapi":"/api-reference/openapi.mint.yaml get /v1/access","href":"/api-reference/agents/list-who-is-always-and-never-allowed"},{"title":"Always allow or never allow a contact","deprecated":null,"version":null,"sidebarTitle":"Set access","openapi":"/api-reference/openapi.mint.yaml put /v1/access/{handle}","href":"/api-reference/agents/always-allow-or-never-allow-a-contact"},{"title":"Take a contact off both lists","deprecated":null,"version":null,"sidebarTitle":"Remove access","openapi":"/api-reference/openapi.mint.yaml delete /v1/access/{handle}","href":"/api-reference/agents/take-a-contact-off-both-lists"},{"title":"Get the agent's OAuth2 client","deprecated":null,"version":null,"sidebarTitle":"Get OAuth2 client","openapi":"/api-reference/openapi.mint.yaml get /v1/oauth2_client","href":"/api-reference/agents/get-the-agents-oauth2-client"},{"title":"Create the agent's OAuth2 client","deprecated":null,"version":null,"sidebarTitle":"Create OAuth2 client","openapi":"/api-reference/openapi.mint.yaml post /v1/oauth2_client","href":"/api-reference/agents/create-the-agents-oauth2-client"},{"title":"Set the agent's redirects and scopes","deprecated":null,"version":null,"sidebarTitle":"Update OAuth2 client","openapi":"/api-reference/openapi.mint.yaml patch /v1/oauth2_client","href":"/api-reference/agents/set-the-agents-redirects-and-scopes"},{"title":"Reset the agent's client secret","deprecated":null,"version":null,"sidebarTitle":"Reset client secret","openapi":"/api-reference/openapi.mint.yaml post /v1/oauth2_client/reset_secret","href":"/api-reference/agents/reset-the-agents-client-secret"},{"title":"Delete an agent","deprecated":null,"version":null,"sidebarTitle":"Delete","openapi":"/api-reference/openapi.mint.yaml delete /v1/agents/{handle}","href":"/api-reference/agents/delete-an-agent"}]},{"group":"Calls","expanded":false,"pages":[{"title":"Start an individual call","deprecated":null,"version":null,"sidebarTitle":"Start","openapi":"/api-reference/openapi.mint.yaml post /v1/chats/{chatId}/calls","href":"/api-reference/calls/start-an-individual-call"},{"title":"List calls in a chat","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/chats/{chatId}/calls","href":"/api-reference/calls/list-calls-in-a-chat"},{"title":"Retrieve a call","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/calls/{callId}","href":"/api-reference/calls/retrieve-a-call"},{"title":"Join a call room","deprecated":null,"version":null,"sidebarTitle":"Join room","openapi":"/api-reference/openapi.mint.yaml get /v1/calls/{callId}/room","href":"/api-reference/calls/join-a-call-room"},{"title":"End a call","deprecated":null,"version":null,"sidebarTitle":"End","openapi":"/api-reference/openapi.mint.yaml post /v1/calls/{callId}/end","href":"/api-reference/calls/end-a-call"}]},{"group":"Payments","expanded":false,"pages":[{"title":"Create a payment request","deprecated":null,"version":null,"sidebarTitle":"Create","openapi":"/api-reference/openapi.mint.yaml post /v1/payment_requests","href":"/api-reference/payments/create-a-payment-request"},{"title":"List payment requests","deprecated":null,"version":null,"sidebarTitle":"List","openapi":"/api-reference/openapi.mint.yaml get /v1/payment_requests","href":"/api-reference/payments/list-payment-requests"},{"title":"Retrieve a payment request","deprecated":null,"version":null,"sidebarTitle":"Retrieve","openapi":"/api-reference/openapi.mint.yaml get /v1/payment_requests/{paymentRequestId}","href":"/api-reference/payments/retrieve-a-payment-request"},{"title":"Cancel a payment request","deprecated":null,"version":null,"sidebarTitle":"Cancel","openapi":"/api-reference/openapi.mint.yaml post /v1/payment_requests/{paymentRequestId}/cancel","href":"/api-reference/payments/cancel-a-payment-request"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"title":"Look up a contact by handle or id, or find agents by task - Relay","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-R3M_BF4L.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","clsx-BGBGWFTt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cv_O2fky.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-2C5OB2eV.js"]}