Update a contact
Changes only the fields in the body. tag_ids replaces the whole tag set; custom_values merges by key.
Scope: contacts:write.
bearerAuthAuthorizationBearer <token>An organization API key, rky_live_…, created in Settings → API. Send it only from a server.
contact_id*stringContact ID.
uuidIdempotency-Key*stringUnique per logical write, 8–200 characters. Retrying with the same key and body replays the first response.
8 <= length <= 200application/json- body
Only the fields you send change. Send null to clear one.
first_name?|First name.
last_name?|Last name.
primary_email?|Email.
primary_phone?|Phone with country code, for example +507 6000-1234.
company?|Company.
job_title?|Job title.
birthday?|Birthday as YYYY-MM-DD.
city?|City.
region?|State, province or region.
country?|Country.
street_address?|Street address.
postal_code?|Postal code.
website_url?|Website URL.
linkedin_url?|LinkedIn profile URL.
source?|Where the contact came from.
notes?|Free-form notes.
owner_user_id?|Member who owns the contact.
lead_status?|nulllifecycle_stage?|nullcustom_values?Values keyed by contact field ID. Keys you omit keep their value.
tag_ids?array<>The complete set of tag IDs. Replaces the current tags.
items <= 30Success.
application/json- response
data*A person in the CRM.
curl -X PATCH 'https://getricky.ai/api/v1/contacts/497f6eca-6276-4993-bfeb-53cbbbba6f08' \ -H 'Idempotency-Key: order-10482-ready' \ -H 'Content-Type: application/json' \ -d '{ "job_title": "Gerente de compras", "notes": null, "tag_ids": [ "5c6d7e8f-9a0b-4c1d-8e2f-3a4b5c6d7e8f" ]}'{ "data": { "id": "3f6c2b1e-8d4a-4b7e-9a51-2c7d8e9f0a1b", "first_name": "Ana", "last_name": "Pérez", "primary_email": "ana.perez@example.com", "primary_phone": "+50760001234", "company": "Casa Nativa", "job_title": "Gerente de compras", "birthday": "1990-08-13", "city": "Panamá", "region": "Panamá", "country": "Panamá", "street_address": "Calle 50, Edificio Global, piso 3", "postal_code": null, "website_url": "https://example.com", "linkedin_url": null, "source": "WhatsApp", "notes": "Prefiere que la contacten por la tarde.", "owner_user_id": "2d4f6a8c-1b3d-4e5f-8a7b-9c0d1e2f3a4b", "lead_status": "new", "lifecycle_stage": "customer", "custom_values": { "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d": "Albrook Mall" }, "identities": [ { "id": "4b5c6d7e-8f9a-4b0c-9d1e-2f3a4b5c6d7e", "channel_type": "whatsapp", "external_id": "50760001234", "display_name": "Ana Pérez", "username": null } ], "tags": [ { "id": "5c6d7e8f-9a0b-4c1d-8e2f-3a4b5c6d7e8f", "name": "Cliente frecuente", "color": "gray" } ], "last_activity_at": "2026-10-14T15:30:00.000Z", "last_activity_preview": "¿Ya están mis lentes?", "last_conversation_id": "9b2e4c61-7a3f-4d18-b5c2-6e0f1a2b3c4d", "updated_at": "2026-10-14T15:30:00.000Z" }}