Supported Resources
Public API v2 is consistent where possible, but not every record type supports every action. Use this page before building a generic integration. Legend:- Supported: the endpoint exists and is intended for use.
- Not available: the endpoint is not implemented for this resource.
- Explicit 405: the route exists but rejects the method because the resource is read-only for that action.
- 400 unsupported: the route exists but rejects the sub-resource for that record type.
| Resource | Create | Read by ID | Query | Patch | Archive | _assert | Relationships | Attribute sub-resources |
|---|---|---|---|---|---|---|---|---|
contact | Supported | Supported | Supported | Supported | Supported | Supported | Typed accounts, typed opportunities, and generic relationship names | contact_emails, contact_phone_numbers; other names return 400 unsupported |
account | Supported | Supported | Supported | Supported | Supported | Supported | Typed contacts and generic relationship names | domains; other attribute names are not routed |
opportunity | Supported | Supported | Supported | Supported | Supported | Not available | Typed contacts and generic relationship names | Generic attribute names return 400 unsupported |
task | Supported | Supported | Supported | Supported | Supported | Not available | Generic relationship names | Generic attribute names return 400 unsupported |
note | Supported | Supported | Supported | Supported | Supported | Not available | Generic relationship names | Generic attribute names return 400 unsupported |
meeting | Explicit 405 | Supported | Supported | Explicit 405 | Explicit 405 | Not available | Generic relationship reads only | Generic attribute names return 400 unsupported |
activity | Supported | Not available | Supported | Not available | Not available | Not available | Not available | Not available |
| Custom objects | Supported | Supported | Supported | Supported | Supported | Not available | Generic relationship names | Not available |
Infrastructure endpoints
| Endpoint | Use it for |
|---|---|
GET /api/v2/health | Check that Public API v2 is mounted. This endpoint is unauthenticated. |
GET /api/v2/_schema/{record_type} | Inspect available attributes, relationships, field capabilities, and value types for a supported record type. |
Important behavior notes
- Public API v2 is served under
/api/v2. - Filtering uses
POST /api/v2/<record_type>/_query. - Create-or-update uses
POST /api/v2/contact/_assertandPOST /api/v2/account/_assertonly. - Meeting writes are intentionally read-only and return
405 method_not_allowed. - Activity is append-only: create activity logs and query them, but do not update, delete, or fetch by ID.
- Contact and opportunity stage changes use normal
PATCHrequests on thestageattribute. Account lifecycle stage usescurrent_stage_id. There is no dedicated stage-shift endpoint. - Generic relationship
PATCHis not available. Per-edgePATCHexists only on typed junction relationship endpoints.
Choosing an endpoint
If you are building a sync integration, start with: If you are building a generic client, callGET /api/v2/_schema/{record_type} before writing field values.