diff --git a/alembic/versions/17ec41bd6e9a_added_uuid_column_to_the_job_table.py b/alembic/versions/17ec41bd6e9a_added_uuid_column_to_the_job_table.py
new file mode 100644
--- /dev/null
+++ b/alembic/versions/17ec41bd6e9a_added_uuid_column_to_the_job_table.py
@@ -0,0 +1,28 @@
+"""Added UUID column to the Job table
+
+Revision ID: 17ec41bd6e9a
+Revises: 433d0b5b3b96
+Create Date: 2015-02-23 17:45:57.085449
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '17ec41bd6e9a'
+down_revision = '433d0b5b3b96'
+branch_labels = None
+depends_on = None
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+    ### commands auto generated by Alembic - please adjust! ###
+    op.add_column('job', sa.Column('uuid', sa.String(length=36), nullable=True))
+    ### end Alembic commands ###
+
+
+def downgrade():
+    ### commands auto generated by Alembic - please adjust! ###
+    op.drop_column('job', 'uuid')
+    ### end Alembic commands ###
diff --git a/resultsdb/controllers/api_v1.py b/resultsdb/controllers/api_v1.py
--- a/resultsdb/controllers/api_v1.py
+++ b/resultsdb/controllers/api_v1.py
@@ -254,6 +254,7 @@
 RP['create_job'].add_argument('ref_url', type = str, required = True, location = 'json')
 RP['create_job'].add_argument('status', type = str, default = 'SCHEDULED', location = 'json')
 RP['create_job'].add_argument('name', type = str, default = None, location = 'json')
+RP['create_job'].add_argument('uuid', type = str, default = None, location = 'json')
 
 RP['update_job'] = reqparse.RequestParser()
 RP['update_job'].add_argument('status', type = str, required = True, location = 'json')
@@ -284,8 +285,14 @@
 @api.route('/v1.0/jobs/<job_id>', methods = ['GET'])
 def get_job(job_id):
     try:
-        job = Job.query.filter_by(id = job_id).one()
-    except orm_exc.NoResultFound:
+        job_id = int(job_id)
+    except ValueError: # uuid can not be parsed to int
+        q =  Job.query.filter_by(uuid = job_id)
+    else: # id was int -> filter by id
+        q =  Job.query.filter_by(id = job_id)
+
+    job = q.first()
+    if not job:
         return jsonify({'message': "Job not found" }), 404
 
     return jsonify(SERIALIZE(job))
@@ -307,7 +314,7 @@
     if args['status'] is None:
         args['status'] = 'SCHEDULED'
 
-    job = Job(args['status'], args['ref_url'], args['name'])
+    job = Job(args['status'], args['ref_url'], args['name'], args['uuid'])
     db.session.add(job)
     db.session.commit()
 
@@ -486,7 +493,6 @@
     except HTTPException as error:
         return jsonify(error.data), error.code
 
-
     try:
         job = Job.query.filter_by(id = args['job_id']).one()
     except orm_exc.NoResultFound:
diff --git a/resultsdb/models/results.py b/resultsdb/models/results.py
--- a/resultsdb/models/results.py
+++ b/resultsdb/models/results.py
@@ -45,13 +45,15 @@
     end_time = db.Column(db.DateTime)
     ref_url = db.Column(db.Text)
     name = db.Column(db.Text)
+    uuid = db.Column(db.String(36))
 
     results = db.relation('Result', backref = 'job') #, lazy = False)
 
-    def __init__(self, status = 'SCHEDULED', ref_url = None, name = None):
+    def __init__(self, status = 'SCHEDULED', ref_url = None, name = None, uuid = None):
         self.status = status
         self.ref_url = ref_url
         self.name = name
+        self.uuid = uuid
 
 
 class Testcase(db.Model, DBSerialize):
diff --git a/resultsdb/serializers/api_v1.py b/resultsdb/serializers/api_v1.py
--- a/resultsdb/serializers/api_v1.py
+++ b/resultsdb/serializers/api_v1.py
@@ -27,6 +27,7 @@
     def _serialize_Job(self, o, job_load_results = True, **kwargs):
         rv = dict(
                 id = o.id,
+                uuid = o.uuid,
                 name = o.name,
                 status = o.status,
                 start_time = o.start_time,
diff --git a/testing/functest_api.py b/testing/functest_api.py
--- a/testing/functest_api.py
+++ b/testing/functest_api.py
@@ -43,6 +43,7 @@
         self.ref_testcase_name = "testcase"
         self.ref_testcase_url = "http://fedoraqa.fedoraproject.org/%s" % self.ref_testcase_name
         self.ref_job_id = 1
+        self.ref_job_uuid = '12-3456-7890'
         self.ref_job_url = "http://fedoraqa.fedoraproject.org"
         self.ref_job_name = "F20 Virtualization Testday"
         self.ref_status = "SCHEDULED"
@@ -138,15 +139,21 @@
         assert data['data'] == []
 
     def test_create_job(self):
-        ref_data = json.dumps({'ref_url': self.ref_job_url, 'status': self.ref_status, 'name': self.ref_job_name})
+        ref_data = json.dumps({
+            'ref_url': self.ref_job_url,
+            'status': self.ref_status,
+            'name': self.ref_job_name,
+            'uuid': self.ref_job_uuid,
+            })
 
         r = self.app.post('/api/v1.0/jobs', data=ref_data, content_type='application/json')
 
         data = json.loads(r.data)
 
         assert r.status_code == 201
         assert data['ref_url'] == self.ref_job_url
         assert data['status'] == self.ref_status
+        assert data['uuid'] == self.ref_job_uuid
 
     def test_create_invalid_job(self):
         ref_data = json.dumps({'ref_url': self.ref_job_url, 'status': 'INVALIDFAKE'})
@@ -222,14 +229,33 @@
         assert data['id'] == self.ref_job_id
         assert data['status'] == self.ref_status
 
+    def test_get_job_uuid(self):
+        self.test_create_job()
+
+        r = self.app.get('/api/v1.0/jobs/%s' % self.ref_job_uuid)
+
+        data = json.loads(r.data)
+
+        assert r.status_code == 200
+        assert data['id'] == self.ref_job_id
+        assert data['status'] == self.ref_status
+
     def test_get_invalid_job(self):
         r = self.app.get('/api/v1.0/jobs/%d' % self.ref_job_id)
 
         data = json.loads(r.data)
 
         assert r.status_code == 404
         assert data['message'] == "Job not found"
 
+    def test_get_invalid_job_uuid(self):
+        r = self.app.get('/api/v1.0/jobs/%s' % self.ref_job_uuid)
+
+        data = json.loads(r.data)
+
+        assert r.status_code == 404
+        assert data['message'] == "Job not found"
+
     def test_get_jobs(self):
         self.test_create_job()
 

