Skip to main content

Bug fixes

Validation and not-found errors on the company HTTP endpoints (issue #858) The three company HTTP endpoints — http_attio_company_add, http_attio_companies_search, and http_attio_company_update — wrap the typed-error contract of libs/attio/companies.py, but their except clause allowed only (ValueError, RuntimeError, KeyError, AttributeError, TypeError, ConflictError). The typed errors the library raises locally on Pydantic-valid input — AttioValidationError for an empty search query or a missing record selector, and AttioNotFoundError for a domain selector that matches nothing — are not subclasses of any caught type, so they escaped the @modal.fastapi_endpoint wrapper and surfaced as HTTP 500. error_response_from_exception already classified both to 400 and 404; the wrappers simply never called it for them. The catch is now except Exception — the same pattern the note endpoints use — so a future AttioError subclass can’t silently reopen the gap. The conflict path was already correct and is unchanged.
Last modified on October 2, 2026