ObraLedger

Type to search.

Create a contact

Add somebody to your books from your own system. A form on your website, a lead out of your CRM, a customer you're migrating across.

post /api/public/v1/contacts

Headers

Header Value Why
X-AUTH-TOKEN obl_live_... Your API key. Every call needs one.
Content-Type application/json This call sends a body.
Idempotency-Key a value unique to this request So a retry whose first answer got lost cannot create a second record.

What you send

Every field here is one you can set. The rest are ours to fill in.

Request body fields
Field Type
firstNamemax 100string
middleNamemax 100string
lastNamemax 100string
nickNamemax 100string
salutationmax 50string
titlemax 100string
jobTitlemax 150string
departmentmax 100string
emailmax 180string
phoneOfficestring
phoneMobilestring
phoneHomestring
phoneOtherstring
faxstring
assistantNamestring
assistantPhonestring
descriptionstring
birthDatestring
genderstring
companyIdstring
isCustomerboolean
isSupplierboolean
isPrimaryboolean
doNotCallboolean
lifecycleStagestring
leadSourcestring
reportsToIdstring
tagsarray

The call

Request
curl -X POST https://app.obraledger.com/api/public/v1/contacts \
  -H "X-AUTH-TOKEN: obl_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{ ... }'

Want to fill this in and run it? Open it in the playground.

What comes back

One contact.

Shape of the response

Generated from the contract, so it is every field and nothing invented. The values are type names rather than a specimen record - we won't put made-up data on a page.

{
  "id": "string",
  "createdAt": "string",
  "updatedAt": "string",
  "firstName": "string",
  "middleName": "string",
  "lastName": "string",
  "nickName": "string",
  "salutation": "string",
  "title": "string",
  "jobTitle": "string",
  "department": "string",
  "email": "string",
  "phoneOffice": "string",
  "phoneMobile": "string",
  "phoneHome": "string",
  "phoneOther": "string",
  "fax": "string",
  "assistantName": "string",
  "assistantPhone": "string",
  "description": "string",
  "birthDate": "string",
  "gender": "string",
  "companyId": "string",
  "isCustomer": false,
  "isSupplier": false,
  "isPrimary": false,
  "doNotCall": false,
  "lifecycleStage": "string",
  "leadSource": "string",
  "reportsToId": "string",
  "tags": []
}

When it fails

Match on the type in the body, not on the status. A 403 covers both "this key can't do that" and "this record won't allow it", and the number alone can't tell you which.

  • 400 The request could not be read as a request.

    malformed_request

  • 401 Authentication failed — the `X-AUTH-TOKEN` header is missing, malformed, revoked, or belongs to a different company. Not retryable: the same token will fail identically.

    unauthenticated

  • 403 Authenticated, but not allowed to do this.

    forbidden scope_required

  • 422 The request was understood and its content was rejected.

    validation_failed idempotency_key_required

  • 429 Rate limit exceeded for this API key. `Retry-After` says how many seconds to wait; `X-RateLimit-Limit` and `X-RateLimit-Remaining` report the budget on every response, not just this one.

    rate_limited

The rest of contacts

Base URL https://app.obraledger.com. This page is generated from the contract the product publishes.

Building something and stuck? Tell us - we'd rather hear it than have you guess.