Skip to content
Partner API Docs

Corporate actions and shareholder voting

Discover authoritative issuer events, determine customer entitlement, submit elections and votes, and retain custodian-confirmation evidence.

The Corporate Governance API covers the full instruction lifecycle for corporate actions and shareholder meetings. List endpoints are suitable for discovery; always retrieve a record by ID immediately before displaying terms or accepting an instruction. The detail response is the authoritative MyStocks record and includes the source version, options, deadlines, default treatment, and supporting documents.

Corporate-action workflow

StepEndpointPurpose
DiscoverGET /corporate-actionsList events across symbols and exchanges; filter by symbol, exchange, type, or status.
Retrieve termsGET /corporate-actions/{actionId}Obtain the current authoritative terms, documents, election options, deadline, and default.
Check entitlementGET /users/{userId}/corporate-actions/{actionId}/entitlementReturn the frozen record-date position and any existing instruction.
Track instructionGET /users/{userId}/corporate-actions/{actionId}/electionsRead the latest revision and custodian status.
Submit or amendPOST /users/{userId}/corporate-actions/{actionId}/electionsSubmit rights, tender, merger, or dividend instructions. Repeating the operation with a new key creates a new revision.

Writes require an Idempotency-Key. Use a stable key for retries of the same request and a new key only when the customer intentionally changes the instruction. An accepted or rejected response is not inferred from HTTP success: a successful write initially returns PENDING_CUSTODIAN. Poll the election resource until it becomes ACCEPTED or REJECTED, and retain custodianReference, acceptedAt, and confirmationDocumentUrl when supplied.

curl -X POST "https://mystocks.africa/api/v1/partner/users/usr_123/corporate-actions/ca_123/elections" \
  -H "Authorization: Bearer pk_live_..." \
  -H "Idempotency-Key: election-ca-123-revision-1" \
  -H "Content-Type: application/json" \
  -d '{
    "optionId": "SUBSCRIBE",
    "units": 250,
    "acknowledgement": "Customer reviewed the issuer terms, deadline and default treatment."
  }'

Shareholder-meeting workflow

StepEndpointPurpose
DiscoverGET /shareholder-meetingsList AGM, EGM, court, class, and other meetings.
Retrieve meetingGET /shareholder-meetings/{meetingId}Obtain resolutions, meeting dates, and proxy documents.
Check ballotGET /users/{userId}/shareholder-meetings/{meetingId}/ballotReturn record-date voting units, ballot choices, and an existing vote.
Track voteGET /users/{userId}/shareholder-meetings/{meetingId}/votesRead the latest vote revision and custodian evidence.
Submit or amendPOST /users/{userId}/shareholder-meetings/{meetingId}/votesSubmit resolution-level choices or replace them before the deadline.
const meetings = await client.corporateGovernance.listMeetings({ exchange: "NSE", status: "OPEN" });
const ballot = await client.corporateGovernance.getBallot("usr_123", meetings.meetings[0].id);
 
const result = await client.corporateGovernance.submitVote(
  "usr_123",
  ballot.meeting.id,
  {
    ballots: ballot.ballot.map((resolution) => ({ resolutionId: resolution.id, choice: "FOR" })),
    acknowledgement: "Customer reviewed the proxy materials and confirmed these choices.",
  },
  { idempotencyKey: `vote-${ballot.meeting.id}-revision-1` },
);

Entitlement and cut-offs

Entitlement is based on the position snapshot captured for the issuer record date, not the customer's current portfolio. A current holding does not prove entitlement, and a current zero balance does not remove a previously captured entitlement. MyStocks publishes a customer deadline before the downstream custodian or registrar cut-off so instructions can be validated and aggregated. If no valid instruction is accepted by that deadline, the event's defaultOptionId or meeting defaultTreatment applies.

Operational controls

  • Display issuer documents and the latest detail response before collecting an instruction.
  • Record the customer acknowledgement and your own case or journey reference in note where applicable.
  • Never treat submission as downstream acceptance; use the returned instruction status.
  • Preserve every revision, idempotency key, custodian reference, timestamp, and confirmation document.
  • Stop accepting new instructions when the event or meeting is closed, cancelled, or past its deadline.
  • Reconcile aggregate submitted units and voting units to the custodian or registrar confirmation.

The sandbox base URL exposes the same routes and idempotency rules. Sandbox records and confirmation evidence are simulated and must never be used as proof of a live market instruction.

See Webhooks, Custody, and Complaints, reversals, corporate actions, and insolvency.

Was this page useful?

Your signal helps us tighten partner onboarding docs.

Last updated on

On this page