POST /v1/vcards and send it by ID with a vcard part, or send your own .vcf file as media. Contact cards work in direct and group chats, over iMessage, RCS and SMS, once the contact has replied to your number.
A contact card is a file the recipient can save. It doesn’t change the name or photo that Messages shows for your Blujay number.
Save a card
201 Created
id, not vcard_id. Most Blujay resources name their ID <resource>_id; saved cards and team members use id. Use that id as vcard_id in a vcard part and in the /v1/vcards/{vcard_id} path.
A card needs at least one phone number or email. Recipients see each
type as the label next to the number or address. Unknown fields are rejected with 400 VALIDATION_ERROR.
Card photos are managed in the Blujay app. has_photo tells you whether a card has one, and a card with a photo is sent with it.
Send a saved card
Add avcard part with the card’s ID to a follow-up in a chat where the contact has already replied:
202 Accepted
vcard part comes back as a media part with its own attachment_id. Message reads and webhooks show it the same way: a media part with content_type text/vcard and a .vcf file name built from the card’s name, such as Northwind Support.vcf. The vcard_id isn’t kept on the message, so a read can’t tell you which saved card was sent. If you need that, record it against the message_id yourself when you send.
- A
vcardpart counts as a media part. It can sit next totextparts but not alink, and a message can have up to 40mediaandvcardparts in total. - Because the file is built at acceptance, later edits to the card never change a message you already sent. Retrying with the same
Idempotency-Keyreturns the original message and doesn’t build a second file. - An unknown or deleted
vcard_idreturns404NOT_FOUNDand nothing is sent. - Before the contact replies, the send returns
400PRE_REPLY_CONTENT_BLOCKEDand nothing is sent.
media part with content_type text/vcard. Download it like any other inbound media.
Send your own .vcf file
If you already have a vCard file, send it like any other media, either uploaded or from a URL:
text/vcard or text/x-vcard, or as a generic binary type with a .vcf file name. See Media for uploads and URL rules.
Manage saved cards
To update a card’s title:
phones or emails in a PATCH replaces the whole list. Send null for last_name, company, title or website to clear it.
Saved cards are shared across your workspace, and your team sees the same cards in the Blujay app. Creating a card ignores Idempotency-Key; if a create times out, list your cards before you create it again.
Limitations
- No contact cards until the contact replies (
400PRE_REPLY_CONTENT_BLOCKED). See Sending rules. - Free Plan numbers can’t send to unverified contacts (
403CONTACT_NOT_VERIFIED); AI Agent numbers only reply to people who text first (403CONTACT_MUST_TEXT_FIRST). See Plans. - Card photos can only be set in the Blujay app.
has_photois read-only. - A card needs at least one phone number or email, up to 5 of each (
400VALIDATION_ERROR). - Sending a card doesn’t change the name or photo Messages shows for your number.
Next steps
Media
Upload files and send media from URLs.
Send messages
Message parts, first messages and follow-ups.
Group chats
Share a card with everyone in a group.
Contacts
Manage the people you message.