Skip to content

The product

One CRM. Every next step.

Contacts, pipeline and delivery in one workspace, with AI that prepares the work for your approval.

See how Meibo works
CONNECTED WORKFLOWS / THE PRACTICAL GUIDE

Connect the records.
Keep control of the work.

A successful API call is only the beginning. Design the permissions, identifiers and recovery rules that make the whole workflow dependable.

Get the free worksheet
API / A CONTROLLED REQUEST
SOURCEYour application
GET /api/v1/records
DESTINATIONConnected CRM records
Authentication
Server-side key
Permission
records:read
Pagination
Follow next_cursor
Scoped access · stable IDs · version checksCONCEPTUAL WORKFLOW / NOT A LIVE STATUS
UNDERSTAND THE WORK.CONNECT THE DETAILS.MAKE THE NEXT STEP CLEAR.
In this guide
THE SHORT VERSION

Make the next decision clearer.

  • Start with a single business workflow and a written API contract.
  • Keep credentials on your server and grant only the scopes the integration needs.
  • Treat record identity, pagination and update conflicts as explicit design decisions.
  • Prove recovery from a timeout before trusting a repeated write.

What is a CRM API?

A CRM API is a defined interface that lets another application read or change CRM information. A website might submit an enquiry, a reporting service might retrieve opportunities, or an internal tool might update a record. The interface specifies the accepted requests, authentication, data formats and responses. It does not decide your business rules for you.

An API is different from a finished integration. The API supplies the permitted operations; the integration decides when to call them, which records correspond, what to do with failures and who owns the resulting work. An endpoint that creates a contact is useful, but a contact without the right owner or next action can still disappear from the team’s process.

Write the outcome first: “A validated website enquiry creates traceable work for our team.” Then identify the minimum operations needed. Meibo has a dedicated enquiries endpoint for that workflow. Using a general record-writing API to rebuild an existing atomic operation creates more failure points than the task needs.

Specify the contract before writing the connector

For each operation, record the source, destination, required permission, accepted fields and success condition. Include the identity rule: are you creating a genuinely new item or updating a known record? A company name is a display label, not a reliable integration key. Preserve the destination ID and the source system’s ID in an integration-owned mapping where necessary.

Keep transport success separate from business success. A successful HTTP response may mean one record was saved, while your workflow needs a linked task as well. Define the final state and a way to reconcile it. If several requests are necessary, record which steps have completed so a retry resumes the workflow instead of starting every step again.

Inspect the actual response body rather than assuming the destination echoes your request. Server-generated identifiers, versions and normalised values become inputs to the next operation. Store those values with a correlation ID so support can investigate one workflow without searching unrelated customer data.

THE WORKING MODEL

An integration contract in five decisions

DecisionRecord the answerWhy it matters
OutcomeAn enquiry becomes owned workDefines completion beyond an HTTP response
IdentitySubmission ID + destination record IDsSeparates a retry from new work
AccessWorkspace + required scopeLimits what this connection can do
FailureRetry, correct or reviewPrevents endless unsuccessful requests
EvidenceCorrelation ID + confirmed resultMakes one handoff traceable
A planning model. Adapt the details to the endpoint and workflow you actually use.

Use scoped access and a server-side boundary

An integration credential belongs in the service making the authorised request. For a public website, that normally means your server route calls the CRM while the browser calls your server. Putting a secret in browser JavaScript, a public environment variable or a form action exposes it to visitors. Hiding the button does not hide the credential.

Meibo API keys are workspace-bound and sent in the Authorization header using the Bearer scheme. The implementation checks the requested scope, expiry, revocation and whether the creator still has an owner or admin membership. Reading records requires records:read; writing them requires records:write; the enquiry workflow uses enquiries:write. Grant the narrowest combination needed [1].

Name the operational owner of the key and document replacement. Test revocation with a non-production credential: the old connection should stop working visibly, not quietly continue with a fallback key. Keep secrets out of screenshots, worksheets and request logs. Log the key identifier or integration name rather than the credential itself.

Read every page without mistaking a list for a change feed

Meibo’s record list accepts an optional kind, a limit from 1 to 100 and a cursor. The response contains data and next_cursor. Continue using the returned cursor until it is null. Fetching the first successful page does not establish that you retrieved every matching record [1].

The current cursor follows record IDs. It is not an updated-since cursor or a promise of a consistent snapshot while other people are editing. Design a repeated export or reconciliation with that limitation in mind. Do not use the last ID from yesterday’s listing as a way to find every record changed today.

For a large initial load, save progress after the destination has accepted the relevant batch. If your process stops halfway through, restarting should recognise records already applied. Reconcile identifiers and selected field values as well as totals: two lists can have the same count while containing different records.

Read-only example · run on your serverShell
curl --fail-with-body \
  "https://app.meibolabs.com/api/v1/records?limit=50" \
  -H "Authorization: Bearer $MEIBO_API_KEY"
Use your server’s secret environment variable. Read next_cursor from the response and URL-encode it for the next request; this single call retrieves only one page.

Handle updates, conflicts and ambiguous timeouts

A record update must target a known identity. In Meibo, updating an existing record uses its id and version; a conflicting version produces a 409 response. Read the current state and decide whether the intended change is still valid. Blindly retrying an old payload with a newer version can overwrite work that a teammate just completed [1].

A timeout is ambiguous: the server may have saved a write before the response was lost. Repeating a create request without a documented retry contract can create a second record. Idempotency means repeating an operation has the same intended effect, not that every POST endpoint automatically provides that behaviour [2].

Use an endpoint’s explicit idempotency mechanism where available. Meibo’s enquiry endpoint requires an Idempotency-Key; its general records endpoint should not be assumed to share that contract. For multi-step integrations, design identity mapping, read-back checks and a durable operation log before deciding which failed requests can safely be retried.

THE WORKING MODEL

Respond to the cause, not just the status

ResponseLikely actionAvoid
401 / 403Check key, scope and membershipRepeating an unauthorised request
Validation errorCorrect the request against the schemaDropping required data to force success
409 conflictRead current state; apply the conflict ruleOverwriting a newer edit blindly
429 rate limitRespect Retry-After; slow the queueAdding more traffic immediately
Timeout / 5xxCheck retry safety; recover with backoffAssuming the write never happened
Status handling must follow the endpoint contract. A timeout can leave the write outcome unknown.

Classify errors instead of retrying everything

Authentication failures need a credential check. Permission failures need a scope or membership check. A validation error needs a corrected request. A conflict needs a decision about current state. None becomes a successful operation merely because the worker repeats it quickly. Preserve a useful error category and a redacted explanation for the person responsible.

Rate limiting is different. Meibo currently limits a key to 120 requests per minute and returns 429 with Retry-After: 60 when that limit is exceeded. Slow the integration and honour the response rather than spreading the same work across more keys. Keep a bounded queue so an outage does not trigger an uncontrolled burst when service returns [1].

For transient failures, use a limited retry policy with backoff and jitter, then surface unresolved work. A dashboard saying “connected” is insufficient. The operator needs the age of the oldest pending item, the last confirmed success and a way to identify the records requiring attention.

Prove the complete workflow before launch

Run a representative create, read and update in a test workspace. Verify the resulting links, owner and visible next action in the CRM. Then repeat with invalid fields, an expired credential, insufficient permissions and an old record version. Record the expected outcome before each test and the observed outcome afterwards.

Test an ambiguous timeout deliberately in a controlled environment. Establish whether the write happened, then exercise your recovery path. Test more than one page of records and a worker restart midway through a batch. These cases reveal whether the connector is robust beyond its first successful request.

The worksheet below separates an API response from a business acceptance check. Assign an owner to each unresolved case. Ship a narrow, observable workflow first; add more objects and directions once that workflow can recover without someone editing the database by hand.

FREE RESOURCE / NO SIGNUP REQUIRED

CRM API acceptance checklist.

Test permissions, pagination, conflicts and recovery. Record the expected business result alongside the response and the evidence.

Download CSVOpens in spreadsheet software. Planning worksheet, not a direct CRM import file. All example rows are illustrative.

Common questions.

What is the difference between an API and an integration?+

An API defines the operations another system can request. An integration uses those operations to complete a workflow, including mapping, scheduling, error handling and recovery.

Can I call a CRM API from a public website?+

Route requests that need a secret key through your server. Validate and protect the public endpoint separately; never embed a workspace API key in browser code.

Does a successful request mean the integration works?+

It proves that request succeeded. Verify the resulting records, relationships, ownership and downstream action, then test failure and retry paths.

How do I avoid duplicates when retrying a request?+

Use the endpoint’s documented idempotency mechanism or an identity-based recovery design. Do not assume adding an Idempotency-Key header changes an endpoint that does not implement it.

What should happen after a 409 conflict?+

Read the current record and compare it with the intended change. Apply an agreed conflict rule or request review; do not overwrite a newer version automatically.

Do I need polling if I have webhooks?+

Often you still need an initial load and periodic reconciliation. Events can make updates faster, while reconciliation checks whether the systems agree. Verify the provider’s delivery and history capabilities.

Sources & methodology.

Meibo’s recommended framework, with primary documentation for the specific product facts cited above. This is AI-assisted editorial content. Examples, diagrams and calculations are illustrative; they are not customer results or independent research findings.

  1. Meibo developer documentation

    The Meibo-specific contract. Examples were checked against the API and webhook implementation; they are not a claim that every external integration has been deployed or verified.

  2. MDN — Idempotent

    Defines idempotency in terms of the intended server effect of repeated requests. Endpoint-specific guarantees still need their own contract.

Sources checked 7 October 2026. Read the editorial policy or suggest a correction.

William Mattey

Founder of Wall & Fifth, builder of Meibo and editorial contact for the learning library.

About the editorial lead
THE COMPLETE IMPLEMENTATION PLAYBOOKBring the decisions together in a practical rollout plan.