Salesforce REST API

The Salesforce REST API provides programmatic access to your Salesforce org data, letting you create, read, update, and delete records, execute queries, and manage org metadata. Supports OAuth 2.0 authentication and returns JSON or XML responses.

OpenAPI Specification

salesforcecom-rest-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Salesforce REST API
  description: >-
    The Salesforce REST API provides programmatic access to Salesforce org data,
    enabling create, read, update, and delete (CRUD) operations on standard and
    custom objects, SOQL query execution, metadata retrieval, and org configuration.
    Supports OAuth 2.0 authentication and returns JSON or XML responses.
  version: 60.0
  contact:
    name: Salesforce Developer
    url: https://developer.salesforce.com
  license:
    name: Salesforce Developer Agreement
    url: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest
servers:
  - url: https://{instance}.salesforce.com
    description: Salesforce org instance
    variables:
      instance:
        default: na1
        description: Salesforce instance subdomain (e.g. na1, eu6, ap1)
tags:
  - name: Records
    description: CRUD operations on Salesforce sObject records
  - name: Query
    description: SOQL query execution
  - name: Search
    description: SOSL search execution
  - name: Metadata
    description: sObject metadata and describe operations
  - name: Composite
    description: Composite API for batching multiple operations
  - name: Versions
    description: API version information
security:
  - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 Bearer access token obtained via Salesforce Connected App
  schemas:
    sObject:
      type: object
      description: A Salesforce standard or custom object record
      properties:
        Id:
          type: string
          description: Unique 18-character Salesforce record ID
        attributes:
          type: object
          properties:
            type:
              type: string
              description: sObject API name (e.g., Account, Contact)
            url:
              type: string
              description: REST API URL for this record
        Name:
          type: string
          description: Primary name field of the record
        CreatedDate:
          type: string
          format: date-time
          description: Timestamp when the record was created
        LastModifiedDate:
          type: string
          format: date-time
          description: Timestamp when the record was last modified
        OwnerId:
          type: string
          description: ID of the user or queue who owns the record
        IsDeleted:
          type: boolean
          description: Whether the record is in the recycle bin
      additionalProperties: true
    QueryResult:
      type: object
      description: SOQL query result envelope
      properties:
        totalSize:
          type: integer
          description: Total number of records matching the query
        done:
          type: boolean
          description: Whether all results have been returned
        nextRecordsUrl:
          type: string
          description: URL to retrieve the next page when done is false
        records:
          type: array
          items:
            $ref: '#/components/schemas/sObject'
      required:
        - totalSize
        - done
        - records
    SObjectDescribe:
      type: object
      description: Metadata description of a Salesforce sObject type
      properties:
        name:
          type: string
          description: API name of the sObject (e.g., Account)
        label:
          type: string
          description: User-facing label
        labelPlural:
          type: string
          description: Plural user-facing label
        keyPrefix:
          type: string
          description: 3-character prefix of the record ID
        fields:
          type: array
          items:
            type: object
          description: Field metadata list
        urls:
          type: object
          description: REST endpoint URLs for this sObject
        createable:
          type: boolean
        updateable:
          type: boolean
        deleteable:
          type: boolean
        queryable:
          type: boolean
    ErrorResponse:
      type: array
      items:
        type: object
        properties:
          message:
            type: string
            description: Error message
          errorCode:
            type: string
            description: Salesforce error code (e.g., ENTITY_IS_DELETED)
          fields:
            type: array
            items:
              type: string
            description: Fields that caused the error
paths:
  /services/data:
    get:
      tags:
        - Versions
      summary: List Available API Versions
      description: >-
        Returns a list of available Salesforce REST API versions. Use this to
        determine which API version to use for subsequent requests.
      operationId: listApiVersions
      security: []
      responses:
        '200':
          description: List of available API versions
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    version:
                      type: string
                      description: API version string (e.g., "60.0")
                    label:
                      type: string
                      description: Version label
                    url:
                      type: string
                      description: Base URL for this version

  /services/data/v{version}/sobjects:
    get:
      tags:
        - Metadata
      summary: List All sObjects
      description: >-
        Returns a list of all sObjects available in the Salesforce org, including
        metadata counts and timestamps for the most recently modified objects.
      operationId: listSObjects
      parameters:
        - name: version
          in: path
          required: true
          description: Salesforce API version (e.g., 60.0)
          schema:
            type: string
            default: "60.0"
      responses:
        '200':
          description: List of all sObjects
          content:
            application/json:
              schema:
                type: object
                properties:
                  encoding:
                    type: string
                  maxBatchSize:
                    type: integer
                  sobjects:
                    type: array
                    items:
                      type: object
        '401':
          description: Unauthorized - invalid or expired access token

  /services/data/v{version}/sobjects/{sObjectName}:
    get:
      tags:
        - Metadata
      summary: Get sObject Metadata
      description: >-
        Returns metadata for the specified sObject type, including field definitions,
        relationships, limits, and API URLs.
      operationId: getSObjectMetadata
      parameters:
        - name: version
          in: path
          required: true
          description: Salesforce API version
          schema:
            type: string
            default: "60.0"
        - name: sObjectName
          in: path
          required: true
          description: API name of the sObject (e.g., Account, Contact, Opportunity)
          schema:
            type: string
      responses:
        '200':
          description: sObject metadata
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SObjectDescribe'
        '404':
          description: sObject not found

  /services/data/v{version}/sobjects/{sObjectName}/describe:
    get:
      tags:
        - Metadata
      summary: Describe sObject Fields
      description: >-
        Returns the full field-level describe result for the specified sObject type,
        including all field metadata, picklist values, relationships, and child objects.
      operationId: describeSObject
      parameters:
        - name: version
          in: path
          required: true
          description: Salesforce API version
          schema:
            type: string
            default: "60.0"
        - name: sObjectName
          in: path
          required: true
          description: API name of the sObject (e.g., Account, Contact)
          schema:
            type: string
      responses:
        '200':
          description: Full sObject describe result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SObjectDescribe'

  /services/data/v{version}/sobjects/{sObjectName}/{id}:
    get:
      tags:
        - Records
      summary: Get sObject Record
      description: >-
        Retrieves a specific sObject record by its Salesforce ID. You can retrieve
        all fields or specify a comma-separated list of fields to return.
      operationId: getSObjectRecord
      parameters:
        - name: version
          in: path
          required: true
          description: Salesforce API version
          schema:
            type: string
            default: "60.0"
        - name: sObjectName
          in: path
          required: true
          description: API name of the sObject (e.g., Account, Contact)
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: 18-character Salesforce record ID
          schema:
            type: string
        - name: fields
          in: query
          required: false
          description: Comma-separated list of fields to return
          schema:
            type: string
      responses:
        '200':
          description: sObject record
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sObject'
        '404':
          description: Record not found
        '401':
          description: Unauthorized
    patch:
      tags:
        - Records
      summary: Update sObject Record
      description: >-
        Updates one or more fields of the specified sObject record. You only need
        to include fields you want to update in the request body.
      operationId: updateSObjectRecord
      parameters:
        - name: version
          in: path
          required: true
          description: Salesforce API version
          schema:
            type: string
            default: "60.0"
        - name: sObjectName
          in: path
          required: true
          description: API name of the sObject (e.g., Account, Contact)
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: 18-character Salesforce record ID
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              description: Fields to update on the record
      responses:
        '204':
          description: Record updated successfully (no body)
        '400':
          description: Bad request - validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Record not found
    delete:
      tags:
        - Records
      summary: Delete sObject Record
      description: >-
        Deletes the specified sObject record. Deleted records are moved to the
        Salesforce recycle bin and can be undeleted within 15 days.
      operationId: deleteSObjectRecord
      parameters:
        - name: version
          in: path
          required: true
          description: Salesforce API version
          schema:
            type: string
            default: "60.0"
        - name: sObjectName
          in: path
          required: true
          description: API name of the sObject (e.g., Account, Contact)
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: 18-character Salesforce record ID
          schema:
            type: string
      responses:
        '204':
          description: Record deleted successfully
        '404':
          description: Record not found

  /services/data/v{version}/sobjects/{sObjectName}:
    post:
      tags:
        - Records
      summary: Create sObject Record
      description: >-
        Creates a new sObject record of the specified type. Returns the ID and
        success status of the created record.
      operationId: createSObjectRecord
      parameters:
        - name: version
          in: path
          required: true
          description: Salesforce API version
          schema:
            type: string
            default: "60.0"
        - name: sObjectName
          in: path
          required: true
          description: API name of the sObject (e.g., Account, Contact)
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              description: Fields for the new record
      responses:
        '201':
          description: Record created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the created record
                  success:
                    type: boolean
                  errors:
                    type: array
                    items:
                      type: object
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'

  /services/data/v{version}/query:
    get:
      tags:
        - Query
      summary: Execute SOQL Query
      description: >-
        Executes a SOQL (Salesforce Object Query Language) query and returns the
        matching records. Use nextRecordsUrl for pagination when done is false.
      operationId: executeQuery
      parameters:
        - name: version
          in: path
          required: true
          description: Salesforce API version
          schema:
            type: string
            default: "60.0"
        - name: q
          in: query
          required: true
          description: SOQL query string (e.g., SELECT Id, Name FROM Account LIMIT 200)
          schema:
            type: string
      responses:
        '200':
          description: SOQL query result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryResult'
        '400':
          description: Invalid SOQL query
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'

  /services/data/v{version}/queryAll:
    get:
      tags:
        - Query
      summary: Execute SOQL Query Including Deleted Records
      description: >-
        Executes a SOQL query and returns all matching records including those
        that have been soft-deleted (in the recycle bin). Equivalent to using
        the ALL ROWS clause in SOQL.
      operationId: executeQueryAll
      parameters:
        - name: version
          in: path
          required: true
          description: Salesforce API version
          schema:
            type: string
            default: "60.0"
        - name: q
          in: query
          required: true
          description: SOQL query string
          schema:
            type: string
      responses:
        '200':
          description: SOQL query result including deleted records
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryResult'

  /services/data/v{version}/search:
    get:
      tags:
        - Search
      summary: Execute SOSL Search
      description: >-
        Executes a SOSL (Salesforce Object Search Language) search across multiple
        sObject types simultaneously. Returns matching records from all specified
        objects in a single call.
      operationId: executeSearch
      parameters:
        - name: version
          in: path
          required: true
          description: Salesforce API version
          schema:
            type: string
            default: "60.0"
        - name: q
          in: query
          required: true
          description: >-
            SOSL search string (e.g., FIND {Joe Smith} IN ALL FIELDS RETURNING Account, Contact)
          schema:
            type: string
      responses:
        '200':
          description: SOSL search results
          content:
            application/json:
              schema:
                type: object
                properties:
                  searchRecords:
                    type: array
                    items:
                      $ref: '#/components/schemas/sObject'

  /services/data/v{version}/limits:
    get:
      tags:
        - Metadata
      summary: Get Org Limits
      description: >-
        Returns the limits for your Salesforce org, including current usage and
        maximum allowed values for API calls, data storage, file storage, and more.
      operationId: getOrgLimits
      parameters:
        - name: version
          in: path
          required: true
          description: Salesforce API version
          schema:
            type: string
            default: "60.0"
      responses:
        '200':
          description: Org limits
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  properties:
                    Max:
                      type: integer
                    Remaining:
                      type: integer

  /services/data/v{version}/composite/batch:
    post:
      tags:
        - Composite
      summary: Execute Composite Batch
      description: >-
        Executes up to 25 subrequests in a single API call. Each subrequest can
        be a SOQL query, CRUD operation, or metadata retrieval. Failed subrequests
        do not prevent others from executing (unlike Composite).
      operationId: compositeBatch
      parameters:
        - name: version
          in: path
          required: true
          description: Salesforce API version
          schema:
            type: string
            default: "60.0"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                batchRequests:
                  type: array
                  maxItems: 25
                  items:
                    type: object
                    properties:
                      method:
                        type: string
                        enum: [GET, POST, PATCH, DELETE]
                      url:
                        type: string
                        description: Relative URL for this subrequest
                      richInput:
                        type: object
                        description: Request body for POST/PATCH subrequests
                haltOnError:
                  type: boolean
                  description: Stop processing on first error
      responses:
        '200':
          description: Batch results
          content:
            application/json:
              schema:
                type: object
                properties:
                  hasErrors:
                    type: boolean
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        statusCode:
                          type: integer
                        result:
                          type: object

  /services/data/v{version}/composite:
    post:
      tags:
        - Composite
      summary: Execute Composite Request
      description: >-
        Executes a series of REST API requests in a single call. Allows you to
        use the output of one subrequest as the input for subsequent subrequests
        using reference IDs. Supports up to 25 subrequests.
      operationId: compositeRequest
      parameters:
        - name: version
          in: path
          required: true
          description: Salesforce API version
          schema:
            type: string
            default: "60.0"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                allOrNone:
                  type: boolean
                  description: Roll back all subrequests if any fail
                compositeRequest:
                  type: array
                  maxItems: 25
                  items:
                    type: object
                    properties:
                      method:
                        type: string
                        enum: [GET, POST, PATCH, DELETE]
                      url:
                        type: string
                      referenceId:
                        type: string
                        description: ID for referencing this result in later subrequests
                      body:
                        type: object
      responses:
        '200':
          description: Composite results
          content:
            application/json:
              schema:
                type: object
                properties:
                  compositeResponse:
                    type: array
                    items:
                      type: object
                      properties:
                        body:
                          type: object
                        httpStatusCode:
                          type: integer
                        referenceId:
                          type: string