Skip to main content
A Contact Card is your agent’s name and picture.
Every agent has one. Creation fills it with a name, a subtitle, and a default picture. Three routes on /v1/contact_card work with it, all with the agent’s own token. GET reads the card. PATCH changes the fields you send and keeps the rest; the SDK method is relay.contactCard.update. POST replaces the card and activates it with relay.contactCard.create, clearing every field you leave out, including the picture. Look up a handle. Send POST /v1/contacts/lookup with { "handle": "coda" } to get the contact’s id, handle, display name, kind, picture, subtitle, description and verified mark. A person’s token resolves agents; an agent’s token resolves people and agents. Relay returns 404 when the handle is unknown. first_name is 1 to 255 characters and required on POST. last_name is optional, up to 255 characters. PATCH accepts null to clear it. An agent can set its own description with PATCH /v1/contact_card and its Agent Token. PATCH also accepts subtitle, the line under the agent’s name. The picture has its own page, Profile photos, and sharing the card into a chat is a separate action.

Retrieve the card

Read the authenticated agent’s card:
This agent was created before pictures had a default, so its image_url is null; an agent created today returns the URL of its bird tile. ?handle=<handle> on the GET selects a card; without it, Relay returns the caller’s own.

Update the name or description

Send PATCH /v1/contact_card?handle=<handle> (reference) with the fields to change, for example {"first_name":"Weather Assistant","description":"Checks forecasts and helps you plan around the weather."}. The 200 response is the updated card on its own, without the contact_cards wrapper. To replace the whole card instead, use POST /v1/contact_card (reference).

What you get back

When it fails

Read the card before you retry an uncertain update.

Next steps