Legacy alias: bootstrap or page investment changes for a company
GET/companies/:company_id/investments/changes
This endpoint has been deprecated and may be replaced or removed in future versions of the API.
Compatibility alias. This path keeps working unchanged for partners already on it,
but new integrations should use List or sync investments
(GET /investments?company_id=…): same records, interchangeable cursors. The
migration notes
list the differences.
The Investment Delta API: keep a copy of a company's investment records in sync by
polling. Call without cursor to bootstrap (list every current record for the
company); every response carries meta.next_cursor; call again with that cursor to
receive only the records whose published state changed since. Records are the same
shape in both modes.
- Records are published state, not live rows: Wefunder publishes a record when the investment's founder-visible state changes, and serves exactly what was published.
visible: falserecords are tombstones: the investment is no longer visible to the company (canceled, converted to another round, hidden, or deleted). Delete your copy.- Apply records in
cursororder.observed_atis when the payload was observed, not a version; a record you read late carries the current published state. - 410 Gone means your cursor predates the 90-day retention window. Bootstrap again and replace your dataset for the company from the result (records absent from the bootstrap are deleted).
- Investor identity fields (
investor.name,investor.legal_name,investor.email,investor.address,investor.bio,message,external_username) are omitted unless the token carriesread:investors:pii. - Money is integer minor units plus
amounts.currency(committed_cents,investment_size_cents,in_escrow_cents,contracts[].override_amount_cents).sharesandaverage_share_priceare decimal strings,nullon rounds without shares.amounts.raised_centsis the row's contribution to the public raised figure (0 whileneeds_whitelisting); sum it, notcommitted_cents, to match the deal page.
Request
Responses
- 200
- 400
- 401
- 403
- 410
- 429
A page of records.
Malformed cursor.
Authentication required or token is invalid/expired. This error occurs when:
- No Authorization header is provided
- The access token is invalid or malformed
- The access token has expired
- The access token has been revoked
To resolve: Obtain a new access token using the OAuth 2.0 flow.
Token lacks both read:investments and read:companies, or the user cannot edit this company.
The cursor is older than the retention window. Bootstrap again (no cursor) and replace your stored records for this company.
Too many requests in a short time period. The API enforces rate limits to ensure fair usage and system stability. When you exceed the limit, you'll receive this error along with headers indicating when you can retry.
Check the X-RateLimit-Reset header to know when your limit will reset.
Consider implementing exponential backoff in your application.
Response Headers
Request limit per hour
Remaining requests
UTC timestamp when the limit resets