Use the OnRamp API to Access and Manage Your Data

Last updated: March 23, 2026

The OnRamp API lets you securely read and write data from your OnRamp instance — automate onboarding workflows, sync with Salesforce or HubSpot, or build custom integrations. It follows REST conventions, uses JSON for all requests and responses, and supports standard HTTP verbs (GET, POST, PUT, DELETE).

Always check the latest docs: New endpoints are added regularly. Visit https://api.onramp.us/docs for the most current reference.


Before You Begin

  • Confirm the API is enabled for your organization. Contact your OnRamp Account Manager if it’s not.

  • Generate an authentication token — required for every request.

  • Familiarize yourself with basic REST and JSON conventions.


Rate Limits

  • Read operations: up to 600 per minute

  • Write operations: up to 200 per minute

Exceeding these returns a 429 Too Many Requests response. Each request includes a unique Request ID (X-Request-Id header) — include this when contacting support@onramp.us.


URL Structure

OnRamp endpoints follow predictable RESTful patterns:

  • GET https://api.onramp.us/v1/users — list or create resources

  • GET https://api.onramp.us/v1/tasks/{task_id} — retrieve a specific record

  • POST https://api.onramp.us/v1/projects/{project_id}/archive — perform an action on a resource


Common Endpoints

Customers

  • GET /v1/customers — list all customers

  • POST /v1/customers — create a customer

  • GET /v1/customers/{customer_id} — get by ID

  • PUT /v1/customers/{customer_id} — update

  • POST /v1/customers/{customer_id}/tag/{tag_id} — add a tag

  • DELETE /v1/customers/{customer_id}/tag/{tag_id} — remove a tag

Customer Notes

Full CRUD for notes attached to a customer record. Notes are scoped to the customer (not to a specific project) and are only visible to internal users.

  • GET /v1/customers/{customer_id}/notes — list all notes for a customer

  • POST /v1/customers/{customer_id}/notes — create a note

  • GET /v1/customers/{customer_id}/notes/{note_id} — get a specific note

  • PUT /v1/customers/{customer_id}/notes/{note_id} — update a note

  • DELETE /v1/customers/{customer_id}/notes/{note_id} — delete a note

Projects

  • GET /v1/projects — list all projects

  • POST /v1/projects — create a project

  • GET /v1/projects/{project_id} — get by ID

  • PUT /v1/projects/{project_id} — update

  • GET /v1/projects/{project_uuid}/members — list members

Tasks

  • GET /v1/tasks — list all tasks

  • POST /v1/tasks — create a task

  • GET /v1/tasks/{task_id} — get by ID

  • PUT /v1/tasks/{task_id} — update

  • POST /v1/tasks/{task_id}/complete — mark complete

Users & Roles

  • GET /v1/users / POST /v1/users / GET /v1/users/{user_id} / PUT /v1/users/{user_id}

  • GET /v1/user-roles — list all user roles

Modules & Playbooks

  • GET /v1/modules / GET /v1/modules/{module_id} / PUT /v1/modules/{module_id}

  • GET /v1/playbooks

Tags & Statuses

  • GET /v1/tags / POST /v1/tags / PUT /v1/tags/{tag_id} / DELETE /v1/tags/{tag_id}

  • GET /v1/statuses

Webhooks

  • GET /v1/webhooks / POST /v1/webhooks / GET /v1/webhooks/{webhook_id}

Data Fields & Values

  • GET /v1/datafields / PUT /v1/datafields/{datafield_uuid}

  • GET /v1/datafields/{datafield_uuid}/values

  • GET /v1/datafield-values/{datafield_value_uuid} / PUT /v1/datafield-values/{datafield_value_uuid}

Bulk Datafield Value Update

Update up to 100 datafield values in a single request. Useful for bulk-populating project or account data fields from an external system without firing individual PUT calls.

  • POST /v1/datafield-values — bulk update datafield values

Key request parameters:

  • dry_run (boolean, default: true) — validate the payload without writing any changes. Set to false to commit.

  • create_option_if_missing (boolean) — for Dropdown and Multi-Select fields, automatically create the option if it doesn’t exist yet.

  • Supports all field types: text, date, user, dropdown, multi_select, number, monetary, color, link.

Response: Best-effort processing — individual value failures don’t abort the batch. The response includes success_count, failure_count, and a failures array with details on any records that didn’t update.

Note: Always run with dry_run: true first to validate your payload before committing changes.


Tips & Troubleshooting

  • Use pagination and filtering to keep responses fast.

  • Implement retry logic with exponential backoff for rate-limit errors.

  • Log X-Request-Id values for every request — you’ll need them if you contact support.

  • Validate webhook signatures to confirm authenticity.

  • 401 Unauthorized — check your authentication token.

  • 404 Not Found — verify the resource ID exists and is accessible.