openapi: 3.2.0 info: title: Teamleader Contacts API version: '2026-09-22' description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-09-22: 58 operation(s) read from 60 public documentation page(s) (each operation names its page in x-source). This is not the provider''s published contract; Teamleader has published no machine-readable contract that the pipeline could find. Engine: anthropic.' x-generated-from: documentation x-provenance: generated x-authored-by: API Evangelist x-generated: '2026-09-22' x-generator: generate-contract-from-docs.py x-engine: anthropic x-sources: - https://developer.focus.teamleader.eu/docs/authentication - https://developer.focus.teamleader.eu/docs/general-principles - https://developer.focus.teamleader.eu/docs/api/deals-list - https://developer.focus.teamleader.eu/docs/api/deals-info - https://developer.focus.teamleader.eu/docs/api/deals-create - https://developer.focus.teamleader.eu/docs/api/deals-update - https://developer.focus.teamleader.eu/docs/api/deals-move - https://developer.focus.teamleader.eu/docs/api/deals-win - https://developer.focus.teamleader.eu/docs/api/deals-lose - https://developer.focus.teamleader.eu/docs/api/deals-delete - https://developer.focus.teamleader.eu/docs/api/lost-reasons-list - https://developer.focus.teamleader.eu/docs/api/level-two-areas-list - https://developer.focus.teamleader.eu/docs/api/files-list - https://developer.focus.teamleader.eu/docs/api/files-info - https://developer.focus.teamleader.eu/docs/api/files-download - https://developer.focus.teamleader.eu/docs/api/files-upload - https://developer.focus.teamleader.eu/docs/api/files-delete - https://developer.focus.teamleader.eu/docs/api/ticket-status-list - https://developer.focus.teamleader.eu/docs/api/tasks-list - https://developer.focus.teamleader.eu/docs/api/tasks-info - https://developer.focus.teamleader.eu/docs/api/tasks-create - https://developer.focus.teamleader.eu/docs/api/tasks-update - https://developer.focus.teamleader.eu/docs/api/tasks-complete - https://developer.focus.teamleader.eu/docs/api/tasks-reopen - https://developer.focus.teamleader.eu/docs/api/tasks-delete - https://developer.focus.teamleader.eu/docs/api/tasks-schedule - https://developer.focus.teamleader.eu/docs/api/user-availability-daily - https://developer.focus.teamleader.eu/docs/api/tickets-list - https://developer.focus.teamleader.eu/docs/api/tickets-info - https://developer.focus.teamleader.eu/docs/api/tickets-create - https://developer.focus.teamleader.eu/docs/api/tickets-update - https://developer.focus.teamleader.eu/docs/api/tickets-list-messages - https://developer.focus.teamleader.eu/docs/api/tickets-get-message - https://developer.focus.teamleader.eu/docs/api/tickets-import-message - https://developer.focus.teamleader.eu/docs/api/tickets-add-reply - https://developer.focus.teamleader.eu/docs/api/tickets-add-internal-message - https://developer.focus.teamleader.eu/docs/api/timers-update - https://developer.focus.teamleader.eu/docs/api/contacts-list - https://developer.focus.teamleader.eu/docs/api/contacts-info - https://developer.focus.teamleader.eu/docs/api/contacts-add - https://developer.focus.teamleader.eu/docs/api/contacts-update - https://developer.focus.teamleader.eu/docs/api/contacts-delete - https://developer.focus.teamleader.eu/docs/api/contacts-tag - https://developer.focus.teamleader.eu/docs/api/contacts-untag - https://developer.focus.teamleader.eu/docs/api/contacts-link-to-company - https://developer.focus.teamleader.eu/docs/api/contacts-unlink-from-company - https://developer.focus.teamleader.eu/docs/api/contacts-update-company-link - https://developer.focus.teamleader.eu/docs/api/contacts-upload-avatar - https://developer.focus.teamleader.eu/docs/api/days-off-bulk-delete - https://developer.focus.teamleader.eu/docs/api/expenses-list - https://developer.focus.teamleader.eu/docs/api/payment-methods-list - https://developer.focus.teamleader.eu/docs/api/invoices-list - https://developer.focus.teamleader.eu/docs/api/invoices-info - https://developer.focus.teamleader.eu/docs/api/invoices-download - https://developer.focus.teamleader.eu/docs/api/invoices-draft - https://developer.focus.teamleader.eu/docs/api/invoices-update - https://developer.focus.teamleader.eu/docs/api/invoices-update-booked - https://developer.focus.teamleader.eu/docs/api/invoices-copy - https://developer.focus.teamleader.eu/docs/api/invoices-book - https://developer.focus.teamleader.eu/docs/api/invoices-delete servers: - url: https://api.focus.teamleader.eu security: - bearer: [] tags: - name: Contacts paths: /contacts.add: post: operationId: post_contacts_add tags: - Contacts summary: Add a new contact x-source: https://developer.focus.teamleader.eu/docs/api/contacts-add requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostContactsAddRequest' responses: '201': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostContactsAddResponse' /contacts.delete: post: operationId: post_contacts_delete tags: - Contacts summary: Delete a contact x-source: https://developer.focus.teamleader.eu/docs/api/contacts-delete requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostContactsDeleteRequest' responses: '204': description: Success (status as documented) /contacts.info: post: operationId: post_contacts_info tags: - Contacts summary: Get details for a single contact x-source: https://developer.focus.teamleader.eu/docs/api/contacts-info requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostContactsInfoRequest' responses: '200': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostContactsInfoResponse' /contacts.linkToCompany: post: operationId: post_contacts_linkToCompany tags: - Contacts summary: Link a contact to a company x-source: https://developer.focus.teamleader.eu/docs/api/contacts-link-to-company requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostContactsLinktocompanyRequest' responses: '204': description: Success (status as documented) /contacts.list: post: operationId: post_contacts_list tags: - Contacts summary: Get a list of contacts x-source: https://developer.focus.teamleader.eu/docs/api/contacts-list parameters: - name: includes in: query required: false schema: type: string description: Comma-separated list of optional includes requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/PostContactsListRequest' responses: '200': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostContactsListResponse' /contacts.tag: post: operationId: post_contacts_tag tags: - Contacts summary: Add a new or existing tag to a contact x-source: https://developer.focus.teamleader.eu/docs/api/contacts-tag requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostContactsTagRequest' responses: '204': description: Success (status as documented) /contacts.unlinkFromCompany: post: operationId: post_contacts_unlinkFromCompany tags: - Contacts summary: Unlink a contact from a company x-source: https://developer.focus.teamleader.eu/docs/api/contacts-unlink-from-company requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostContactsUnlinkfromcompanyRequest' responses: '204': description: Success (status as documented) /contacts.untag: post: operationId: post_contacts_untag tags: - Contacts summary: Remove a tag from a contact x-source: https://developer.focus.teamleader.eu/docs/api/contacts-untag requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostContactsUntagRequest' responses: '204': description: Success (status as documented) /contacts.update: post: operationId: post_contacts_update tags: - Contacts summary: Update a contact with tags and custom fields, replacing collections entirely x-source: https://developer.focus.teamleader.eu/docs/general-principles requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostContactsUpdateRequest' responses: '204': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostContactsUpdateResponse' /contacts.updateCompanyLink: post: operationId: post_contacts_updateCompanyLink tags: - Contacts summary: Update contact to company link x-source: https://developer.focus.teamleader.eu/docs/api/contacts-update-company-link requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostContactsUpdatecompanylinkRequest' responses: '204': description: Success (status as documented) /contacts.uploadAvatar: post: operationId: post_contacts_uploadAvatar tags: - Contacts summary: Update the avatar of a contact x-source: https://developer.focus.teamleader.eu/docs/api/contacts-upload-avatar requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostContactsUploadavatarRequest' responses: '204': description: Success (status as documented) components: schemas: PostContactsUploadavatarRequest: type: object properties: id: type: string image: type: string description: Use null to remove the avatar required: - id - image PostContactsAddResponse: type: object properties: data: type: object PostContactsUnlinkfromcompanyRequest: type: object properties: id: type: string company_id: type: string required: - id - company_id PostContactsUpdateRequest: type: object properties: id: type: string description: The contact ID to update tags: type: array description: Array of tags for the contact custom_fields: type: array description: Array of custom field objects with id and value custom_fields_update_strategy: type: string description: Strategy for updating custom fields; use 'partial' for partial updates required: - id PostContactsAddRequest: type: object properties: first_name: type: string last_name: type: string emails: type: object salutation: type: string telephones: type: object website: type: string addresses: type: object language: type: string gender: type: string birthdate: type: string iban: type: string bic: type: string national_identification_number: type: string remarks: type: string description: This is the background information in Markdown tags: type: string custom_fields: type: object marketing_mails_consent: type: boolean price_list_id: type: string required: - first_name - last_name PostContactsUntagRequest: type: object properties: id: type: string tags: type: string required: - id - tags PostContactsTagRequest: type: object properties: id: type: string tags: type: string required: - id - tags PostContactsListResponse: type: object properties: data: type: object PostContactsInfoRequest: type: object properties: id: type: string required: - id PostContactsUpdatecompanylinkRequest: type: object properties: id: type: string company_id: type: string position: type: string decision_maker: type: boolean required: - id - company_id PostContactsUpdateResponse: type: object properties: type: type: string description: Resource type id: type: string description: The ID of the updated contact PostContactsInfoResponse: type: object properties: data: type: object PostContactsDeleteRequest: type: object properties: id: type: string required: - id PostContactsListRequest: type: object properties: filter: type: object page: type: object sort: type: object includes: type: string PostContactsLinktocompanyRequest: type: object properties: id: type: string company_id: type: string position: type: string decision_maker: type: boolean required: - id - company_id securitySchemes: bearer: type: http scheme: bearer